© frankie's/Shutterstock.com
Wie man Stolperfallen beim Serverless Computing vermeidet

Serverlos, nicht kopflos!


Serverlose Architekturen sind der nächste Schritt in der Evolution der Clouddienste. Erste Gehversuche damit sind leicht. Man sollte jedoch die Stolperfallen kennen, um sie vermeiden zu können. In diesem Artikel werden die typischen Herausforderungen mit entsprechenden Lösungsmöglichkeiten dargestellt.

Function as a Service (FaaS) ist die einfachste Möglichkeit, Code in der Cloud auszuführen. Dadurch kann man auch von den Vorteilen einer gemanagten Umgebung wie automatischer Skalierung, hoher Verfügbarkeit und Fehlertoleranz profitieren, ohne initiale Aufwände und langfristige Kosten zu verursachen. Deswegen bietet sich FaaS sehr gut für unregelmäßige, fehlertolerante und kurzzeitige Dienste mit einer hohen Skalierbarkeit bei geringen Kosten an. Es muss dafür kein Server bereitgestellt, verwaltet, gepatcht oder aktualisiert werden. Solange der Code ausgeführt wird, wird nur der reine Verbrauch bezahlt. Denn kein Server ist leichter zu managen als einfach gar kein Server. Wer braucht noch Server, wenn es Dienste gibt?

Doch wie kann man die Abhängigkeit von einem Anbieter reduzieren und die Kosten unter Kontrolle halten? Wie kann man die angestrebten Qualitätsziele wie Sicherheit, Reaktionsfähigkeit und Überwachbarkeit erreichen und die Entwicklung und das Deployment in die bestehenden DevSecOps-Prozesse einbinden?

Was ist Serverless Computing?

Serverless Computing ist eine noch neue und sich schnell weiterentwickelnde Disziplin [1], [2]. Die Idee ist, dass man sich nur noch um die Erstellung und Konfiguration der Funktion kümmern muss, aber nicht mehr um ihre Skalierung und die benötigten Ressourcen. Deswegen bezahlt man auch nur für den realen Verbrauch und nicht für die zur Verfügung gestellte Infrastruktur. Da man sich die Infrastruktur trotz Isolierung mit anderen teilen muss, kann es jedoch sein, dass Ausführungs- und Durchführungsdauer der Funktion schwanken. Die anbieterunabhängige λ Serverless Benchmark [3] kann für eine erste Orientierung dienen.

Infrastrukturtechnisch beruht Serverless Computing auf Containern, wobei diese als Nanocontainer immer kleiner und damit schneller werden. Hinsichtlich der Programmierung basieren sie auf Events und Funktionen. Wobei bisher nur für Events mit CNCF-Cloud-Events-Spezifikation [4] ein Standard entwickelt wird, um Serverless mit Multicloudumgebungen – auch von verschiedenen Herstellern – sowie als hybride Clouds umsetzen zu können. Deswegen legt man sich bei der Programmierung und dem Betrieb bisher meist auf einen Cloudanbieter und dessen Modell fest. Um von Function as a Service (FaaS) zu Serverless Computing zu kommen, ist es wichtig, dass der Cloudanbieter immer mehr seiner Dienste auch für die direkte Nutzung serverlos zur Verfügung stellt. Für höherwertige Dienste wie z. B. Datenbanken können diese immer noch als Backend as a Service (BaaS) eingebunden werden.

Meistens sind FaaS zustandslos. Jedoch kann der Aufruf einer Funktion nicht nur von einem Event, sondern auch von einem Zustand abhängen. Hierfür gibt es den Serverless-Function-Workflow. Solch ein Zustandsautomat heißt bei AWS Lambda z. B. Step Functions [2]. Der wird vor allem dann gebraucht, wenn Funktionen parallel ausgeführt werden, sie sich jedoch miteinander synchronisieren müssen. Dabei wird zwischen den Zuständen des Events, der Operation oder der Bedingung unterschieden. Wie bei jedem Zustandsgraphen gibt es einen...

Neugierig geworden? Wir haben diese Angebote für dich:

Angebote für Gewinner-Teams

Wir bieten Lizenz-Lösungen für Teams jeder Größe: Finden Sie heraus, welche Lösung am besten zu Ihnen passt.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang