Backend as a service (BaaS), czasem także mobile backend as a service (MBaaS), – usługa dostarczająca twórcom aplikacji internetowych i mobilnych narzędzia do łatwego budowania zaplecza (back-endu) dla aplikacji klienckich (front-endu); dostępne funkcje obejmują m.in. zarządzanie użytkownikami, powiadomienia push oraz integrację z serwisami społecznościowymi. Usługi te udostępnia się zwykle za pomocą zestawów SDK i API jako element chmury obliczeniowej. BaaS bywa opisywane jako model, w którym dostawca udostępnia gotowe elementy logiki serwerowej (m.in. uwierzytelnianie użytkowników, zarządzanie bazą danych, zdalne aktualizacje, powiadomienia push, przechowywanie danych i hosting) bez samodzielnego utrzymywania serwerów. Deweloper integruje je przez API i SDK, bez samodzielnego utrzymywania serwerów. Większość startupów BaaS powstała w 2011 roku lub później.

Charakterystyka Aplikacje internetowe i mobilne wymagają podobnego zestawu funkcji po stronie back-endu, m.in. usług powiadomień, integracji z serwisami społecznościowymi oraz przechowywania danych w chmurze. Każda z takich usług ma własne API, które trzeba osobno zintegrować w aplikacji, co bywa czasochłonne i skomplikowane. Dostawcy BaaS tworzą „most” pomiędzy front-endem aplikacji a różnymi usługami chmurowymi za pomocą ujednoliconego API i SDK.

Zapewnienie spójnego sposobu zarządzania danymi zaplecza oznacza, że deweloperzy nie muszą odtwarzać własnego back-endu dla każdej usługi, z której korzystają ich aplikacje, co może oszczędzać czas i pieniądze.

Chociaż BaaS bywa porównywane do innych modeli usług chmurowych (np. serverless, oprogramowanie jako usługa (SaaS), Infrastruktura jako usługa (IaaS) czy platforma jako usługa (PaaS)), wyróżnia się tym, że koncentruje się na potrzebach twórców aplikacji internetowych i mobilnych, dostarczając ujednolicony sposób łączenia aplikacji z usługami w chmurze. W zestawieniu z serverless różnica polega na tym, że architekturze serverless zaplecze bywa dzielone na funkcje uruchamiane zdarzeniowo, natomiast w BaaS sposób realizacji funkcji serwerowych zależy od dostawcy i nie musi mieć charakteru zdarzeniowego. BaaS bywa też porównywane z PaaS: PaaS dostarcza środowisko do budowy i uruchamiania aplikacji, ale zazwyczaj nie zapewnia gotowej logiki aplikacyjnej (np. powiadomień push czy uwierzytelniania), którą częściej oferują platformy BaaS.

Funkcje Dostawcy BaaS oferują różne zestawy funkcji i narzędzi back-endowych. Do najczęstszych należą:

