PCG logo
Artikel

Cloud Computing: Server oder Serverless

Illustration of office workers and computer screen with paper clouds hanging above them | Miracle Mill

Falls Sie in den vergangenen Jahren mit Softwareentwicklern zu tun hatten (oder sich einfach nur in eine der etwas «nerdigeren» Ecken dieser Welt verirrt haben), werden Sie vielleicht gehört haben, wie begeistert sie über „serverless“ gesprochen haben. Klar, es handelt sich dabei um etwas, das keine Server erfordert, aber was genau ist „serverless“? Serverlose Restaurants? Serverlose Banken? Man mag Ihnen diese Frage verzeihen. In Wirklichkeit geht es aber um serverlose Anwendungsentwicklung und damit um etwas, was manche als Revolution in der Softwareproduktion bezeichnen würden.

Redhat beschreibt serverless computing als „ein cloudbasiertes Entwicklungsmodell, das es Entwicklern ermöglicht, Anwendungen zu erstellen und auszuführen, ohne Server verwalten zu müssen“. Der Widerspruch in diesem Begriff fällt sofort ins Auge: serverless bedeutet nicht, dass es keine Server gibt. Es bedeutet nur, dass sich die Entwickler und Kunden nicht mehr um sie kümmern müssen, sondern dass alles vom Cloud-Anbieter übernommen wird.

Eine sehr, sehr kurze Zusammenfassung der serverbasierten Entwicklung

Herkömmliche Softwareentwicklung benötigt meistens einen Raum voller Kabel und Computer, auf denen Ihre Dateien gespeichert sind und auf denen vielleicht auch Ihre Website gehostet wird. Benutzer und Entwickler sind mit diesen Servern entweder über LAN oder über ein drahtloses Netzwerk verbunden, in der Gewissheit, dass Ihre Software direkt nebenan in der sicheren Umgebung des lokalen Netzwerks gespeichert ist.

Die meisten Cloud Computing-Dienste versuchen, diesen Ansatz zu imitieren, indem sie Speicher und Server bereitstellen, die für den Endbenutzer auf ähnliche Weise funktionieren. Die Daten selbst befinden sich jedoch an einem anderen Ort im Internet - und vielleicht sogar an vielen verschiedenen Orten.

Der Cloud-Betrieb eröffnet eine Reihe neuer Möglichkeiten und Herausforderungen, aber die Konzepte von Laufwerken, Dateien und Repositorien sind immer noch weitgehend dieselben. Wenn Sie einen virtuellen Server mieten, bekommen Sie auch einen. Natürlich können Sie ihn erweitern oder verkleinern, doch auch einen virtuellen Server müssen Sie dafür herunterfahren, modifizieren und neustarten. Ein Server bleibt ein Server.

Serverless, wie es so schön heißt, ist ein ganz anderes Kaliber.

Vorteile von Serverless

Die Serverless Working Group der Cloud Native Computing Foundation fasst die Sachlage in einer Erklärung perfekt zusammen:

„Serverless Computing bedeutet nicht, dass wir keine Server mehr verwenden, um Code zu hosten und auszuführen, genauso wenig bedeutet es, dass Operations Engineers fortan obsolet sind. Vielmehr bezieht sich der Begriff auf die Tatsache, dass die Nutzer von serverless Computing keine Zeit und Ressourcen mehr für die Bereitstellung von Servern, Wartung, Updates, Skalierung und Kapazitätsplanung aufwenden müssen. Stattdessen werden all diese Aufgaben und Funktionen von einer serverless Plattform übernommen und vollständig von den Entwicklern und IT-/Betriebsteams abgegrenzt. Infolgedessen können sich Entwickler auf das Schreiben der Business-Logik ihrer Anwendungen konzentrieren.“

Dank eines Serverless-Ansatzes können Sie als Entwickler den zeitintensiven Aufwand für die Verwaltung von Servern, Infrastruktur und den Teilen der Anwendung, die für Ihre Kunden weniger wertvoll sind, minimieren. Der Serverless-Ansatz vereinfacht die Bereitstellung neuer Funktionen in Anwendungen, den Start von Experimenten und eine schnellere Bereitstellung durch Ihr Team.

Die wichtigsten Vorteile im Hinblick auf die Geschäftsziele haben wir in unserem Artikel über die „5 Vorteile der Entwicklung von serverless Anwendungen“ wie folgt zusammengefasst:

  • Schneller von der Idee zum Markt
  • Senkung Ihrer Kosten
  • Einfache Erstellung besserer Anwendungen
  • Bessere Skalierbarkeit
  • Hohe Verfügbarkeit

