Sascha Möllering Amazon Web Services Germany GmbH

Serverless-Applikationen vereinfachen die Entwicklung einer kostengünstigen und skalierbaren Applikation enorm, da die zugrunde liegende Infrastruktur bereits die Skalierung übernimmt.

Klassische Multi-Tier-Architekturen auf Basis von Applikationsservern und Datenbanken sind das Rückgrat skalierbarer Infrastrukturen. Es ist jedoch einiges an Aufwand zu betreiben, damit ein solches System auch Ausfälle einzelner Server verkraftet. Zusätzlich ist eine Patching- und Deployment-Strategie notwendig, um Sicherheitslöcher zu schließen und neue Versionen einzelner Services auszurollen. Und auch preislich ist dieser Ansatz in vielen Fällen nicht optimal, da immer Serverkapazität vorgehalten werden muss. Ein radikal anderer Architekturansatz ist die Serverless Architecture.

Bei einer Serverless Architecture existiert kein klassischer Application oder Webserver. Die Funktionalitäten werden in vollständig verwalteten Services abgebildet, bei denen lediglich die Applikationslogik implementiert werden muss. Die klassische, lang laufende virtuelle Maschine wird durch flüchtige Rechenkapazität ersetzt, die erst bei einer Anfrage entsteht und danach wieder verschwindet. Aspekte wie Skalierung oder Sicherheit gewährleisten die verwendeten Services. Entwickler können sich somit vollständig auf die Businesslogik fokussieren. Serverspezifischen Quelltext müssen sie nicht implementieren. Da die komplette Applikation in verwalteten Services läuft, besteht auch keine Notwendigkeit, eine Strategie für das Patching von Betriebssystemen und Middleware zu entwickeln. Darüber hinaus müssen auch keine Server mehr überwacht werden, sondern lediglich die Ausführung der Applikationslogik in den verwalteten Services. Da diese Services nach Anzahl der Anfragen abgerechnet werden, fällt auch das Kostenrisiko durch Überprovisionierung weg. Gleiches gilt für potenzielle Performancerisiken durch die Unterprovisionierung von Servern.

Die Herausforderung bei Serverless Architecture besteht darin, die notwendigen Programmierparadigmen umzusetzen. Da bei diesem Ansatz lang laufende virtuelle Maschinen durch flüchtige Rechenkapazität ersetzt werden, liegt der Zustand der Anwendung vollständig in externen Systemen, z. B. einer verwalteten Datenbank. Bei jedem Aufruf der Applikationslogik muss der Zustand wieder geladen, modifiziert und abgespeichert werden.

Klassische Architektur vs. Serverless Architecture

Eine klassische Drei-Schichten-Architektur, die ein beliebtes Entwurfsmuster für Webapplikationen ist, besteht aus der Präsentationsschicht, der Logikschicht und der Datenschicht. Die Präsentationsschicht ist die Komponente, mit der der Nutzer direkt interagiert. Die Logikschicht enthält die Applikationslogik und die Datenschicht enthält die Datenspeicher (Datenbank, Caches etc.) und ist verantwortlich für das Laden und Speichern von Daten. Der Traffic aus dem Internet trifft auf Webserver, die die statischen Assets der Webseite ausliefern und gegebenenfalls den Traffic je nach Pfad unterschiedlich an die Backend-Systeme routen. Hinter den Webservern befinden sich Application Server, auf denen beispielsweise Java-EE-Applikationen laufen, die Teile der Webseite rendern oder REST-APIs bereitstellen, auf die andere Applikationen zugreifen können. Die Application Server laufen oft im Verbund als Cluster. Der Zustand der Applikation wird über Session Replication zwischen den einzelnen Knoten des Clusters geteilt. Meist greifen die Application Server auf relationale Datenbanken und Caching-Systeme zu, in denen sowohl die Daten für die Applikationen als auch der Session State gehalten wird. Um dieses Architekturpattern skalierbar implementieren zu können, müssen Entwickler das Konzept eines Servers verinnerlicht haben: Auf den Servern läuft die Software, die Server kommunizieren miteinander über IP-Adressen. Server können ausfallen, und mit Ausfällen muss die Anwendung umgehen können. Klassische Middleware hat viel Aufwand betrieben, um diese Komplexität vor den Entwicklern zu verbergen – speziell die Java EE Application Server. Dennoch muss sich ein Entwickler stark mit Infrastrukturthemen auseinandersetzen, um eine performante und skalierbare Anwendung auf dieser Basis zu implementieren.

Den vollständigen Artikel lesen Sie in der Ausgabe:

Java Magazin 12.16 - "Serverless: Der Code im Nichts?"

Alle Infos zum Heft
298931Serverless Architecture: Ein Hauch von Nichts
X
- Gib Deinen Standort ein -
- or -