Serverless für Dummies

Serverless kennt doch jeder!“ – das war die Aussage eines Kollegen, die der Grund für diesen Blogbeitrag ist. Bloß nicht anmerken lassen, dass man nicht weiß, um was es sich hier handelt. Um euch zukünftig vor flüchtigen Ausreden zu schützen, haben wir einen Blogeintrag zum Thema Serverless Computing verfasst. Was ist das überhaupt, an welche Themengebiete knüpft es an und was sind die Vor- und Nachteile? Außerdem geben wir einen kleinen Einblick in das Serverless Framework und zeigen auf, welche Probleme des Serverless-Konzeptes dieses löst.

Serverless Computing

Serverless Computing ist ein Cloud-Computing Ausführungsmodell, bei dem der Cloud Service eines Anbieters die Administration der benötigten Serverinfrastruktur übernimmt. So muss sich der Entwickler nicht mehr selbst um die Bereitstellung, die Skalierung und das Management der Server kümmern. „Build more, manage less“ [1] und „Focus on your application, not the infrastructure“ [2] sind gängige Werbesätze für Serverless Anwendungen.

Serverless Computing setzt sich aus FaaS (Function as a Service) und in Teilen aus PaaS (Platform as a Service) zusammen. PaaS wiederum basiert auf IaaS (Infrastructure as a Service). Um Serverless in die Cloud Computing Kategorien richtig einordnen zu können, empfiehlt es sich, die anderen Kategorien zu kennen. Daher werden diese nachfolgend kurz vorgestellt, bevor eine detaillierte Betrachtung von FaaS und Serverless erfolgt. Die nachstehende Abbildung bietet eine visuelle Orientierung.


Abbildung 1: Cloud Services

IaaS (Infrastructure as a Service) bietet eine Rechenzentrumsinfrastruktur. Hardware, Rechenleistung, Speicher und Netzwerkressourcen werden vom Cloud-Anbieter bereitgestellt. [3] Dabei ist der Entwickler für die Verwaltung der Betriebssysteme, Laufzeitumgebungen und der Datenhaltung selbst zuständig. [4] Der Vorteil der eigenen Verwaltung ist die hohe Flexibilität gegenüber der Auswahl der Komponenten. Der Aufwand, den diese Verwaltung jedoch einnimmt, ist nicht zu vernachlässigen.

PaaS (Platform as a Service) geht einen Schritt weiter und bietet eine Entwicklungsumgebung mit allen dafür erforderlichen Werkzeugen wie Entwicklungstools und Datenbankverwaltungssystemen. Dadurch wird das Erstellen, Testen und Bereitstellen der Anwendungen erleichtert. Die Verwaltung des Betriebssystems und der Laufzeitumgebung wird auf Anbieterseite verlagert. [5] Die Applikation kann nur als Ganzes skaliert oder ausgetauscht werden. Nachteilig daran ist eine gewisse „Schwergewichtigkeit“ des Ansatzes. Dem gegenüber steht der Vorteil von Konsistenz, da alle Bestandteile einer Anwendung so stets zusammenpassen.

FaaS (Function as a Service) ist eine Kategorie des Cloud Computing. Hierbei gibt es keinen laufenden Serverprozess, sondern Funktionen, die bei Eintreten eines bestimmten Events aufgerufen werden können. Der Begriff dazu lautet „Event-driven Computing“. [6] Für das Speichern von Daten über mehrere Aufrufe hinweg muss eine Datenbank hinzugezogen werden, da die Funktionen zustandslos sind. [7] Die Ausführungsdauer von Funktionen ist durch ein timeout limit begrenzt. Nach ungefähr 5 Minuten Laufzeit werden die Threads beendet, in welchen die Funktionen ausgeführt werden. [8] Daher ist die Verwendung von Funktionen nur für Anwendungen mit kurzer Laufzeit empfehlenswert. Ein wesentlicher Bestandteil von FaaS ist das Herunterfahren von ungenutzten Ressourcen und der Neustart bei Bedarf. Bei FaaS wird nach dem „pay-per-execution“-Prinzip abgerechnet. Man zahlt nur, was ausgeführt wurde. [9]

Serverless Computing ersetzt die Applikation als ein Ganzes durch eine Verkettung aus Funktionen. Dadurch können einzelne Funktionen skaliert oder ausgetauscht werden. Die Kapazitätsplanung, Skalierbarkeit, Fehlertoleranz und Flexibilität wird jetzt auch dem Cloud-Anbieter übertragen. Das ermöglicht die stärkere Konzentration auf den Code.


Abbildung 2: Vor-und Nachteile von Paas und Serverless [10]

Durch das Arbeiten mit Funktionen sind Serverless Anwendungen meist schneller in der Ausführung, da nur die Ressourcen hochfahren, die letztendlich auch angesprochen werden. Außerdem skalieren die Applikationen automatisch ohne vorherige Konfiguration. [11] Die Skalierung erfolgt dabei nicht pauschal für die ganze Anwendung, sondern an den Stellen (Funktionen), an denen sie notwendig ist.
Allerdings stellt Serverless Computing eine Herausforderung für das Monitoring und Debugging dar. Eine tiefgreifende Analyse mit Profilern und Debuggern ist in der Regel nicht möglich, da der Code aufgrund nicht vorhandener Infrastruktur auf dem Rechner des Entwicklers nicht ausgeführt werden kann. Darüber hinaus müssen aktuell bei einem Wechsel der Cloud-Plattform die eventbasierten Funktionen (teilweise) neu implementiert werden, da diese vom Cloud-Anbieter abhängig sind (Vendor Lock-in).

Cloud-Anbieter, die Serverless-Computing anbieten, sind: Amazon Web Services: AWS Lambda, Microsoft: Azure Functions, Google: Cloud Functions, IBM: Bluemix OpenWhisk.

Serverless Framework

Das Serverless Framework ist ein Open-Source-CLI (Command Line Interface), das Serverless Computing mit einigen Lösungen für die oben genannten Nachteile anbietet. Mit nur EINER yaml-Konfigurationsdatei soll die gesamte Anwendung konfigurierbar sein. Außerdem löst das Framework das Problem der Lock-ins. Die eventbasierten Funktionen können durch ein Event-Gateway Cloud-übergreifend laufen. Dieses wird vom Serverless Team bereitgestellt oder man kann es selbst auf einer Cloud seiner Wahl verwalten. [12] Durch ein Dashboard hat das gesamte Team eine Übersicht über die Funktionen und Events. Logs und Metriken lassen sich auf der Benutzeroberfläche ebenfalls anzeigen, was das debuggen erleichtert. Es ist möglich festzulegen, welche Teammitglieder Zugriff auf welche Cloud-Ressourcen bekommen. Zusätzlich bietet es eine integrierte Unterstützung der lokalen Entwicklung sowie Rollbacks und streamt Logs direkt ins CLI. Es sind Sprachen wie Python, C#, Java, node.js und viele mehr verfügbar. „Hit deploy and you’re live“ gehört zu den Werbesprüchen des Frameworks. Durch einen einzigen deploy-Befehl ist die Anwendung in der Cloud bereitgestellt.

Ist Serverless die Zukunft?

Serverless Computing bietet durch den Fokus auf Funktionen und somit auf die eigentliche Fachlichkeit großes Potential, das Leben vieler Entwickler, Product Owner und Scrum Master einfacher zu machen. Zeit, welche vorher mit der Verwaltung von Infrastruktur verbracht wurde, kann nun für das Umsetzen von Features verwendet werden. Zumindest in der Theorie ist dieser Ansatz vielversprechend. Dieser aktuell noch sehr neue Trend kämpft vor allem mit mangelnder Standardisierung. Die Möglichkeit von Vendor-Lock-Ins hält momentan vor allem große Unternehmen davon ab, auf das neue Paradigma zu setzen.

Mit dem Serverless Framework bildet sich in diesem Umfeld ein möglicher Standard. Es bleibt aber noch abzuwarten, ob dieser sich durchsetzen wird. Kritisch hierfür ist aus unserer Sicht vor allem der Support der Community, welcher maßgeblich durch das Lizenz- bzw. Preismodell beeinflusst wird. Welche weiteren Möglichkeiten es gibt, einen Vendor-Lock-In zu vermeiden, untersuchen wir aktuell im Rahmen einer Masterthesis.

Geschrieben von Lea Scholtes und Marc Mai


Literatur

[2] Bashir, F. (28.05.2018). hackernoon: What is Serverless Architecture? What are its Pros and Cons? Abgerufen am 27.11.2018 von https://hackernoon.com/what-is-serverless-architecture-what-are-its-pros-and-cons-cc4b804022e9
[8] Burns, E. (06/2018). Search Data Center: Serverless Computing: Was es ist und warum es wichtig ist. Abgerufen am 27.11.2018 von https://www.searchdatacenter.de/sonderbeitrag/Serverless-Computing-Was-es-ist-und-warum-es-wichtig-ist
[11] Büst, R. (01.03.2017). Computerwoche: Serverless Infrastructure erleichtert die Cloud-Nutzung. Abgerufen am 27.11.2018 von https://www.computerwoche.de/a/serverless-infrastructure-erleichtert-die-cloud-nutzung,3314756,2
[10] Cloudflare Inc. (27.11.2018). Cloudflare: How are serverless computing and Platform-as-a-Service different? Von https://www.cloudflare.com/learning/serverless/glossary/serverless-vs-paas/ abgerufen
[4] Karlstetter, F. (12.05.2017). Cloudcomputing Insider: Was ist Infrastructure as a Service? Abgerufen am 26.11. 2018 von https://www.cloudcomputing-insider.de/was-ist-infrastructure-as-a-service-a-605071/
[9] Karlstetter, F. (25.05.2018). Cloudcomputing Insider: Was ist Serverless Computing? Abgerufen am 27.11.2018 von https://www.cloudcomputing-insider.de/was-ist-serverless-computing-a-713889/
[5] Microsoft Corporation. (2018). Microsoft Azure: Was ist PaaS? Abgerufen am 26.11.2018 von https://azure.microsoft.com/de-de/overview/what-is-paas/
[7] Nolle, T. (01/2018). Search Data Center: Serverless Computing: Darauf müssen Sie achten. Abgerufen am 27.11.2018 von https://www.searchdatacenter.de/tipp/Serverless-Computing-Darauf-muessen-Sie-achten
[12] Serverless, Inc. (10.09.2018). GitHub: serverless/event-gateway#running-the-event-gateway. Abgerufen am 26.11.2018 von https://github.com/serverless/event-gateway#running-the-event-gateway
[1] Serverless, Inc. (2018). Serverless: Anbieterseite. Abgerufen am 26.11.2018 von https://serverless.com
[3] Sommergut, W. (03.07.015). Computerwoche: Was Sie über die Cloud wissen müssen. Abgerufen am 26.11.2018 von https://www.computerwoche.de/a/was-sie-ueber-die-cloud-wissen-muessen,2504589,2
[6] Wyllie, D. (13.08.2018). t3n digital pioneers: Serverless Computing: Deswegen sind Server nicht die Zukunft. Abgerufen am 27.11.2018 von https://t3n.de/news/serverless-computing-deswegen-sind-server-nicht-die-zukunft-849986/

Zurück zur Übersicht

Kommentar verfassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

*Pflichtfelder

*