Wiele opracowywanych współcześnie aplikacji powstaje pierw w wersji przeznaczonej dla przeglądarek internetowych. Wraz z rozwojem bazy użytkowników i wzrostem popularności pojawia się często potrzeba opracowania równie funkcjonalnej aplikacji mobilnej. Aktualizowanie i rozwijanie wieloplatformowej aplikacji w architekturze mikroserwisów nie należy do najłatwiejszych zadań, m.in. ze względu na zróżnicowane możliwości urządzeń przenośnych oraz zmieniające się nieustannie wymagania interfejsów przeglądarkowych i mobilnych. Problem ten można na wczesnym etapie częściowo rozwiązać poprzez dodanie dodatkowej logiki po stronie front-endu, która przetwarzać będzie strumieniowane za pośrednictwem API dane do odpowiedniego dla danego klienta formatu. Warto zwrócić uwagę, iż przy większej liczbie żądań wydłuży to zanadto czas ładowania ekranu. Strumieniowanie zbędnych i niepotrzebnych w danej sytuacji danych plasuje się również dosyć wysoko na liście potencjalnych luk w zabezpieczeniach. Z tych oraz wielu innych powodów opłaca się zaprojektować aplikacje na podstawie wzorca BFF. Czym jest wzorzec BFF i jaka jest jego rola w bezpieczeństwie współczesnych aplikacji internetowych? W jakich przypadkach warto wdrożyć BFF? Na wszystkie te pytania odpowiadamy w poniższym artykule, który podsumowywać będzie też najlepsze praktyki w BFF.
Jak BFF wpływa na bezpieczeństwo aplikacji?
Wzorzec BFF (ang. Backends For Frontends) pełni rolę dodatkowej warstwy translacyjnej pomiędzy backendem a frontendem. Z tego też powodu często mówi się, iż jest to po prostu backend dla frontendu. W większości aplikacji opartych na architekturze mikroserwisów dane przesyła się za pośrednictwem mniejszej lub większej liczby żądań, które generowane są w odpowiedzi na działania użytkownika aplikacji. Przykładowo odwiedzając stronę e-sklepu (lub otwierając dedykowaną aplikację) można od razu zobaczyć listę promowanych produktów czy zawartość koszyka zakupowego. W aplikacjach, które cechują się tym, iż wszystkie żądania obsługiwane są przez jedną bramę API, pojawić się może z tego powodu wiele kłopotów. Z perspektywy bezpieczeństwa szczególnie problematyczne jest to, iż przechwycony token uwierzytelniający pozwala niezwykle łatwo manipulować żądaniami skompromitowanego klienta (np. dodawać lub usuwać rzeczy z nieswojego koszyka zakupowego itp.). Problem ten nie występuje, jeśli uwierzytelnianie odbywa się po stronie serwera, a nie użytkownika. Aplikacje oparte na wzorcu BFF nie muszą korzystać z tokenów uwierzytelniających, gdyż da się tam zaimplementować nieco bezpieczniejsze uwierzytelnianie sesji (ang. Session Authentication). BFF, podobnie jak serwery proxy, wydłuża o jeden krok proces strumieniowania danych, ale wbrew pozorom wcale nie musi to obniżać efektywności działania aplikacji. Zamiast umieszczać skomplikowaną logikę po stronie front-endu zdecydowanie bardziej opłaca się przenieść ją do utrzymywanych po stronie serwera subdomen interfejsów BFF. To właśnie dzięki nim przeglądarki internetowe w odpowiedzi na swoje żądania nie są zasypywane niepotrzebnymi informacjami lub danymi. Za przykład posłużyć tu może choćby rozmiar i jakość obrazów, które w przypadku niewielkiego ekranu smartfona nie muszą być strumieniowane w większej liczbie i wyższej rozdzielczości (np. 4K, 8K, HDR itp.).
Dlaczego warto stosować wzorzec BFF w praktyce?
Zamiast dodawać ciężką do zaktualizowania i poprawienia logikę po stronie front-endu lepiej umieścić ją po stronie serwera. Dzięki BFF można przede wszystkim zoptymalizować efektywność działania i wczytywania względem zróżnicowanych wymagań poszczególnych platform. Warto zwrócić też uwagę, iż BFF rozwiązuje problem związany z rozbieżnością priorytetów backendowych i frontendowych zespołów IT. Wzorzec BFF przydaje się również wtedy, gdy trzeba uniknąć konieczności dostosowywania pojedynczych zapleczy dla większej liczby interfejsów. Wśród najczęściej wymienianych zalet wzorca BFF wyróżnić należy także:
- wyższy poziom bezpieczeństwa danych wraz z lepiej zamaskowaną strukturą API,
- możliwość przekucia błędów po stronie frontendu w poprawiające UX (ang. User Experience) komunikaty (np. powiadomienie o błędnie wprowadzonych danych itp.),
- prostotę utrzymywania, modyfikowania i aktualizowania interfejsów poszczególnych klientów.
Podsumowanie najlepszych praktyk w BFF
Implementowanie wzorca BFF nie ma zbyt wiele sensu, jeśli do interakcji z backendem ma być wykorzystywany zawsze tylko jeden interfejs lub większa liczba generujących takie same żądania interfejsów. BFF to dodatkowa warstwa translacyjna, dzięki której można uniknąć problemów związanych z koniecznością umieszczenia formatującej strumieniowane przez API dane logiki po stornie frontendu. Warto podkreślić też, iż dzięki BFF nie trzeba opracowywać osobnych interfejsów dla wieloplatformowych aplikacji mobilnych i webowych. Wzorzec BFF w praktyce ceniony jest zarówno przez backendowych programistów, którzy mogą się skupić na swoich odmiennych priorytetach, jak i też frontendowych developerów, którzy dzięki BFF są w stanie zoptymalizować efektywność działania aplikacji na wszystkich platformach.
Bezpłatna konsultacja
Powiedz nam czego potrzebujesz, a nasi eksperci Powiedzą Ci jak to zrobić, ile to kosztuje i na kiedy będzie gotowe.