Die Umstellung auf eine Cloud-basierte Architektur bietet Skalierbarkeit, Sicherheit und verbesserte Zusammenarbeit. Erfahren Sie, was die wichtigsten Arten von Backend-Architekturen sind und wie sich SaaS, FaaS, DaaS und andere voneinander unterscheiden.
A QUICK SUMMARY – FOR THE BUSY ONES
TABLE OF CONTENTS
Vielleicht haben Sie etwas über einige der folgenden Themen gehört: IaaS, PaaS, SaaS, DaaS, FaaS, DBaaS. Wenn Sie kein DevOps-Ingenieur sind, haben Sie wahrscheinlich von einigen dieser Konzepte gehört, aber nicht von allen. Ich denke, selbst wenn Sie einige davon verwendet haben, wissen Sie höchstwahrscheinlich nicht alles, was Sie sollten. Möglicherweise haben Sie sogar einige Teile verwendet, ohne den Namen des angewandten Konzepts zu kennen.
Schauen wir uns das genauer an, um besser zu verstehen, was sie wirklich sind.
<span class="colorbox1" fs-test-element="box1"><p>Lernen wie man eine effektive Cloud-Migrationsstrategie vorbereitet um all diese Vorteile zu nutzen.</p></span>
Es ist wichtig zu beachten, dass die Umstellung auf die Cloud ein schwieriger und ressourcenintensiver Prozess ist. Daher ist es wichtig, die Anwendung im Voraus entsprechend vorzubereiten. Der Prozess, das Produkt für die Umstellung vorzubereiten, kann Folgendes beinhalten Umgang mit technischen Schulden, das früher zur Seite gelegt wurde.
Aber lassen Sie uns zunächst über die Cloud im Kontext von Webanwendungen sprechen.
Monolith. Das gesamte Backend wird an einem Ort bereitgestellt, daher ist es sehr umfangreich und für große Apps schwer zu skalieren.
Mikrodienste. Das Backend ist in viele Microservices unterteilt (das hängt hauptsächlich von der Größe der App ab, aber normalerweise sind es 10 bis 80), die auf verschiedenen physischen Servern bereitgestellt werden können. Jeder Microservice sollte eine Geschäftsfunktion widerspiegeln, z. B. Authentifizierung, Zahlungen, Auktionen, E-Mails oder Inventar.
<span class="colorbox1" fs-test-element="box1"><p>Sind Microservices immer besser als Monolith? Glaube dem Hype nicht! Erkunden Sie das Thema in Die Fallstudie Monolith im Vergleich zu Microservices</p></span>.
Funktionen. Im Gegensatz zu Monolith und Microservices sind sie keine Daemons (die ständig laufen), sondern werden nur innerhalb von maximal wenigen Sekunden ausgeführt, wenn es nötig ist; ein Beispiel ist AWS Lambda, geschrieben in es7:
Es ist ein allgemeines Akronym, das alle... aaS-Lösungen bedeutet.
Datenbank als Service — es ist eine Plattform, die hostet unsere Datenbank und bietet Backups, Clustering und Hochverfügbarkeit. Die beliebtesten DBaaS sind Amazon Aurora, Amazon DynamicDB, mLab, IBM Cloudant und MongoDB Atlas.
Infrastructure as a Service — das ist die niedrigste Stufe aller XaaS. Es bietet uns eine große Leistung, erfordert aber viel Konfiguration. IaaS bietet eine virtuelle Maschine, die wir warten müssen. Der Unterschied zwischen IaaS und einem physischen Serverraum ist Wir müssen keine physischen Computer kaufen und wir können Server in verschiedenen Teilen der Welt haben. Im Vergleich zu anderen XaaS ist IaaS jedoch schwieriger zu verwalten und erfordert eine gute DevOps Ingenieur, der die virtuellen Maschinen so konfiguriert, dass sie effizient und sicher arbeiten.
Platform as a Service ist ein einfache Möglichkeit, eine App bereitzustellen in einer bestimmten Technologie (z. B. Node.js, Ruby, PHP, Python, Java, .NET - es wird also oft verwendet von .NET-Entwicklungsunternehmen). Die beliebtesten Plattformen sind Heroku und Google App Engine.
Im Allgemeinen Sie müssen CI nicht konfigurieren (kontinuierliche Integration). Drücken Sie einfach einen Commit, es erkennt, dass sich die App in Node.js befindet, und es werden npm install (Sie können zusätzliche Befehle im Postinstall-Skript hinzufügen, das von NPM nach der Installation der Abhängigkeiten ausgeführt wird) und npm start ausgeführt. Wenn sich die App in Ruby befindet, wird die Paketinstallation und ähnliches für andere Umgebungen ausgeführt.
Der Hauptnachteil ist, dass es nicht zu flexibel ist, weil es benutzerdefinierte Systemabhängigkeiten können nicht installiert werden (z. B. von apt-get) und du kannst verwenden Sie nur eine der verfügbaren Technologien. Wenn Sie also Ihre eigene Programmiersprache erstellen, die auf keiner verfügbaren Plattform läuft (z. B. in Node.js können Sie TypeScript, CoffeeScript, Elm... neben JavaScript verwenden oder in Java Virtual Machine können Sie neben Java auch Scala, JRuby, Jython, Kotlin, Groovy... verwenden), aber direkt in den Bytecode kompiliert wird, können Sie PaaS nicht verwenden.
Ein weiterer Nachteil ist der Daten sind nicht sicher. Wenn Sie beispielsweise Heroku als Paas und MLab als DBaaS verwenden, hat nicht nur MLab Zugriff auf Ihre Daten, sondern auch Heroku, da Sie nie wissen, welcher Code tatsächlich auf dem Server ausgeführt wird. Vielleicht anders als dein Code, weil sie ihre eigenen Middlewares hinzufügen, um etwas zu protokollieren.
Software as a Service bietet sofort einsatzbereite Software wie NPM//GEM-Bibliotheken, aber es erfordert keine Bereitstellung/Serverwartung von uns.
Ein einfaches Beispiel ist eine Mailing-App wie SparkPost oder SendGrid. Alles, was wir tun müssen, ist eine HTTP-Anfrage mit der Absenderadresse, Empfängeradresse, E-Mail-Betreff, E-Mail-Inhalt usw. zu senden. Andererseits müssten wir ohne diese Art von Tool einen SMTP-Server einrichten und ihn skalieren, wenn die Anzahl der E-Mails wächst.
Andere Beispiele sind: Google Apps (z. B. Google Drive), DropBox und Slack — diese Apps können von einem menschlichen Nutzer verwendet werden, haben aber tolle Integrationsmöglichkeiten ebenso. Neben den bereits existierenden SaaS bieten einige Unternehmen (z. B. SAP) an, auf Abruf neue SaaS zu schreiben.
Data as a Service ähnelt SaaS und kann sogar als Teilmenge von SaaS betrachtet werden. Genauer gesagt ist es ein (normalerweise HTTP) API, die einige Daten zurückgibt z. B. Wechselkurse, Sportergebnisse oder Wettervorhersagen.
Was ist das größte DaaS? Wahrscheinlich Facebook, das viele Daten sammelt und sie für Facebook-Apps bereitstellt. Andere beliebte DAAs sind Google Maps, Google Translate API oder AccuWeather.
Eine Liste nützlicher DaaS ist verfügbar hier.
Function as a Service ist noch einfacher als PaaS. Wie der Name schon sagt, basiert es auf den Funktionen, die durch ein bestimmtes Ereignis ausgelöst werden können, es ist also ein ereignisbasiert Architektur. Das Maß an Einfachheit ist so hoch, dass es als bezeichnet wird serverlose Architektur. Der Entwickler schreibt einfach eine Funktion und muss nicht über Themen wie Bereitstellung, Serverressourcen, Skalierbarkeit nachdenken... Das liegt daran, dass FaaS automatisch skalierbar. Daher basiert die Abrechnung auf dem tatsächlichen Verbrauch, nicht auf dem angegebenen Ressourcenbedarf.
Das bekannteste Beispiel ist AWS Lambda, aber es gibt auch andere wie Google Cloud Functions, Microsoft Azure Functions, Iron.io und WebTask.io.
Einer der größten Nachteile von FaaS sind unterstützte Technologien. Es gibt sogar weniger verfügbare Technologien als bei PaaS. Genauer gesagt (Stand 2017) unterstützt AWS Lambda .NET, Java, Node.js und Python. Microsoft Azure Functions unterstützt .NET, Java, Node.js und PHP, wohingegen Google Functions nur Node.js unterstützt. Wie Sie also feststellen können, unterstützt keines der beliebtesten FaaS Ruby im Gegensatz zu PaaS (z. B. Heroku).
Teilen wir die Funktionen nach den Funktionen von Microsoft Azure Functions auf:
Wie Sie sehen, können wir mit FaaS implementiere einen beliebigen Algorithmus (Turing-Vollständigkeit) Da wir eine HTTP-Anfrage bearbeiten können, können wir eine weitere HTTP-Anfrage senden und außerdem Zeit- und Warteschlangenereignisse verarbeiten.
Die einzigen Einschränkungen betreffen die Unterstützung bestimmter Technologien, z. B. eines bestimmten FaaS-Anbieters. unterstützt das MQTT-Protokoll nicht Es erfordert also die Verwendung einer Anwendung, die MQTT in HTTP umwandelt, ein anderes von FaaS unterstütztes Format, oder wir benötigen einen Endpunktteil des Systems, der mit dem Menschen (Web-App, mobile App oder Desktop-App) oder der physischen Umgebung (ein Roboter, der die Wetterbedingungen überprüft, ein Drucker, eine Glühbirne...) interagiert — das alles kann in der FaaS-Architektur eingebaut werden, erfordert aber einige Adapter außerhalb der FaaS-Welt.
Funktionen können sein kombiniert mit Microservices, damit wir FaaS mit PaaS verbinden können, aber es ist auch möglich, das zu erstellen gesamtes Backend auf FaaS (mit einigen Einschränkungen für die auf der Backend-Seite verwendeten Technologien).
Lassen Sie uns jedoch einen weiteren Nachteil besprechen — wir schreiben einen Code, der auf einer bestimmten FaaS (z. B. Microsoft Azure Functions) läuft, sodass für den Wechsel zu einem anderen FaaS (z. B. Google Functions) möglicherweise sogar die Hälfte des als FaaS-Funktionen geschriebenen Codes neu geschrieben werden muss. Andererseits sollte der Wechsel von einem PaaS zu einem anderen relativ einfach sein.
Es gibt noch mehr XaaS, als Sie sich vorstellen können:
Wie Sie sehen, können viele der XaaS sogar dasselbe Akronym haben und eines kann eine Teilmenge eines anderen sein. Es ist eine schwierige Frage, welches XaaS in einem bestimmten Projekt und einer bestimmten Situation verwendet werden sollte. Ich nehme an, gleichzeitig könnten verschiedene DevOps-Ingenieure ganz unterschiedliche Lösungen wählen. Unser bevorzugter Ansatz ist die Erstellung einer Microservice-orientierten Architektur in PaaS, da sie Flexibilität mit Einfachheit kombiniert.
Natürlich sollten wir uns das Leben erleichtern, indem wir einige externe SaaS wie SparkPost- oder Slack-Integrationen und einige externe DaaS verwenden, um Daten wie die aktuellen Wechselkurse einfach abzurufen. Darüber hinaus können wir einen Teil unseres Systems (5% bis 20%, je nach Bedarf) auf FaaS stützen — einfache zustandslose Funktionen, die mehrere Dienste verbinden, sodass die Verwendung von FaaS einfach Zeit bei der Bereitstellung und Überwachung spart.
Wir hoffen, dass dieser Artikel Ihnen hilft, das richtige XaaS (oder viele davon gleichzeitig) in Ihrem Projekt auszuwählen.
Our promise
Every year, Brainhub helps 750,000+ founders, leaders and software engineers make smart tech decisions. We earn that trust by openly sharing our insights based on practical software engineering experience.
Authors
Read next
Popular this month