In den letzten Wochen
haben wir viel Zeit damit verbracht,
einen vollwertigen REST-API-Server zu erstellen und bereitzustellen,
indem wir Technologien wie das Express Framework und die INNOSQL-Datenbank wie MongoDB beherrschen.
Dieser Ansatz gibt Ihnen die volle Kontrolle darüber, wie Sie Ihren Back-End-Server erstellen und bereitstellen.
In vielen Situationen
haben wir jedoch möglicherweise sehr wenig Zeit, um einen Server zu konfigurieren und ihn dann schnell bereitzustellen.
So zum Beispiel, Sie sind ein Startup, das den Markt sehr, sehr schnell erreichen muss,
dann möchten Sie vielleicht schnell den Back-End-Server zusammen mit
einer Front-End-Anwendung aufbauen und den Markt sehr, sehr schnell erreichen.
Können wir unter diesen Umständen
den Back-End-Support in Form
eines Dienstes bereitstellen, der schnell konfiguriert und bereitgestellt werden kann?
Genau das werden wir in diesem Vortrag und den
nachfolgenden Übungen in dieser Lektion und in der folgenden Lektion ausführlicher besprechen.
Wie wir in diesem Kurs gelernt haben,
haben wir die Technologien beherrscht, die
Frameworks, die für uns notwendig sind, um einen vollwertigen Back-End-REST-API-Server zu erstellen.
Nun, wie wir in den letzten Wochen gelernt haben,
erfordert dieser Ansatz, dass wir unseren eigenen Server einrichten und dann den Server konfigurieren,
wir müssen unsere Back-End-Datenbank einrichten und dann
die verschiedenen Aspekte der Back-End-Datenbank konfigurieren.
Wir müssen die REST-API und verschiedene Routen für unsere REST-API entwickeln,
und wir müssen möglicherweise
zusätzliche Dienste wie die Bereitstellung von Push-Benachrichtigungen für den Benutzer,
Benutzerverwaltung, Social-Networking-Dienste usw. einbauen.
All dies bedeutet also, dass die Entwicklung eines vollwertigen Bank-Endes viel Aufwand erfordert.
Können wir nun diesen gesamten Ansatz in einen Dienst packen, der
schnell konfiguriert und bereitgestellt werden kann, ohne
so viel Zeit mit der Konfiguration unseres Servers aufwenden zu müssen?
Jetzt schauen Sie mich seltsam an und sagen:
„Sie haben die letzten drei Wochen damit verbracht, uns in
all diesen Technologien zu schulen, und jetzt sagen Sie, dass es sehr einfach ist,
einen Server mit einem Back-End als
Service zu konfigurieren, um all diese verschiedenen Funktionen aus unserem Back-End bereitzustellen.“
Nun, jeder Ansatz hat seine eigenen Vor- und Nachteile.
Lassen Sie uns ein wenig mehr über Back-End as a Service lernen, bevor wir entscheiden,
ob der vollwertige Ansatz für
die Serverentwicklung, den wir bisher gelernt haben, der richtige Weg für uns ist,
oder das schnelle Konfigurieren und Bereitstellen von Back-End
as a Service ist der Ansatz, der unsere Anforderungen erfüllt.
Also, was genau ist Back-End als Service?
Das Back-End ist ein Service, der als Modell für die Bereitstellung von
mobilen und Web-Entwicklern entwickelt wird, um ihre Anwendungen mit der Back-End-Cloud zu verknüpfen. In der
Regel wird das Back-End als Dienst in der Cloud gehostet und dann stellen Sie
das Back-End über
eine gut gestaltete Schnittstelle wie die REST-API-Endpunkte dem Front-End zur Verfügung.
Ein vollständig verpacktes Back-End, wie wir in dieser Lektion sehen,
ist ein relativ neues Phänomen und hat die Webwelt im Sturm erobert.
Wir werden uns einige Beispiele genauer ansehen.
Dies stellt nun eine Brücke zwischen dem Front-End und dem Back-End-Datenspeicher und
dem Back-End-Datenbankmanagement über eine einheitliche API bereit.
Und auch viele dieser Back-End als Service Provider stellen
ihr eigenes Software-Development Kit
zur Verfügung, mit dem Sie schnell in die Front-End-Entwicklung einsteigen können.
Dieser Ansatz befreit die Entwickler natürlich davon, sich auf den
Aufbau eines Back-Ends zu konzentrieren und sich stattdessen auf ihre Front-End-Entwicklung
zu konzentrieren, oder versuchen, die Benutzererfahrung innerhalb
des Front-Ends zu entwerfen und bereitzustellen, sei es in Form
einer Winkelanwendung oder in der Form einer mobilen App.
Nun, wenn Sie mit Cloud Computing vertraut sind,
bin ich sicher, Sie haben Begriffe wie Infrastructure as a Service,
Platform as a Service und Software as a Service gehört.
Jetzt
baut das mobile Back-End-as-a-Service (BaaS) im Wesentlichen auf diesem Ansatz auf und richtet sich an mobile und Web-Entwickler
mit Zugriff auf Back-End-Cloud-Services und eine viel mehr Paketumgebung.
Auf diese Weise können Sie mit dem Back-End-as-a-Service
das Cloud-Back-End zur Unterstützung Ihrer Front-End-Anwendung nutzen.
Natürlich ist die nächste Frage, die sich in Ihrem Kopf stellt, was
das Back-End als Service für Sie normalerweise bietet?
Ein typisches Back-End-as-a-Service bietet Ihnen
Push-Benachrichtigungen, die automatisch in die Back-End-Cloud-Unterstützung integriert sind.
Es bietet Ihnen Dateispeicherung und Freigabe von Dateien.
Es bietet Ihnen die Integration sozialer Netzwerke.
Viele dieser Back-End-Dienstleister stellen Ihnen die
Integration sozialer Netzwerke automatisch zur Verfügung.
Es bietet Ihnen Messaging- und Chat-Funktionen, die Sie
innerhalb Ihres Front-Ends nutzen können, um eine bessere Benutzererfahrung zu bieten.
Es bietet Ihnen auch die Benutzerverwaltung.
Wie wir gesehen haben, als wir unsere Benutzerverwaltungs- und
Authentifizierungsunterstützung innerhalb unseres Express plus MongoDB-Servers aufgebaut
haben, mussten wir den vollwertigen Authentifizierungsserver
einbauen, wir mussten die Back-End-Dienste einbauen,
wir mussten die Token-Verwaltung sowohl auf dem Back-End als auch auf dem Front-End und Authentifizierung des Benutzers und so weiter.
All diese können mit dem
Software Development Kit, das mit dem Back-End als Service geliefert wird, verpackt und als Einheit geliefert werden.
Und auch Back-End, da es sich um einen Paketdienst handelt,
haben sie auch viele Verwendungsanalyse-Tools integriert, die es Ihnen ermöglichen,
einen schnellen Überblick darüber zu erhalten, wie die Benutzer mit Ihrem Back-End interagieren.
Diese Verwendungswerkzeuge geben Ihnen also viele
Einblicke in das Benutzerverhalten innerhalb Ihres Back-Ends.
Viele dieser Back-End-Dienste bieten Ihnen außerdem eine Methode zum
Erstellen und Bereitstellen Ihrer eigenen benutzerdefinierten Logik
innerhalb des Back-Ends, um Ihre spezifischen Anforderungen zu erfüllen.
Natürlich bieten sie Ihnen das Framework, in dem Sie
Ihre benutzerdefinierte Geschäftslogik entwerfen können, um Ihre spezifischen Anforderungen zu erfüllen.
Zusammenfassend stellt ein typisches Back-End eine Datenspeicher-API für
Cloud-Speicher bereit, in der Sie Dateien hochladen und herunterladen und auch auf diese Dateien zugreifen können,
eine Art Binärspeicher für Ihre Daten,
vielleicht Gerätesynchronisierung und Caching-Funktionen.
Wenn Sie beispielsweise Ihr Front-End erstellen,
werden die Back-End-Daten automatisch im Front-End zwischengespeichert.
Sie können auch den Offline-Betrieb Ihres Front-Ends unterstützen.
Selbst wenn Ihr Benutzergerät vom Netzwerk getrennt ist,
stellen Sie dem
Benutzer mit Offline-Funktionen immer noch genügend Informationen zur Verfügung.
So sowohl Online- als auch Offline-Workflow, damit Sie dem Benutzer sogar erlauben können,
ihre Aktivitäten offline auszuführen und später mit dem Back-End zu synchronisieren.
Integration von Drittanbietern.
Viele dieser Back-End-as-a-Service-Provider
erlauben es daher, Plugins zu entwickeln, die dann
zusammen mit dem Back-End genutzt werden können,
um Erweiterungen für die Dienste bereitzustellen, die das Back-End bereits für Sie bereitstellt.
Sichere Konnektivität zwischen der Front-End-Anwendung und dem Back-End
sowie mehrfach automatisch
die REST-API-Endpunkte für Sie basierend auf den Daten, die Sie im Back-End speichern.
Wir werden Beispiele dafür vor allem mit
LoopBack sehen, wie wir später in den Übungen sehen werden.
Und wie ich bereits erwähnt habe,
stellen viele dieser Back-End als Service Provider
ihre eigenen Software-Entwicklungskits zur Verfügung, damit
Sie problemlos mit Ihrer Front-End-Entwicklung beginnen können.
Das SDK enthält den gesamten Code, der für
Ihre Front-End-Anwendung erforderlich ist, um automatisch mit Ihrer Back-End-Anwendung zu interagieren.
So kann das SDK beispielsweise bereits
Dienste enthalten, die Ihre Winkelanwendung nutzen kann, um
automatisch mit dem Back-End zu kommunizieren, sodass Sie möglicherweise nur
die Komponenten und die Front-End-Vorlagen für Ihre Anwendung implementieren können.
Die gesamte Interaktion mit dem Back-End wird automatisch
vom Paket-SDK verwaltet, das Ihnen zur Verfügung gestellt wird.
Sie werden Beispiele dafür sehen, sowohl mit
Firebase, die wir ein wenig später betrachten werden, als
auch mit LoopBack, das wir in der nächsten Lektion besprechen werden.
Natürlich hat jeder Ansatz zwei Seiten zur Münze.
Lassen Sie uns also einige der Vor- und Nachteile von Back-End as a Service untersuchen.
Ein Vorteil ist natürlich, dass
es Ihnen mit dem Backend vorgefertigte bewährte Komponenten zur Verfügung stellt.
Also, das Back-End ist für Sie verpackt,
so dass der Back-End-Dienstanbieter sichergestellt hätte, dass
das gesamte Back-End gut getestet ist und den Service, wie es den Benutzern versprochen wird,
an die Front-End-Entwickler liefern würde.
Sie müssen also keine zusätzliche Zeit damit verbringen,
sich Gedanken über das Testen zu machen und sicherzustellen, dass Ihr Back-End korrekt funktioniert oder nicht.
Anders als wenn Sie Ihr eigenes benutzerdefiniertes
Back-End mit den Frameworks erstellen, die wir zuvor gesehen haben,
sind Sie in vollem Umfang dafür verantwortlich, dass Ihr Back-End korrekt funktioniert.
Der zweite Vorteil ist natürlich
die gleichzeitige Reduzierung der serverseitigen Anstrengungen, die Sie einbringen müssen.
Da also die Serverseite als Paketeinheit kommt,
können Sie sich primär auf die Front-End-Entwicklung konzentrieren und
die Serverseite für das Backend als Dienstleister belassen.
Und Sie nutzen einfach die Flexibilität, die sie
Ihnen bei der Entwicklung des Front-Ends bieten.
Und das typische Backend als Service
Provider kümmert sich um die Integration aktueller technologischer Entwicklungen
in ihr Backend und stellt
aktualisierte Versionen des Backends bereit, sobald die neueren Technologien verfügbar sind.
Auf diese Weise sind Sie als Front-End-Entwickler
völlig davon befreit, sich Gedanken darüber zu machen, wie sich das Backend entwickeln muss.
Das wird automatisch vom BaaS-Anbieter für Sie erledigt.
Natürlich kommt alles mit der Kehrseite der Karte.
Lassen Sie uns also untersuchen, was einige der Nachteile des Backend als Service sind.
In erster Linie funktionieren die meisten Backends als Blackbox.
Sie wissen nicht genau, wie das Backend implementiert ist.
Wenn Sie
zum Beispiel ein Open-Source-Backend wie LoopBack verwenden, haben Sie Zugriff auf diesen gesamten Backend-Code,
aber warum sollten Sie Zeit damit verbringen, die Details des Back-Ends zu erkunden,
wenn Ihnen garantiert wurde, dass das Backend
gut gebaut und für Sie gut getestet wurde.
So können Sie es einfach wie eine Blackbox so lange behandeln.
Da Sie zuversichtlich sind, dass diese Blackbox
die Dienste liefern wird, die Sie erwarten, dass sie liefern wird,
können Sie einfach das Backend verwenden,
ohne sich Gedanken darüber machen zu müssen, wie es tatsächlich implementiert wird.
Der zweite Aspekt besteht darin, dass,
wenn Sie sich für ein Backend als Dienstanbieter entscheiden,
das Problem der Vendor Lock-In besteht.
Sobald Sie sich also für einen der BaaS-Anbieter entschieden
haben, werden Sie in die Umgebung und die Art und Weise, wie sie ihre Daten speichern, gesperrt.
Viele Mal, wenn Sie eines dieser Backend als Service-Provider übernehmen, werden
alle Ihre Daten in ihren Dienst gesperrt und Sie müssen möglicherweise
einen übermäßigen Aufwand durchlaufen, um
die Daten, die Sie bereits im Backend gespeichert haben, abzurufen,
sollten Sie sich entscheiden, von einem Backend als Dienstleister zu einem anderen. Die
Bereitstellung Ihres Dienstes mit einem Backend ist also eine sehr einfache Aufgabe,
aber wenn Sie sich entscheiden, Ihren BaaS-Provider
zu wechseln, wird das ein harter Kampf für Sie sein.
Das ist also etwas, das Sie sich voll bewusst sein sollten, bevor Sie sich
dazu verpflichten, eines der Back-Ends als Dienstleister zu verwenden.
Dieses Problem wird kein Problem, wenn Sie
Ihre vollwertige Backend-Entwicklung selbst durchführen.
Wieder gewinnen Sie einige und Sie verlieren einige.
Also nehmen wir das immer mit ihrem ganzen Bild im Kopf.
Der Verlust an Flexibilität, den Sie
durch die Verwendung eines der Back-End-Dienstleister mit sich bringen, kann etwas sein,
mit dem Sie leben wollen, weil Sie die
Backend-Entwicklungszeit reduziert haben und Sie sich
mehr darauf konzentrieren können, Ihr Produkt an die Markt.
Wenn Sie also dem BaaS-Provider vertrauen,
können Sie sich einfach mit Ihrem ausgewählten BaaS-Provider befassen und sich dann
nicht zu sehr um den Verlust an Flexibilität kümmern, der sich daraus ergibt.
Wieder, wie gesagt, hat nicht alles nur Vorteile,
es gibt immer Vor- und Nachteile für jeden Ansatz, den Sie
für die Entwicklung und Bereitstellung Ihres Back-Ends wählen.
BaaS ist nur eine Alternative, die der Ansatz sein könnte
, den Sie für Ihre spezifischen Bedürfnisse wählen.
Und schließlich
kommt natürlich nicht jeder BaaS ohne eigene zusätzliche Schulungsanforderungen.
Wenn Sie einen der BaaS-Anbieter verwenden müssen,
müssen Sie anstelle der Blackbox die API lernen,
Sie müssen lernen, wie Sie sie konfigurieren,
Sie müssen lernen, wie Sie Teile davon anpassen, sollten Sie dies tun, und so weiter.
Also der Schulungsaufwand, den Sie damit verbracht haben,
spezifische oder generische Frameworks wie Express und Datenbanken wie MongoDB zu
lernen, stattdessen werden Sie Zeit damit verbringen,
ihre Besonderheiten ihres Back-Ends als Dienst zu lernen, den Sie verwenden.
Es ist also eine Frage, wo Sie Ihre Zeit verbringen möchten.
Die zusätzliche Schulung wird immer involviert sein,
mit der Ausnahme, dass Sie mit einem BaaS-Anbieter
schneller loslegen können, als ein eigenes benutzerdefiniertes Backend zu erstellen.
Der BaaS-Markt ist voll von einer Reihe von Auswahlmöglichkeiten.
Und in der Tat nehmen diese Entscheidungen von Tag zu Tag zu.
Wenn Sie nun in den BaaS-Markt gehen,
können Sie kommerzielle Anbieter sehen.
Hier ist eine kleine Liste von kommerziellen Anbietern.
Auch hier gibt es mehr und mehr, die am Tag zu dieser Liste hinzugefügt werden,
und ich habe gerade nur eine kleine Teilmenge von ihnen aufgelistet.
Natürlich, wenn Ihr Lieblings-BaaS-Anbieter nicht in dieser Liste ist, geben Sie mir keine Schuld,
vielleicht bin ich einfach nicht bewusst von ihnen oder vielleicht sind sie einfach
zu neu auf dem Markt und so bin ich nicht auf sie gestoßen.
Aber hier ist eine Liste einiger kommerzieller Anbieter, die BaaS-Dienste für uns anbieten.
Insbesondere werde ich mich auf Firebase konzentrieren,
die von Google zur Verfügung gestellt wird.
In dieser Lektion erfahren Sie, wie Sie Firebase in den
folgenden Übungen in dieser Lektion ein wenig detailliert nutzen können.
Nun, wenn Sie mit einem Open-Source-Anbieter gehen möchten,
gibt es viele Open-Source-Alternativen, die für uns verfügbar sind,
natürlich werden Sie dort
diese Open-Source-Software erwerben und dann Ihr Serverende erstellen und bereitstellen.
Außer, dass es
als vorverpackte Entität kommt, die Sie schnell konfigurieren und im Backend bereitstellen können.
Wir betrachten LoopBack als eines der Beispiele für eine Open-Source-Software, die
sehr schnell für den Aufbau Ihres Back-Ends bereitgestellt werden kann.
Und wie gesagt, kommen immer mehr Entscheidungen auf den Markt, Tag für Tag.
Also, sollten Sie morgen den Markt erkunden, um neue BaaS-Anbieter zu finden?
Untersuchen Sie auf jeden Fall, was von ihnen zur Verfügung gestellt wird,
welche Art von Dienstleistungen sie anbieten.
Werden diese Dienste Ihren Anforderungen entsprechen und können Sie schnell
den Service nutzen, den sie anbieten, um schnell auf den Markt zu gelangen. Das
sind also Themen, die ich Ihnen innerhalb eines Tages zurücklassen werde.
Wie ich bereits sagte, sollten wir uns
alle möglichen Alternativen ansehen und dann unsere eigenen Entscheidungen selbständig treffen.
Aber wenn wir uns der Alternativen nicht bewusst sind, werden wir nicht in der Lage sein, fundierte Entscheidungen zu treffen.
Deshalb verbringe ich die letzten Lektionen dieses Kurses, um
einige Beispiele von Backend als Dienstleister zu erforschen.