Mit Backend-as-a-Service (BaaS) können sich Entwickler auf das Frontend ihrer Anwendungen konzentrieren und Backend-Dienste nutzen, ohne sie erstellen oder warten zu müssen. BaaS und Serverless Computing haben einige Gemeinsamkeiten und viele Provider bieten beides an, aber die beiden Modelle weisen auch einige Unterschiede auf.
Nach Lektüre dieses Artikels können Sie Folgendes:
Link zum Artikel kopieren
Backend-as-a-Service (BaaS) ist ein Cloud-Service-Modell, bei dem Entwickler alle Hintergrundaspekte einer Web- oder Mobilanwendung auslagern, so dass sie nur das Frontend schreiben und warten müssen. BaaS-Anbieter bieten vorab geschriebene Software für Aktivitäten auf Servern an, z. B. Benutzerauthentifizierung, Datenbankverwaltung, Remote Updates und Push-Benachrichtigungen (für mobile Apps) sowie Cloud-Storage und -Hosting.
Stellen Sie sich die Anwendungsentwicklung ohne BaaS so vor, wie einen Filmdreh. Der Regisseur ist verantwortlich für die Leitung der Kamerateams, die Beleuchtung, den Bühnenbau, die Garderobe, das Castings und den Produktionsplan sowie für die Regie der Szenen, die im Film erscheinen. Stellen Sie sich nun vor, es gäbe einen Dienst, der sich um alle Aktivitäten hinter den Kulissen kümmert, so dass der Regisseur nur Regie führen und die Szene drehen muss. Das ist die Idee hinter BaaS: Der Anbieter kümmert sich um die „Beleuchtung“ und die „Kamera“ (oder die serverseitigen* Funktionen), damit sich der Regisseur (der Entwickler) nur auf die „Action“ konzentrieren kann, nämlich das, was der Endbenutzer sieht und erlebt.
Mit BaaS können sich Entwickler auf das Schreiben des Frontend-Anwendungscodes konzentrieren. Über APIs (mit denen ein Programm Anfragen an andere Programme stellen kann) und SDKs (Kits zum Erstellen von Software), die vom BaaS-Anbieter angeboten werden, können alle benötigten Backend-Funktionen integriert werden, ohne das Backend selber schreiben zu müssen. Sie müssen auch keine Server, virtuellen Maschinen oder Container warten, um die Anwendung am Laufen zu halten. Dadurch können sie Mobil- und Webanwendungen (einschließlich Single-Page-Anwendungen) schneller erstellen und lancieren.
*Serverseitig bezieht sich auf alles, was im Client-Server-Modell auf einem Server und nicht dem Client gehostet oder ausgeführt wird.
Mobile-Backend-as-a-Service (MBaaS) ist BaaS, das speziell zum Erstellen von Mobilapps vorgesehen ist. Auch wenn einige Quellen BaaS und MBaaS als grundsätzlich austauschbare Begriffe betrachten, müssen BaaS-Dienste nicht unbedingt zum Erstellen mobiler Anwendungen verwendet werden.
BaaS-Provider bieten eine Reihe serverseitiger Funktionen. Zum Beispiel:
Google Firebase und Microsoft Azure sind BaaS- und MBaaS-Anbieter.
Es gibt gewisse Überschneidungen zwischen BaaS und Serverless Computing, da der Entwickler bei beiden nur seinen Anwendungscode schreibt und nicht an das Backend denken muss. Darüber hinaus bieten viele BaaS-Anbieter auch Dienste für Serverless Computing an. Es gibt jedoch erhebliche operative Unterschiede zwischen Anwendungen, die mit BaaS erstellt wurden, und einer echten Serverless-Architektur.
Die Backends von Serverless-Anwendungen sind in Funktionen unterteilt, die jeweils auf Ereignisse reagieren und nur eine Aktion ausführen (siehe Was ist FaaS?). Die serverseitigen Funktionen von BaaS werden so aufgebaut, wie es der Provider wünscht, und Entwickler müssen sich nur mit Schreiben des Frontends der Anwendung beschäftigen.
Serverless-Architekturen sind ereignisgesteuert, d.h. sie werden als Reaktion auf Ereignisse ausgeführt. Jede Funktion wird nur ausgeführt, wenn sie durch ein bestimmtes Ereignis ausgelöst wird, ansonsten nicht. Mit BaaS erstellte Anwendungen sind normalerweise nicht ereignisgesteuert, was bedeutet, dass sie mehr Serverressourcen benötigen.
Serverless-Funktionen können von überall auf jedem Computer ausgeführt werden, solange sie noch mit dem Rest der Anwendung kommunizieren. Dies ermöglicht es, Edge-Computing in die Architektur der Anwendung zu integrieren, indem Code an der Edge des Netzwerks ausgeführt wird. BaaS ist nicht unbedingt so eingerichtet, dass Code von überall und zu jeder Zeit ausgeführt werden kann (obwohl dies je nach Provider möglich sein kann).
Skalierbarkeit ist eines der größten Unterscheidungsmerkmale zwischen Serverless und anderen Architekturen. Bei Serverless Computing skaliert die Anwendung mit zunehmender Nutzung automatisch. Die Infrastruktur des Cloud-Anbieters startet bei Bedarf kurzlebige Instanzen der Funktionen. BaaS-Anwendungen werden nicht auf diese Weise skaliert, es sei denn, der BaaS-Anbieter bietet auch Serverless Computing an und der Entwickler baut dies in seine Anwendung ein.
PaaS bietet Entwicklern über die Cloud eine Plattform zum Erstellen ihrer Anwendungen. Wie bei Serverless Computing und BaaS muss der Entwickler bei Platform-as-a-Service (PaaS) das Anwendungs-Backend nicht erstellen oder managen. PaaS enthält jedoch keine vorgefertigte serverseitige Anwendungslogik wie Push-Benachrichtigungen und Benutzerauthentifizierung. PaaS bietet Entwicklern mehr Flexibilität, BaaS hingegen mehr Funktionalität.