15. Juni 2018

Serverless durch die Cloud Computing-Welt

Serverless durch die Cloud Computing-Welt (Foto: synaix)

Wie wird in Zukunft programmiert? Welche Möglichkeiten gibt es für Entwickler? Das war Thema des Vortrags „Alles, was du schon immer über Serverless wissen wolltest“ von Niko Köbler, der letzte Woche bei synaix stattfand. Köbler selbst ist Multi-Akteur in der Cloud-Welt: Neben Tätigkeiten als Software-Architekt, Entwickler und Trainer für Java und JavaScript Unternehmenslösungen spricht er regelmäßig auf nationalen und internationalen Konferenzen und ist Mitorganisator der Java User Group Darmstadt. Außerdem ist er Autor zahlreicher Fachartikel sowie des Buches „Serverless Computing in der AWS Cloud“.

Trendthema Serverless

Vor allem um den Inhalt dieses Buches ging es dann auch in den synaix Räumlichkeiten: Serverless ist das neue Trendthema, eigentlich niemand im Bereich Cloud Computing kommt derzeit daran vorbei. Dabei bedeutet Serverless hier nicht, dass keine Server mehr notwendig sind. Vielmehr soll die Konzentration bei der Ausführung von Codes auf der Ebene von einzelnen Funktionen liegen und Punkte wie das Management von Serverinstanzen, Verfügbarkeit und Skalierbarkeit an die Cloud abgegeben werden.

Abgrenzung zur Containervirtualisierung

Ein Container fasst eine einzelne Anwendung mit allen Abhängigkeiten wie Bibliotheken, Hilfsprogrammen und statischen Daten zusammen. Durch dieses Vorgehen wird das Bereitstellen der Anwendungen deutlich vereinfacht. Die in den Containern gespeicherten Anwendungsdaten lassen sich äußerst einfach transportieren und installieren. Darüber hinaus ist durch den Einsatz von Containern gewährleistet, dass die auf einem Computer genutzten Ressourcen strikt voneinander getrennt sind. Als Standardwerkzeug der Containerverwaltung hat sich Kubernetes etabliert – es wird auch als das „Betriebssystem der Cloud“ betrachtet. Allerdings stellt sich die Verwaltung von Kubernetes häufig als aufwendig und zeitintensiv dar.

Die Nachfrage steigt

In den letzten Jahren hat sich die Nachfrage an mobile und Cloud-Anwendungen massiv erhöht. Daraus bildete sich Function as a Service (FaaS), ein Paradigma, um zustandslose und klar abgegrenzte Business-Anforderungen abbilden zu können. Darauf aufbauend wurden mehrere Frameworks entwickelt, wie z.B. das Serverless Framework, das Fn Projekt u.a., damit der Umgang mit Funktionen/ Containern vereinfacht wird. Trotzdem müssen Container immer noch verwaltet werden. Um diesen Verwaltungsaufwand zu reduzieren, bedurfte es einer neuen Idee.

Die großen Cloud-Anbieter (Amazon, Microsoft) stellten aus diesem Bedarf Frameworks (AWS Lambda, Azure Functions) zur Verfügung, um die Automatisierung der Bereitstellung, Skalierung und Verwaltung atomarer Funktionen zu ermöglichen. Im Serverless Umfeld beschreibt eine atomare Funktion ein Stück Software, das zustandslos und nach dem Single-Responsibility Prinzip geschrieben werden sollte. Da die Funktionen zustandslos sind und ihre benötigten Abhängigkeiten mitbringen müssen, können sie einfach skaliert werden, weil hier keine Konflikte entstehen können. Der Cloud Provider stellt sicher, dass der Code parallel ausgeführt werden kann, ohne dass der Nutzer in Berührung mit der Skalierungslogik kommt. Dadurch kann die Umgebung automatisch mit der Anzahl der Requests skaliert werden.

Paradigmenwechsel für die Softwareentwicklung

Die Services der Cloud-Anbieter müssen in der Regel nicht administriert werden. Dadurch kann der Fokus komplett auf die Entwicklung von Funktionen gelegt werden. Dabei ist es natürlich eine Herausforderung diese Funktionen auf die Serverless-Architektur anzupassen. Es können keine klassischen Anwendungen mit Serverless gebaut werden. Dadurch entsteht hier eindeutig ein Paradigmenwechsel, der neue Prozesse der Softwareentwicklung benötigt.

Ein zentraler Vorteil solcher von Cloud Providern angebotenen Plattformen ist, dass man für die Bereitstellung der Infrastruktur nicht zahlen muss. Man bezahlt bei Serverless Functions nur die reine Nutzung (Never pay for idle). Ein weiterer Kernaspekt des Serverless Paradigmas ist die Kommunikation über APIs. Jeder Cloud Provider stellt eine stetig wachsende Anzahl an Services bereit, die einen Großteil aller benötigten Anforderungen abdecken können. Dabei sind die Datenbank-, Messaging- und Monitoring-Dienste am weitesten verbreitet. Diese Dienste werden nur noch über APIs und nicht mehr über IP-Adressen oder DNS-Einträge angesteuert. Wo diese Services tatsächlich betrieben werden, ist für den Anwender letztlich intransparent.

Start-Up Times und Vendor-Lock-in

Bei der Verwendung der Serverless Infrastruktur muss man z.B. auf neue Einschränkungen achten, die zuvor nicht existierten. Hierbei sind vor allem die Start-Up Times der Funktionen aufgefallen. Denn damit eine Funktion ausgeführt werden kann, muss zunächst deren Umgebung aufgebaut werden. Dadurch entstehen erstmalig natürlich Delays, die bei der Verwendung beachtet werden müssen.

Eine weitere Einschränkung ist, dass man sich in der Regel zunächst auf einen Cloud-Provider festlegen muss. Dieser sogenannte Vendor-Lock-in führt dazu, dass man sich erst einmal nur in den Services dieses Cloud Providers bewegt. Zwar gibt es keine direkten Widerstände, die verhindern, dass externe Services genutzt werden können,  aber es wird einem natürlich leichter gemacht die eigenen Services des Cloud Providers zu verwenden. Darüber, was die Vor- und Nachteile eines Vendor-Lock-ins sind und welche Auswirkungen sich daraus für die jeweiligen Anwendungen/ Funktionen ergeben können, gehen die Meinungen auseinander.

In Kürze: Serverless vs. Container

Hier noch einmal die Vor- und Nachteile von Container und Serverless im Überblick:

Vorteile von Containern:

  • Kontrolle und Flexibilität
  • Vendor-agnostic
  • Einfachere Migration
  • Portabilität

Nachteile von Containern:

  • Betriebsaufwand, z.B. Sicherheitsfixes für Container
  • Langsamere Skalierung
  • Kosten
  • Komplexes Thema für Anfänger

Vorteile Serverless:

  • Keine Administration
  • Pay-per-execution
  • Keine Kosten für Idle
  • Autoskalierung
  • Schneller an den Markt
  • Microservice Nature -> saubere Codebasis
  • Deutlich reduzierter administrativer Aufwand und Wartbarkeitsbelastung

Nachteile Serverless:

  • Keine Standardisierung
  • Blackbox Umgebung
  • Vendor-Lock-in
  • Cold starts: die Cloud-Infrastruktur braucht Zeit für die Initiierung der Umgebung, wenn eine Funktion das erste Mal ausgeführt wird.
  • Komplexe Anwendungen können schwer implementiert und gemanagt werden.

Zeit für Diskussion

Die Teilnehmer zeigten so großes Interesse am Serverless-Vortrag, dass sich die zweite Hälfte automatisch zu einer regen Diskussion entwickelte. Neugier und kleinere Bedenken der Anwesenden drehten sich dabei vor allem um die rasante Entwicklung im Cloud- bzw. Serverless-Bereich und darum, wie schnell dort Fachkompetenzen aufgebaut werden können. Ein weiteres Thema, das die Zuhörer besonders interessierte, waren die teilweise fehlenden SLAs der Cloud Provider, wobei dem gegebenenfalls durch neue Anwendungsarchitekturen entgegengewirkt werden kann. In „speziellen“ Use Cases zeigen sich die Cloud Provider durchaus kooperationsbereit. Nach dem heutigem Stand der Entwicklung ergibt sich, dass nicht alle Anwendungsfälle anhand des Serverless Paradigmas realisiert werden können.

“It’s a question of time“

Niko Köbler ist aber überzeugt: Serverless ist die Zukunft. Da, wo es sinnvoll ist, wird es andere, bisherige Lösungen erobern. Momentan sei es noch nicht für alle Probleme sinnvoll Serverless-Lösungen anzuwenden, aber “It’s a question of time“.

Jetzt haben wir auch des Rätsels Lösung!

Wir freuen uns, dass wir Gastgeber dieser tollen Veranstaltung sein durften und bedanken uns bei Michael Simons von der EuregJUG für die Realisierung. Ein herzliches Dankeschön an alle Teilnehmer – auch für die angeregte Diskussion – und ganz besonders natürlich an Niko Köbler für seinen informativen Vortrag und einen insgesamt sehr kurzweiligen Besuch bei uns – gerne wieder!

Serverless durch die Cloud Computing-Welt (Foto: synaix)

Serverless durch die Cloud Computing-Welt (Foto: synaix)

Serverless durch die Cloud Computing-Welt (Foto: Michael Simons)

Serverless durch die Cloud Computing-Welt (Foto: Michael Simons)

 

(Eirini Graonidou und René Fibus)

Keine Kommentare


Dein Kommentar:

* Pflichtfelder

Time limit is exhausted. Please reload CAPTCHA.