fbpx
goodfirms LOGO Created with Sketch.








    Zalety stosowania wzorca BFF (Backend for Frontend) w praktyce

    18
    listopad
    2022
    5 minut czytania
    Udostępnij

    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.

    Wiktor Sobczyk

    Bezpłatna konsultacja

    Powiedz nam czego potrzebujesz, a nasi eksperci Powiedzą Ci jak to zrobić, ile to kosztuje i na kiedy będzie gotowe.

    Inne wpisy na blogu

    15
    kwiecień
    2020
    Pisząc aplikację, należy zwrócić uwagę, by ta nie tylko dobrze działała, ale też była odpowiednio zorganizowana. Przemyślana architektura aplikacji pomoże nam nie tylko w dużych przedsięwzięciach, ale również w tych mniejszych. Pozwoli to zaoszczędzić wiele wysiłku, czasu i pieniędzy. Często też zadecyduje o tym, czy projekt przetrwa, czy nie. Niełatwo jednak znaleźć odpowiedź na pytanie…
    tagi: #Design
    czytaj artykuł
    10
    luty
    2020
    Nasz świat jest pewnym rodzajem systemu. Musimy to zrozumieć, aby móc nim zarządzać. Wyobraź sobie, że podobnie jest z budowaniem aplikacji internetowej - powinieneś znać kontekst niezbędny do stworzenia systemu. Temat, który dziś poruszamy zajmuje honorowe miejsce w tworzeniu oprogramowania – to oczywiście architektura aplikacji internetowych. Artykuł ma na celu pomóc osobom nietechnicznym lepiej zrozumieć techniczną…
    tagi: #Technologia
    czytaj artykuł
    Jak możemy Ci pomóc?
    Porozmawiaj z nami!








      Kamil
      Head of Business Development
      Kliknij, aby podejrzeć