Wichtige Punkte
- Seit einigen Jahren wird uns versprochen, dass Serverless Computing eine neue Ära ohne ein bestimmtes Betriebssystem für die Ausführung von Anwendungen einläuten wird. Uns wurde gesagt, dass eine solche Struktur viele Skalierbarkeitsprobleme lösen würde. In der Tat ist alles anders.
- Während viele die Technologie ohne Server als neue Idee betrachten, lassen sich ihre Wurzeln bis ins Jahr 2006 zurückverfolgen, als Zimki PaaS und Google App Engine eingeführt wurden, die beide eine Architektur ohne Server verwenden.
- Es gibt vier Gründe, warum die Revolution ohne Server ins Stocken geraten ist, von eingeschränkter Unterstützung für Programmiersprachen bis hin zu Leistungsproblemen.
- Serverloses Computing ist nicht so nutzlos. Überhaupt nicht. Sie sollten jedoch nicht als direkter Ersatz für Server angesehen werden. Für einige Anwendungen können sie ein praktisches Werkzeug sein.
Der Server ist tot, es lebe der Server!
Dies ist der Schlachtruf der Adepten der serverlosen Revolution. Mit einem kurzen Blick auf die Branchenpresse der letzten Jahre lässt sich leicht schließen, dass das traditionelle Servermodell tot ist und dass wir in einigen Jahren alle serverlose Architekturen verwenden werden.
Wie jeder in der Branche weiß und wie wir auch in unserem Artikel über den Status von Serverless Computing betont haben , ist dies nicht der Fall. Trotz vieler Artikel über die Vorzüge der Serverless Revolution kam sie nie zustande . Tatsächlich deuten neuere Forschungen darauf hin, dass diese Revolution festgefahren sein könnte.
Einige der Versprechen für Modelle ohne Server wurden zweifellos erfüllt, aber nicht alle. Nicht jeder.
In diesem Artikel möchte ich die Gründe für diesen Zustand berücksichtigen. Warum die mangelnde Flexibilität serverloser Modelle immer noch ein Hindernis für ihre breitere Akzeptanz darstellt, obwohl sie unter bestimmten, genau definierten Umständen weiterhin nützlich sind.
Was das Serverless Computing befürwortet
Bevor wir uns mit den Themen Serverless Computing befassen, wollen wir uns ansehen, was sie zu bieten haben. Die Versprechen einer serverlosen Revolution waren zahlreich und - manchmal - sehr ehrgeizig.
Für diejenigen, die mit dem Begriff nicht vertraut sind, hier eine kurze Definition. Serverless Computing definiert eine Architektur, in der Anwendungen (oder Teile von Anwendungen) bei Bedarf in Laufzeitumgebungen ausgeführt werden, die normalerweise remote gehostet werden. Darüber hinaus können serverlose Systeme gehostet werden. In den letzten Jahren war der Aufbau ausfallsicherer Systeme ohne Server für Sysadmins und SaaS-Unternehmen ein Hauptanliegen, da diese Architektur (angeblich) mehrere wichtige Vorteile gegenüber dem "traditionellen" Client / Server-Modell bietet:
- , , . , .
- ( ). , , . VM, , .
- . , .
Kurz gesagt, serverlose Modelle bieten flexible, kostengünstige und skalierbare Lösungen. Es ist erstaunlich, dass wir uns diese Idee nicht früher ausgedacht haben.
Ist das wirklich eine neue Idee?
In der Tat ist die Idee nicht neu. Das Konzept, dass Benutzer nur für die Zeit bezahlen dürfen, in der der Code tatsächlich ausgeführt wird, gibt es seit seiner Einführung im Rahmen des Zimki PaaS im Jahr 2006, und ungefähr zur gleichen Zeit bot Google App Engine eine sehr ähnliche Lösung an.
Tatsächlich ist das, was wir jetzt als "serverloses" Modell bezeichnen, älter als viele der Technologien, die jetzt als "native Cloud" -Technologien bezeichnet werden und fast dasselbe bieten. Wie bereits erwähnt, sind serverlose Modelle im Wesentlichen nur eine Erweiterung des seit Jahrzehnten bestehenden SaaS-Geschäftsmodells.
Es ist auch erwähnenswert, dass das serverlose Modell keine FaaS-Architektur ist, obwohl eine Verbindung zwischen beiden besteht. FaaS ist im Wesentlichen ein rechenorientiertes Teil einer serverlosen Architektur, repräsentiert jedoch nicht das gesamte System.
Worum geht es also? Nun, da die Geschwindigkeit der Internetdurchdringung in Entwicklungsländern weiter sprunghaft ansteigt, wächst gleichzeitig die Nachfrage nach Computerressourcen. Beispielsweise verfügen viele Länder mit schnell wachsenden E-Commerce-Sektoren einfach nicht über die Computerinfrastruktur für Anwendungen auf diesen Plattformen. Hier kommen kostenpflichtige serverlose Plattformen ins Spiel.
Serverlose Modellprobleme
Der Haken ist, dass serverlose Modelle… Probleme haben. Verstehen Sie mich nicht falsch: Ich sage nicht, dass sie an sich schlecht sind oder dass sie einigen Unternehmen unter bestimmten Umständen keinen signifikanten Wert bieten. Der Hauptanspruch der "Revolution" - dass serverlose Architektur die traditionelle Architektur schnell ersetzen wird - kommt jedoch nie zustande.
Deshalb.
Eingeschränkte Unterstützung für Programmiersprachen
Auf den meisten Plattformen ohne Server können nur Anwendungen ausgeführt werden, die in bestimmten Sprachen geschrieben wurden. Dies schränkt die Flexibilität und Anpassungsfähigkeit dieser Systeme erheblich ein.
Es wird angenommen, dass serverlose Plattformen die meisten wichtigen Sprachen unterstützen. AWS Lambda und Azure-Funktionen bieten auch einen Wrapper zum Ausführen von Anwendungen und Funktionen in nicht unterstützten Sprachen, obwohl dies häufig mit Leistungskosten verbunden ist. Für die meisten Unternehmen spielt diese Einschränkung normalerweise keine große Rolle. Aber hier ist die Sache. Es wird davon ausgegangen, dass einer der Vorteile von Modellen ohne Server darin besteht, dass wenig bekannte, selten verwendete Programme billiger verwendet werden können, da Sie nur für die Ausführungszeit bezahlen. Und wenig bekannte, selten verwendete Programme werden oft in ... wenig bekannten, selten verwendeten Programmiersprachen geschrieben.
Dies untergräbt einen der Hauptvorteile des serverlosen Modells.
Lieferantenbindung
Das zweite Problem bei serverlosen Plattformen oder zumindest bei der Art und Weise, wie sie derzeit implementiert sind, besteht darin, dass sie auf betrieblicher Ebene normalerweise nicht gleich aussehen. Es gibt praktisch keine Standardisierung in Bezug auf Schreibfunktionen, Bereitstellung und Verwaltung. Dies bedeutet, dass die Migration von Funktionen von einer Plattform auf eine andere äußerst zeitaufwändig ist.
Der schwierigste Teil bei der Umstellung auf ein Modell ohne Server sind nicht die Rechenfunktionen, bei denen es sich normalerweise nur um Codeteile handelt, sondern die Beziehung von Anwendungen zu verbundenen Systemen wie Objektspeicher, Identitätsverwaltung und Warteschlangen. Funktionen können verschoben werden, der Rest der App jedoch nicht. Dies ist das genaue Gegenteil der versprochenen kostengünstigen und flexiblen Plattformen.
Einige argumentieren, dass serverlose Modelle neu sind und es keine Zeit gab, ihre Funktionsweise zu standardisieren. Aber sie sind nicht allzu neu, wie ich oben erwähnt habe, und viele andere Cloud-Technologien wie Container sind durch die Entwicklung und weitverbreitete Übernahme guter Standards bereits viel benutzerfreundlicher geworden.
Performance
Die Rechenleistung von Plattformen ohne Server ist schwer zu messen, auch weil Anbieter dazu neigen, Informationen privat zu halten. Die meisten argumentieren, dass die Funktionalität auf Remote-Plattformen ohne Server genauso schnell ist wie auf internen Servern, abgesehen von einigen unvermeidlichen Latenzproblemen.
Einige Fakten deuten jedoch auf etwas anderes hin. Die Initialisierung von Funktionen, die zuvor nicht auf einer bestimmten Plattform oder einige Zeit nicht ausgeführt wurden, dauert einige Zeit. Dies ist wahrscheinlich auf die Tatsache zurückzuführen, dass ihr Code auf ein weniger zugängliches Speichermedium portiert wurde, obwohl - wie im Fall von Benchmarks - die meisten Anbieter Sie nicht über die Datenübertragung informieren.
Es gibt natürlich mehrere Möglichkeiten, dies zu umgehen. Eine besteht darin, die Funktionalität für jede Cloud-Sprache zu optimieren, in der Ihre serverlose Plattform ausgeführt wird. Dies untergräbt jedoch etwas die Behauptung, dass diese Plattformen "flexibel" sind.
Ein weiterer Ansatz besteht darin, sicherzustellen, dass leistungskritische Programme regelmäßig ausgeführt werden, um sie auf dem neuesten Stand zu halten. Dieser zweite Ansatz widerspricht natürlich der Vorstellung, dass serverlose Plattformen natürlich kostengünstiger sind, da Sie nur für die Laufzeit Ihrer Programme bezahlen. Cloud-Anbieter haben neue Wege zur Reduzierung von Kaltstarts eingeführt, aber viele von ihnen erfordern eine „Skalierung auf eins“, was den ursprünglichen Wert von FaaS untergräbt.
Das Kaltstartproblem kann teilweise dadurch behoben werden, dass serverlose Systeme intern ausgeführt werden. Dies ist jedoch mit Kosten verbunden und bleibt eine Nischenoption für gut ausgestattete Teams.
Sie können nicht ganze Anwendungen ausführen
Schließlich vielleicht der wichtigste Grund, warum serverlose Architekturen herkömmliche Modelle nicht so schnell ersetzen: Sie können (normalerweise) nicht ganze Anwendungen ausführen.
Genauer gesagt ist es nicht kosteneffektiv. Ihr erfolgreicher Monolith sollte wahrscheinlich nicht in einen Satz von vier Dutzend Funktionen umgewandelt werden, die durch acht Gateways, vierzig Warteschlangen und ein Dutzend Datenbankinstanzen verbunden sind. Aus diesem Grund eignet sich serverless besser für Neuentwicklungen. Fast keine vorhandene Anwendung (Architektur) kann migriert werden. Sie können migrieren, müssen aber von vorne beginnen.
Dies bedeutet, dass in den allermeisten Fällen serverlose Plattformen verwendet werden, um Back-End-Server für rechenintensive Aufgaben zu ergänzen. Dies unterscheidet sich stark von den beiden anderen Formen des Cloud-Computing, Containern und virtuellen Maschinen, die eine ganzheitliche Möglichkeit zur Durchführung von Remote-Computing bieten. Dies zeigt eine der Herausforderungen beim Übergang von Microservices zu serverlosen Systemen.
Dies ist natürlich nicht immer ein Problem. Die Möglichkeit, regelmäßig massive Computerressourcen zu verwenden, ohne eigene Hardware zu kaufen, kann vielen Unternehmen echte und dauerhafte Vorteile bringen. Wenn sich einige Anwendungen jedoch auf internen Servern und andere auf serverlosen Cloud-Architekturen befinden, erreicht das Management eine neue Komplexität.
Lang lebe die Revolution?
Trotz all dieser Beschwerden bin ich nicht gegen serverlose Lösungen an sich. Ehrenwort. Entwickler müssen lediglich verstehen, dass diese Technologie kein direkter Ersatz für Server ist, insbesondere wenn sie zum ersten Mal serverlose Modelle untersuchen. Lesen Sie stattdessen unsere Tipps und Ressourcen zum Erstellen von Anwendungen ohne Server und entscheiden Sie, wie Sie dieses Modell am besten anwenden.