Zarządzanie bazą danych. Większość rozwiązań BaaS zapewnia usługi zarządzania bazami SQL i/lub NoSQL dla aplikacji. Deweloperzy mogą przechowywać dane aplikacji bez samodzielnego wdrażania i administrowania bazami danych. BaaS zwykle udostępnia klienckie SDK oraz API (np. REST, GraphQL) dla front-endu. Przechowywanie plików. Dostawcy BaaS często oferują magazynowanie plików multimedialnych, danych przesyłanych przez użytkowników i innych danych binarnych. Aplikacje mogą przesyłać, pobierać i usuwać pliki przez udostępnione SDK i API. Uwierzytelnianie i autoryzacja. Część platform zapewnia funkcje, które pozwalają łatwiej zarządzać użytkownikami aplikacji. Obejmuje to m.in. rejestrację, logowanie, reset hasła, logowanie społecznościowe przez OAuth oraz zarządzanie grupami i uprawnieniami. Usługi powiadomień. Niektórzy dostawcy (np. Firebase czy AWS Amplify) udostępniają usługi wysyłania wiadomości e-mail i natywnych powiadomień push na platformach mobilnych. Jest to użyteczne dla aplikacji wymagających wysyłania komunikatów, alertów i przypomnień. Funkcje w chmurze. Niektóre platformy umożliwiają wdrażanie i uruchamianie funkcji serverless. Funkcje są zwykle bezstanowe i mogą być wyzwalane m.in. przez żądania HTTP, wywołania z SDK, zdarzenia w tle lub harmonogram. Różni dostawcy wspierają różne środowiska uruchomieniowe (np. JavaScript/TypeScript, Python, Java/Kotlin). Funkcje w chmurze poszerzają możliwości BaaS, pozwalając dopisywać własną logikę serwerową podobnie jak w tradycyjnych frameworkach back-endowych. Analityka użycia. Często dostępne są dane o wykorzystaniu aplikacji, co pozwala monitorować zachowania użytkowników i podejmować decyzje dotyczące m.in. marketingu i optymalizacji wydajności. Projektowanie UI. Niektórzy dostawcy (np. AWS Amplify i Backendless) oferują narzędzia wspomagające projektowanie interfejsu użytkownika aplikacji webowych i mobilnych. Rozwiązania tego typu nie są jednak typowe dla BaaS, ponieważ wykraczają poza zakres infrastruktury back-endowej. Czas rzeczywisty. Funkcje czasu rzeczywistego zapewniają natychmiastową synchronizację danych między klientami, co jest istotne np. w czatach i narzędziach współpracy; często wykorzystuje się technologie takie jak WebSocket. Dostawcy usług Dostawcy usług BaaS (backend-as-a-service) udostępniają gotowe komponenty backendowe jako usługę – m.in. bazy danych, uwierzytelnianie, przechowywanie plików czy powiadomienia – dostępne dla aplikacji klienckich przez SDK i API. W praktyce integracja backendu sprowadza się do użycia bibliotek klienckich dla typowych platform (np. aplikacje webowe, Android, iOS lub frameworki wieloplatformowe). Przykładowo, publikuje SDK m.in. dla Androida, iOS i aplikacji webowy, a także zestaw wtyczek dla Fluttera. Podobnie jest pozycjonowane jako zestaw usług backendowych (np. uwierzytelnianie, dane, pliki, powiadomienia) dla aplikacji webowych i natywnych (m.in. iOS/Android).

Typowy zakres usług oferowanych przez dostawców BaaS/MBaaS obejmuje m.in.: zarządzanie użytkownikami i sesjami, przechowywanie i zarządzanie danymi, powiadomienia push, mechanizmy bezpieczeństwa/uprawnień, analitykę oraz komponenty komunikacyjne (np. messaging/pub-sub).

BaaS hostowany w chmurze Najczęstszy model polega na tym, że platforma BaaS jest usługą zarządzaną (managed) – dostawca utrzymuje infrastrukturę i udostępnia funkcje backendowe przez konsolę WWW oraz API/SDK. Przykładami usług hostowanych w chmurze są m.in.:

– dokumentacja opisuje usługę jako opartą na zarządzanej infrastrukturze „powered by Google Cloud”. – usługa uruchamiana w ekosystemie Amazon Web Services; przykładowo komponent hostingu wdraża aplikację do globalnej sieci CDN AWS. (historycznie) Microsoft Azure Mobile Apps/Mobile Services – oferowały m.in. klienckie SDK dla platform mobilnych.

BaaS hostowany samodzielnie Wariant samodzielnie hostowany (self-hosted) polega na uruchomieniu platformy BaaS na własnej infrastrukturze (np. on-premises lub we własnej chmurze), co zwykle zwiększa kontrolę nad środowiskiem kosztem konieczności samodzielnego utrzymania i aktualizacji systemu. Przykładami rozwiązań, które dokumentują możliwość samodzielnego hostowania, są m.in.:

– projekt opisuje instalację i konfigurację instancji self-hosted (m.in. na bazie Dockera). Parse Server – oprogramowanie typu open source, możliwe do wdrożenia na dowolnej infrastrukturze obsługującej Node.js. – dokumentacja opisuje scenariusze self-hostingu (np. w celu spełnienia wymogów kontroli danych lub izolacji środowiska).

MBaaS MBaaS (mobile backend-as-a-service) bywa opisywane jako wariant BaaS ukierunkowany na aplikacje mobilne i typowe dla nich funkcje (np. powiadomienia push, zarządzanie użytkownikami, integracje). Część źródeł traktuje jednak pojęcia BaaS i MBaaS jako zbliżone lub stosuje je zamiennie, wskazując, że usługi BaaS mogą obsługiwać nie tylko aplikacje mobilne, ale też webowe i inne typy klientów.

Przypisy

Bibliografia

Linki zewnętrzne

What is Backend as a Service (BaaS)? A Beginner's Guide – freeCodeCamp (poradnik)

Kategoria:Chmura obliczeniowa Kategoria:Inżynieria oprogramowania Kategoria:Aplikacje internetowe Kategoria:Oprogramowanie