fbpx
goodfirms LOGO Created with Sketch.







    Zalety stosowania wzorca BFF (Backend for Frontend) w praktyce

    18
    listopad
    2022
    Karol Dobrakowski
    5 minut czytania
    Udostępnij

    Backend (.NET) Developer poszukiwany!

    Zobacz ofertę pracy na Backend (.NET) Developera i aplikuj do naszej firmy już teraz! Pracuj gdzie chcesz i kiedy chcesz!

    Zobacz ofertę
     

    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.

    Jak możemy Ci pomóc?
    Porozmawiaj z nami!







      Łukasz Świtek
      Customer Success Manager
      Kliknij, aby podejrzeć
      Wiktor Sobczyk
      Co-Founder, Key Account Manager
      Kliknij, aby podejrzeć