All dies ergibt sich aus den zentralen Prinzipien der Verschlankung und Vereinfachung von Prozessen. Wie Jason Katzer in «Learning Serverless» (O'Reilly, 2020) erklärt: „Es bedarf keines konkreten Anwendungsfalles für serverless, doch einige Beispiele für Aufgaben, welche die geringsten Reibungsverluste und den größten Nutzen bei der Verwendung von serverless aufweisen, sind:

  1. Aufgaben, die in kleine unabhängige Arbeitseinheiten aufgeteilt werden können
  2. Aufgaben, die entweder seltene oder unvorhersehbare Nutzungsmuster aufweisen
  3. Hintergrundarbeit oder System-zu-System-Kommunikation, die nicht durch Kaltstarts beeinträchtigt wird“
Illustration of office workers and computer screen with paper clouds hanging above them | Miracle Mill

Nachteile von serverless

Der obige Hinweis auf „Kaltstarts“ sollte als Hinweis auf Situationen dienen, in denen die Anwendung des serverless Modells möglicherweise nicht ganz geeignet ist. Katzer erklärt weiter, dass „Serverless nicht geeignet ist, wenn:

  1. Aufgaben rechenintensiv sind
  2. Aufgaben eine lange Laufzeit haben, die nicht in kleinere Arbeitslasten aufgeteilt werden kann
  3. Sie zusätzliche Funktionen benötigen, die derzeit von den Cloud-Anbietern nicht unterstützt werden”

Technische Einschränkungen

Es würde den Rahmen dieses Artikels sprengen, auf alle technischen Limitierungen im Detail einzugehen, doch die folgenden Beispiele vermitteln einen Eindruck von den Problemen und ihren möglichen Lösungen.

  1. Kaltstarts. Da Sie nur für das bezahlen, was Sie nutzen, und die Bereitstellung von Diensten mit der Nachfrage wächst und schrumpft, verhalten sich Serverless-Anwendungen so, als würden Sie an einem eiskalten Morgen versuchen, ein Auto zu starten. So kann es einige Zeit dauern, bis eine Funktion bei ihrer ersten Ausführung die erforderlichen Ressourcen bereitstellt. Wir reden zwar nur von einigen Millisekunden, doch bei manchen Vorgängen, die eine superschnelle Antwort benötigen, könnte es zu Problemen kommen.
  2. Computezeitlimits. Serverless-Plattformen begrenzen in der Regel die Dauer von Rechenoperationen, aber auch das ändert sich mit der Zeit. Der beste Weg, um hier Probleme zu lösen, ist, die Dinge in kleinere Teile zu zerlegen und mit Blick auf serverless zu entwerfen.
  3. Netzwerkprobleme. In einigen konkreten Fällen müssen Sie Entscheidungen über den Betrieb einer Virtual Private Cloud treffen, wobei serverless in diesen Fällen möglicherweise nicht die richtige Wahl ist. Das kommt zwar nicht häufig vor, aber man sollte sich dessen bewusst sein.
  4. Debugging. Viele Entwicklerteams halten an traditionellen und ausgefeilten Debugging-Methoden fest und sehen der Reproduktion von Fehlern in einer serverless Umgebung mitunter skeptisch entgegen. Allerdings schreitet die Entwicklung von Tools schnell voran, um dieses Defizit auszugleichen, und die grössere Bedeutung, die einer guten Architektur beigemessen wird, dürfte dazu führen, dass dies im Allgemeinen weniger ein Problem darstellt.

Organisatorische Bedenken

Nicht alle potenziellen Probleme sind rein technischer Natur und können daher durch Änderungen in der Organisation und im Ansatz ebenso wie in der Technologie gelöst werden:

  1. Bindung an Anbieter. Sollten Sie Ihr Entwicklungssystem auf Amazon Web Services oder Microsoft Azure aufbauen wollen, kommt natürlich die Sorge auf, an diesen einen Provider gebunden zu sein. Kurzfristig mögen Sie damit Recht haben, aber nicht mehr als mit jedem anderen proprietären System, das Sie verwenden. In gewisser Weise könnte die zunehmende Bedeutung einer guten Architektur auch bedeuten, dass Sie langfristig weniger eingeschränkt sind, weil Sie Ihre Anwendungen besser verstehen und das konzeptionelle Denken auf andere Bereiche übertragen können - sogar auf zukünftige Serviceangebote, die noch nicht existieren!
  2. Potenziell höhere Kosten. Natürlich können Fehler innerhalb einer Serverless-Umgebung zu höheren Kosten führen als bei einer serverbasierten Lösung. Das ist besonders ärgerlich, wenn die Umstellung in erster Linie aus Kostengründen erfolgt. Eine mangelhaft geschriebene Funktion könnte Ihrem PayAsYouGo-Account theoretisch teuer zu stehen kommen, bevor Sie es überhaupt merken. Zum Glück gibt es Tools, die genau dies verhindern. AWS verfügt über diverse Möglichkeiten, um das Budget einzuhalten und kostspielige Fehler zu vermeiden.
  3. Verfügbarkeit von Entwicklern. Mit dem Erfolg von serverless ist das Risiko verbunden, dass die Nachfrage zuweilen das Angebot übersteigt und es bei der Suche nach Entwicklern mit den richtigen Fähigkeiten zu Engpässen kommt. Dem müssen wir bis zu einem gewissen Grad zustimmen, denn wir haben ebenfalls viele fähige Entwickler eingestellt! Dennoch wird die zunehmende Popularität gewiss zu einem stetigen Anstieg des Angebots an Studiengängen und Hochschulabsolventen führen. Wer sich frühzeitig darauf einstellt, ist in einer besseren Position, um in Zukunft effektiv zu rekrutieren.

Schlusswort

Nachdem Sie sich einige der Vor- und Nachteile des serverless Computing angesehen haben, sollten Sie nun eine bessere Vorstellung davon haben, welchen Nutzen es für Ihr Unternehmen haben kann und unter welchen Umständen es nicht geeignet ist.

Der nächste wichtige Schritt bei jeder Umstellung besteht darin, weitere Nachforschungen anzustellen und ein gutes Verständnis für Ihre eigenen organisatorischen und technischen Anforderungen zu entwickeln. Mit einer klaren Architektur und der Bereitschaft, Ihren Ansatz zu überdenken, lassen sich viele Probleme lösen, bevor sie überhaupt entstehen.

Nachdem Sie sich einige der Vor- und Nachteile des serverless Computing angesehen haben, sollten Sie nun eine bessere Vorstellung davon haben, welchen Nutzen es für Ihr Unternehmen haben kann und unter welchen Umständen es nicht geeignet ist.

Der nächste wichtige Schritt bei jeder Umstellung besteht darin, weitere Nachforschungen anzustellen und ein gutes Verständnis für Ihre eigenen organisatorischen und technischen Anforderungen zu entwickeln. Mit einer klaren Architektur und der Bereitschaft, Ihren Ansatz zu überdenken, lassen sich viele Probleme lösen, bevor sie überhaupt entstehen.

Mittlerweile gibt es im Internet unzählige Quellen für Informationen und potenzielle Hilfe zum Thema serverless, von Reddit-Gruppen und YouTube-Tutorials bis hin zu eher proprietären Ressourcen wie dem Serverless-Bereich bei Amazon Web Services. Es versteht sich von selbst, dass eine unserer Hauptkompetenzen bei PCG darin besteht, Unternehmen bei der Umstellung auf serverless zu unterstützen und sicherzustellen, dass sie die bestmögliche Lösung erhalten.

Genutzte Services

Weiterlesen

Pressemeldung
PCG investiert weiter in die Cloud-native Zukunft

Wachstumsmarkt Cloud-Entwicklung: Public Cloud Group (PCG) setzt auf weiteren Ausbau und investiert in eine neue Geschäftseinheit.

Mehr erfahren
Artikel
5 Wege, wie Cloud Computing Ihr Business optimiert

Wir alle wissen, dass die Cloud großartig für Backups ist, aber wofür ist sie sonst noch gut? Hier sind 5 einfache Möglichkeiten, wie Cloud-Dienste Ihre Betriebsabläufe verbessern können.

Mehr erfahren
Artikel
Vor- und Nachteile von Cloud Computing

Viele Leute reden über die Cloud und wie grossartig sie ist, aber was sind ihre Nachteile? Wir erläutern Ihnen die Vor- und Nachteile und helfen Ihnen, eine bessere Wahl zu treffen, indem wir Ihnen einen tieferen Einblick geben.

Mehr erfahren
Artikel
Ein testgetriebener Entwicklungsansatz

Die testgetriebene Entwicklung ist eine gut etablierte Praxis für die Entwicklung von Software. Das Schreiben des Tests vor dem Code mag seltsam erscheinen, ist aber äußerst effizient.

Mehr erfahren

Gemeinsam durchstarten

United Kingdom
Arrow Down