Serverless Computing oder Microservices: Was wann einsetzen?

Serverless Computing und Microservices funktionieren gut zusammen, haben aber auch jeweils einzigartige Eigenschaften. Was unterscheidet deren Architektur?

Das Streben nach mehr Agilität, verbesserter Leistung und Skalierbarkeit führte zur Einführung von Technologien wie Microservices und Serverless Computing. Obwohl Serverless Computing einige der Merkmale von Microservices teilt – und Entwickler beide Architekturen gemeinsam nutzen können – gibt es mehrere Unterschiede zwischen ihnen. Und manchmal ist das eine besser für einen Job geeignet als das andere. Um zu wissen, was wann zu verwenden ist, sollten Entwickler lernen, welche Gemeinsamkeiten und Unterschiede die beiden Architekturtypen haben.

Microservices eignen sich am besten für lang laufende, komplexe Anwendungen mit hohem Ressourcen- und Managementbedarf. Eine bestehende monolithische Anwendung lässt sich am besten zu Microservices migrieren. Dies gestaltet es einfacher, Funktionen für die Anwendung modular zu entwickeln und in der Cloud bereitzustellen. Microservices sind eine gute Wahl für den Aufbau von E-Commerce-Websites, da sie Informationen während einer Transaktion speichern und die Bedürfnisse eines 24/7-Kundenmanagements erfüllen.

Demgegenüber führen Serverless-Funktionen eine Funktion nur bei Bedarf aus. Nach Abschluss der Ausführung beendet sich die Instanz, die den Code ausführt, automatisch. Serverless Computing passt sich an Anwendungen an, die ereignisgesteuert sind, insbesondere wenn die Ereignisse selten passieren und die Ereignisverarbeitung nicht ressourcenintensiv ist.

Abbildung 1: Die kostenlosen Kontingente für Serverless Computing bei AWS, Azure, IBM und Google.
Abbildung 1: Die kostenlosen Kontingente für Serverless Computing bei AWS, Azure, IBM und Google.

Serverless Computing ist eine gute Wahl, wenn Entwickler eine schnelle Bereitstellung benötigen und es nur minimale Probleme bei der Anwendungsskalierung gibt. Ein guter Einsatz von Serverless Computing ist beispielsweise eine geplante Aufgabe, die eine gewisse Datenaggregation ausführen muss und nur für wenige Sekunden ausgeführt wird.

Als Faustregel gilt, dass man sich für Serverless Computing entscheiden sollte, wenn man eine automatische Skalierung und niedrigere Laufzeitkosten benötigt, und dass man Microservices wählt, wenn man Flexibilität benötigt und eine Legacy-Anwendung in eine moderne Architektur migrieren möchten.

Es gibt noch weitere Unterschiede zwischen Serverless Computing und Microservices, die ins Spiel kommen, wenn ein Entwickler sich für eine Architektur entscheiden muss.

IT-Betriebsabläufe

Eine IT-Abteilung muss sich in der Regel eher um den operativen Overhead einer Microservices-Anwendung kümmern – Bereitstellung, Konfiguration, Support, Wartung und Überwachung – als um eine Serverless-Anwendung.

Auch wenn es technisch möglich ist, Serverless Computing über eigene IT-Ressourcen zu betreiben, baut ein typisches Serverless-Computing-Modell auf einem Cloud-Angebot auf, das alle Aufgaben der Serververwaltung, Kapazitätsplanung und des Supports für die zugrunde liegende Infrastruktur beinhaltet.

Funktionen

Die Serverless-Architektur verwendet Funktionen, dies sind benannte Prozeduren, die einen bestimmten Dienst ausführen und einen Wert an die Anwendung zurückgeben.

Microservices und Serverless integrieren und ergänzen sich gegenseitig in ihren Stärken und Schwächen.

Typischerweise ist ein Microservice umfangreicher als eine Serverless-Funktion. Und im Gegensatz zu einer Serverless-Funktion kann ein Microservice mehr als eine Funktion ausführen. Mit anderen Worten, ein Microservice kann mit einer oder mehreren Serverless-Funktionen gleichgesetzt werden.

Preis

Die Kosten können ein wichtiges Unterscheidungsmerkmal zwischen Serverless Computing und Microservices sein. Dies bezieht sich auf den zuvor genannten Unterschied, dass Serverless Computing nur dann arbeitet, wenn die Anwendung eine Aufgabe ausführen muss, während Microservices kontinuierlich arbeiten.

Serverless-Computing-Produkte wie AWS Lambda arbeiten nach dem Pay-as-you-go-Modell, das heißt der Anbieter berechnet nur den Zeitraum, den der Server die Funktion ausführt. Auch wenn es relativ billig ist, Microservices auf Containern bereitzustellen, bezahlt man für die Instanz, auch wenn es keine Last gibt, da diese rund um die Uhr läuft.

Können Serverless Computing und Microservices zusammenarbeiten?

Die Frage ist nicht immer: Serverless Computing oder Microservices? Einige Anwendungen sind auf beides angewiesen. Microservices und Serverless Computing integrieren und ergänzen sich gegenseitig in ihren Stärken und Schwächen.

Man kann Microservices als Teil einer Serverless-Architektur bereitstellen oder sie in Containern hosten. Man sollte aber daran denken, Portabilitätsprobleme zu berücksichtigen, da Serverless-Anwendungen nur innerhalb der Infrastruktur des jeweiligen Anbieters bereitgestellt werden können.

Nächste Schritte

Entwickler finden Gefallen an Serverless-Plattformen.

AWS, Azure und Co.: Kosten für Serverless Computing managen.

Microservices in der Cloud mit nativen Tools verwalten.

Erfahren Sie mehr über Softwareentwicklung