© Liashko/Shutterstock.com
Entwickler Magazin
Serverlose Microservices mit AWS Lambda

Darfs auch etwas weniger sein?

Die Infrastruktur unter Containern und Clustern zu managen, kann ganz schön anstrengend sein. Amazon Lambda enthebt uns dieser lästigen Aufgabe. Mit Lambda können wir Code in einer von AWS vollständig gemanagten Infrastruktur deployen und ausführen. Um die Server müssen wir uns nicht mehr kümmern.

Niko Köbler


Langsam aber sicher haben wir uns an Microservices, Bounded Contexts, funktionale Dekomposition und Self-contained Systems gewöhnt. Wir deployen unsere Anwendungen nicht mehr als Monolithen auf einem dicken Application Server, sondern bauen und starten für jedes Deployment einen Container und lassen diesen in einem Cluster laufen. Durch den DevOps-Ansatz sind die Grenzen zwischen Entwicklung und Betrieb fließend geworden, und bestenfalls managt jedes Team seine eigenen Services ganzheitlich. Soweit zur Best-Case-Theorie.

Mit der Zeit wird das aber recht anstrengend, für jeden kleinen Service einen eigenen Container zu erzeugen und diese entsprechend redundant in einem Containercluster in Betrieb zu nehmen. Nicht die Sache selbst, aber das Management wird komplexer. Um die Übersicht zu behalten, muss immer mehr Aufwand betrieben werden. Denn die Anzahl an laufenden Instanzen wird immer größer, je mehr wir uns daran gewöhnen, immer kleinere Einheiten (Microservices) zu entwickeln und zu betreiben. Letztendlich wollen wir eigentlich nur Code schreiben und ihn irgendwo ausführen. Egal wo, Hauptsache er läuft; zuverlässig und skalierbar, bestenfalls automatisiert. Durch das Verlagern von Komplexität in den Betrieb der Anwendungen befassen wir Entwickler uns mehr mit dem Betrieb, als wir manchmal eigentlich möchten. Nicht falsch verstehen, DevOps und das ganzheitliche Betrachten von Anwendungen ist mehr als richtig. Aber manchmal erscheint uns der Aufwand doch immens hoch zu dem, was wir eigentlich bewerkstelligen wollen. Geht das nicht auch einfacher? So wie anonyme Klasse oder Funktionen mitten in einem Programmcode existieren, könnte doch auch ein Service einfach so, ohne großen sichtbaren Aufwand in einer Infrastruktur leben. Auch Werner Vogels, CTO von Amazon, sagte auf der re:invent 2015 in Las Vegas: „Kein Server ist einfacher zu managen als kein Server.“

Der nächste Schritt: serverlos

Genau hier kommt AWS Lambda [1] ins Spiel. Lambda erlaubt es uns, einfach nur Code in eine von AWS Cloud bereitgestellte und vollständig gemanagte Infrastruktur zu deployen und ihn auszuführen, ohne uns um die Server kümmern zu müssen. Werden mehr Ressourcen benötigt, skaliert AWS die Umgebung automatisch, sodass allen Lambda-Nutzern ausreichend Ressourcen zur Verfügung stehen. Lambda-Funktionen werden ereignisgesteuert ausgelöst, d. h. durch Events von anderen AWS-Services oder durch Aufrufe über das API-Gateway. Zahlen müssen wir nur die Zeit, die für die Ausführung unser...

Entwickler Magazin
Serverlose Microservices mit AWS Lambda

Darfs auch etwas weniger sein?

Die Infrastruktur unter Containern und Clustern zu managen, kann ganz schön anstrengend sein. Amazon Lambda enthebt uns dieser lästigen Aufgabe. Mit Lambda können wir Code in einer von AWS vollständig gemanagten Infrastruktur deployen und ausführen. Um die Server müssen wir uns nicht mehr kümmern.

Niko Köbler


Langsam aber sicher haben wir uns an Microservices, Bounded Contexts, funktionale Dekomposition und Self-contained Systems gewöhnt. Wir deployen unsere Anwendungen nicht mehr als Monolithen auf einem dicken Application Server, sondern bauen und starten für jedes Deployment einen Container und lassen diesen in einem Cluster laufen. Durch den DevOps-Ansatz sind die Grenzen zwischen Entwicklung und Betrieb fließend geworden, und bestenfalls managt jedes Team seine eigenen Services ganzheitlich. Soweit zur Best-Case-Theorie.

Mit der Zeit wird das aber recht anstrengend, für jeden kleinen Service einen eigenen Container zu erzeugen und diese entsprechend redundant in einem Containercluster in Betrieb zu nehmen. Nicht die Sache selbst, aber das Management wird komplexer. Um die Übersicht zu behalten, muss immer mehr Aufwand betrieben werden. Denn die Anzahl an laufenden Instanzen wird immer größer, je mehr wir uns daran gewöhnen, immer kleinere Einheiten (Microservices) zu entwickeln und zu betreiben. Letztendlich wollen wir eigentlich nur Code schreiben und ihn irgendwo ausführen. Egal wo, Hauptsache er läuft; zuverlässig und skalierbar, bestenfalls automatisiert. Durch das Verlagern von Komplexität in den Betrieb der Anwendungen befassen wir Entwickler uns mehr mit dem Betrieb, als wir manchmal eigentlich möchten. Nicht falsch verstehen, DevOps und das ganzheitliche Betrachten von Anwendungen ist mehr als richtig. Aber manchmal erscheint uns der Aufwand doch immens hoch zu dem, was wir eigentlich bewerkstelligen wollen. Geht das nicht auch einfacher? So wie anonyme Klasse oder Funktionen mitten in einem Programmcode existieren, könnte doch auch ein Service einfach so, ohne großen sichtbaren Aufwand in einer Infrastruktur leben. Auch Werner Vogels, CTO von Amazon, sagte auf der re:invent 2015 in Las Vegas: „Kein Server ist einfacher zu managen als kein Server.“

Der nächste Schritt: serverlos

Genau hier kommt AWS Lambda [1] ins Spiel. Lambda erlaubt es uns, einfach nur Code in eine von AWS Cloud bereitgestellte und vollständig gemanagte Infrastruktur zu deployen und ihn auszuführen, ohne uns um die Server kümmern zu müssen. Werden mehr Ressourcen benötigt, skaliert AWS die Umgebung automatisch, sodass allen Lambda-Nutzern ausreichend Ressourcen zur Verfügung stehen. Lambda-Funktionen werden ereignisgesteuert ausgelöst, d. h. durch Events von anderen AWS-Services oder durch Aufrufe über das API-Gateway. Zahlen müssen wir nur die Zeit, die für die Ausführung unser...

Neugierig geworden?


   
Loading...

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang