Die Nachteile Server-loser Cloud-Architekturen Serverless Computing im Praxis-Check

Von Dipl. Betriebswirt Otto Geißler 4 min Lesedauer

Anbieter zum Thema

Serverlose Architekturen sind ein vielversprechender Trend für cloudbasierte Anwendungen, aber nicht in jedem Fall immer die richtige Entscheidung. Allzu oft gelingt es serverlosen Lösungen nicht, einen deutlichen geschäftlichen Nutzen zu bringen.

Zwar entfällt das Infrastruktur-Management beim Serverless Computing weitestgehend, doch das wirft wiederum auch Nachteile auf.
Zwar entfällt das Infrastruktur-Management beim Serverless Computing weitestgehend, doch das wirft wiederum auch Nachteile auf.
(Bild: Roman / Pixabay)

Der Ansatz des Serverless Computing ist mittlerweile ein fester Bestandteil der Cloud-Entwicklung, wenn es darum geht, eine Entwicklungsplattform für neue bzw. migrierte Cloud-Anwendungen auszuwählen. Umfragen zufolge nutzen bereits mehr als 70 Prozent der AWS-Kunden, 60 Prozent der Google-Cloud-Kunden und 50 Prozent der Microsoft-Azure-Kunden eine oder mehrere serverlose Lösungen.

Serverless Computing gilt als schnell, erfordert kaum Planung für die Infrastruktur und optimiert die Produktivität der Entwickler. Allerdings gibt es wie bei jeder Technologie auch Nachteile, die zu bedenken sind. Auf Grund der attraktiven Vorteile wagen jedoch die Anwender nicht selten viel zu früh den Schritt in Richtung Serverless, ohne sich der potenziellen Nachteile bewusst zu sein.

In der Folge sind daher einige der häufigsten Nachteile serverloser Architekturen skizziert:

Latenzen beim Kaltstart

Zu den wesentlichen Nachteilen beim Serverless Computing gehört die Kaltstart-Latenz. Im Gegensatz zu herkömmlichen Cloud-Computing-Modellen, bei denen virtuelle Maschinen oder Container vorab bereitgestellt werden, müssen serverlose Funktionen bei Bedarf instanziiert werden. Obwohl eine dynamische Skalierung ermöglicht wird, führt es zu einer gewissen Verzögerung, die man als Kaltstart bezeichnet.

Dies kann sich auf die Reaktionszeit der Anwendung auswirken und ist daher bei der Entscheidung für oder gegen Serverless Computing zu berücksichtigen. Obwohl dieses Problem bei den Anbietern im Grunde behoben wurde, kann es für bestimmte Anwendungen mit strengen Anforderungen an eine Echtzeitleistung immer noch zu Verzögerungen kommen.

Problem des Vendor-Lock-in

Ferner gilt es zu beachten, dass serverlose Anwendungen nicht problemlos zwischen Cloud-Marken portierbar sind. Jeder Cloud-Anbieter verfügt über eine individuelle serverlose Implementierung, was es schwierig macht, den Anbieter ohne wesentliche Code- und Infrastrukturänderungen zu wechseln.

Beispielsweise kann AWS Lambda mit Kinesis für Daten-Streaming-Trigger, Amazon SNS (Simple Notification Service) für Benachrichtigungen und Step Functions für die Microservice-Choreografie integriert werden, um eine durchgängig serverlose Lösung zu schaffen.

Obwohl die grundlegende FaaS-Funktion Cloud-übergreifend verfügbar ist, verliert der Anwender die Portabilität, sobald er sie in andere native Dienste integrieren möchte. Wenn der Anwender beispielsweise über einen Java-Shop verfügt, der AWS-Lambda verwendet, kann er sein FaaS nicht zu Azure oder Google verschieben, ohne die gesamte Anwendung neu schreiben zu müssen, da Java noch nicht produktionsbereit ist.

Node.js ist die am weitesten verbreitete FaaS-Laufzeitumgebung in allen Clouds, aber die Laufzeitauswahl ist immer noch begrenzt und oft liegen einige Versionen hinter der neuesten Version zurück. Im Gegensatz dazu ermöglicht eine serverbasierte Anwendung Flexibilität in Bezug auf Sprache, Betriebssystem und Laufzeitversion.

Die genannten Problemstellungen können die Flexibilität eines Unternehmens einschränken und Möglichkeiten schmälern, sich an veränderte Geschäftsanforderungen anzupassen oder Wettbewerbsangebote zu nutzen. Angesichts der zunehmenden Multi-Cloud-Implementierung könnte dies eine echte Einschränkung bedeuten, die bei einer Entscheidung hinsichtlich einer serverlosen Lösung berücksichtigt werden muss.

Nachteile durch Einschränkungen

Bei einer Umstellung einer On-Premises-Anwendung auf serverlos könnte man manche Einschränkungen als positiv bewerten, da sie zu einem besseren Design führen, allerdings stellen sie dennoch Einschränkungen dar – insbesondere, wenn sie mehr Refactoring erfordern. Folgende Einschränkungen kommen am häufigsten vor:

  • Begrenzung der Ausführungszeit.
  • Kein lokaler Speicher.
  • Feste Begrenzung der Aufruf-Nutzlastgröße.
  • Keine Unterstützung für zustandsbehaftete Anwendungen.
  • Kaltstarts aufgrund der Instanziierung neuer Container während der Skalierung – was möglicherweise zu Latenz führt.
  • Mangel an lokalen Testmöglichkeiten.
  • Tool-Einschränkungen für Bereitstellung, Verwaltung und Entwicklung.
  • Parallelität und kontoweite Plattformbeschränkungen.

Überwachung, Fehlerbehebung und Tests

Mithilfe des Serverless Computing lassen sich Anwendungen in kleinere Module zerlegen. Bei einer Reihe miteinander verketteter serverloser Komponenten ist die Fähigkeit, eine Anfrage samt Antwort durchgängig zu verfolgen, von entscheidender Bedeutung. Dies könnte jedoch zu einem Problem bei der Überwachung führen.

Je größer eine serverlose Anwendung wird, desto komplexer wird die Fehlerbehebung aufgrund der Art und Weise, wie FaaS-Anwendungen funktionieren. Der Einsatz von verteilten Anwendungen bedeutet, dass sich der User viel stärker auf die Protokoll-Verfolgung verlassen muss, um die Grundursache eines Problems zurückverfolgen zu können.

Jetzt Newsletter abonnieren

Täglich die wichtigsten Infos zu Softwareentwicklung und DevOps

Mit Klick auf „Newsletter abonnieren“ erkläre ich mich mit der Verarbeitung und Nutzung meiner Daten gemäß Einwilligungserklärung (bitte aufklappen für Details) einverstanden und akzeptiere die Nutzungsbedingungen. Weitere Informationen finde ich in unserer Datenschutzerklärung.

Aufklappen für Details zu Ihrer Einwilligung

Der klassische Laufzeit-Debugger, der Introspektion bzw. zeilenweises Durchlaufen ermöglicht, ist für serverlose Anwendungen nicht möglich. Anwender müssen daher in spezielle Tools und Techniken investieren, um serverlose Anwendungen effektiv zu debuggen und zu überwachen.

Ressourcennutzung und Kosten

Serverless Computing bietet dem Anwender Potenziale für Kosteneinsparungen, da Bereitstellung und Verwaltung der Infrastruktur entfallen. Ein Over-Provisioning von Ressourcen, wie es in herkömmlichen Systemen nicht selten vorkommt, lässt sich dadurch ebenfalls vermeiden. Jedoch gestaltet sich die Verwaltung der Kosten für serverlose Systeme durch eine dynamische Zuweisung der Ressourcen hinter den Kulissen ebenfalls als problematisch.

Bei komplexer werdenden Anwendungen kann das Volumen der Prozesse und der damit verbundenen Ressourcen ebenfalls zunehmen, was wiederum unerwartete Überläufe nach sich ziehen kann. Aus diesen Gründen sollten Anwender die Ressourcennutzung genau überwachen und Strategien für ein sinnvolles Kostenmanagement entwickeln, um Überraschungen zu vermeiden.

In der Regel geschieht dies allerdings in der Praxis nicht im ausreichenden Umfang, wodurch serverlose Lösungen an Effektivität verlieren. Daher könnten in den beschriebenen Fällen viele Unternehmen ihre Anwendungen kostenoptimierter betreiben, indem sie für einige Anwendungen einen nicht serverlosen Weg wählen.

(ID:49781202)