Blog
Kubernetes vs. Serverless: Wann sollte man es verwenden und wie soll man wählen? — Teil 1

Kubernetes vs. Serverless: Wann sollte man es verwenden und wie soll man wählen? — Teil 1

Alex Ivanov
June 2, 2021

Einführung

Wenn es heutzutage um die Entwicklung und das Hosting einer modernen Anwendung — oder sogar der gesamten IT-Infrastruktur — geht, gibt es zwei Schlagworte, die man ständig hört: Kubernetes (k8s) und Serverless. Einige Aktivisten der Diskussion zwischen k8s und Serverless sagen sogar, dass das eine langsam das andere ersetzt, was uns zum Lächeln bringt. Der Grund für unsere Reaktion ist einfach: Jeder einzelne Geschäftsfall erfordert eine individuell ausgewählte, gut geplante und überschaubare Lösung, die mit allen möglichen Mitteln erstellt wird.

Sowohl Unternehmen als auch Entwickler legen Wert darauf, wie effizient jede spezifische Technologie zur Erreichung der Geschäftsziele eingesetzt werden kann und wie die Zeit- und Ressourcenkosten reduziert werden können.

Schauen wir uns die Analyse von Serverless im Vergleich zu Kubernetes genauer an, schauen wir uns an, was sie gemeinsam haben und was anders ist, und warum sollten Sie aus geschäftlicher Sicht oder bei Entwicklungsaufgaben das eine dem anderen vorziehen. Unser Artikel gibt Ihnen die Möglichkeit, sowohl Kubernetes als auch Serverless kennenzulernen und erklärt, wie Sie mit Bedacht zwischen ihnen wählen können.

Grundlegendes Glossar oder Auffrischungskurs in Begriffen

Infrastruktur - eine Reihe grundlegender Einrichtungen und Systeme, die die nachhaltige Funktionalität Ihrer Anwendungen unterstützen.

Behälter - eine isolierte Umgebung, in der eine Anwendung auf der Grundlage aller notwendigen Komponenten und Abhängigkeiten ausgeführt werden kann, also Containerisierung - der Prozess, eine App in Container zu packen und sie mit allen notwendigen Dingen zu füllen, damit sie einwandfrei funktioniert.

Mikrodienste - ist ein Entwurfsansatz für komplexe Programme oder Dienste, bei dem das System in unabhängige kleine Dienste und Komponenten aufgeteilt wird.

Kubernetes (k8s) - ist ein Tool für die Verwaltung und den Start von containerisierten Apps in den Frameworks der deklarierten Konfiguration von Containern.

Serverlos - ist ein Konzept der Verwaltung von Rechenressourcen, bei dem Sie nur Rechenzeit für Ihre Funktionen in der Cloud kaufen und alles andere einem Cloud-Anbieter Kopfschmerzen bereitet.

FPaaS (Funktionsplattform als Service) - Die Bereitstellung einer Reihe miteinander verbundener Funktionen für die Datenverarbeitung, Datenverarbeitung und Speicherung auf der Plattform (insbesondere einer Cloud-Plattform) wurde von AWS Lambda populär gemacht.

IaaS (Infrastruktur als Service) - Bereitstellung virtualisierter Cloud-Computing-Ressourcen, die von Cloud-Anbietern verbunden und verwaltet werden, um Ihre virtuellen Maschinen auszuführen.

Die Gründe, warum k8s und serverlose Technologien auf den Markt kamen

Machen wir eine kleine Reise zurück ins Jahr 2013. Google musste sich mit den steigenden Verkehrslasten seiner Dienste wie Gmail, Maps usw. auseinandersetzen und nutzte die Containerisierung mithilfe von Ingenieuren, die Project Seven oder Borg entwickelten.

Ein Startup aus dem sonnigen San Francisco namens Dotcloud präsentierte Docker auf der Pycon-Konferenz 2013. Docker wurde zu einem bahnbrechenden Tool für die Verwaltung von Software-Containern, das einfach von der Befehlszeile aus zu bedienen war. In einem Jahr veröffentlichte Google Kubernetes als Open-Source-Code, der in Go geschrieben wurde, einem Remake des alten Borg, das in C++ geschrieben wurde. Es führt zu einem der größten Kubernetes-Profis — es ist immer noch eine Open-Source-Technologie mit einer aktiven Community, breiten Standards und einer Vielzahl von Diensten und Tools, die auf k8s basieren.

Alle waren begeistert, und 2018 k8s-Projekt auf GitHub wurde zu einem der beliebtesten Tools unter Entwicklern, und jetzt, im Jahr 2020, ist es ein bekannter Industriestandard. Da es kostenlos, portabel, erweiterbar und in der Lage ist, deklarative Konfigurationen zu unterstützen, eroberte es schnell die Herzen und Gedanken von DevOps-Ingenieuren und Unternehmen.

Warum so?

Denn in den letzten 10 Jahren sind immer mehr Entwickler zu dem neuen Paradigma der DevOps-Kultur gekommen, das an der Idee des Schmuggels von Grenzen zwischen Entwicklungs- und Betriebsteams festhält, um stabilere Arbeit, kürzere Veröffentlichungszeiten, schnellere Problembehebung, weniger Sicherheitslücken usw. zu erreichen.

DevOps lifecycle.
DevOps-Lebenszyklus.

In Unternehmen, die mit der Einführung von DevOps-Ansätzen begannen, veränderte sich die gesamte Infrastruktur: Alles zielte darauf ab, die Kosten zu senken, die Sicherheit zu verbessern und die Implementierung von Änderungen zu vereinfachen. Und beides Behältnisse und Mikrodienste sind Technologien, die begonnen haben, den Bedürfnissen schwankender Teams gerecht zu werden. Container geben DevOps-Ingenieuren die Möglichkeit, die Apps ohne Einschränkungen in Bezug auf Sprache, Plattform oder Umgebung auszuführen, indem sie lediglich ein vorheriges detailliertes Setup korrigieren. Microservices bilden riesige Systeme mit vertikaler Hierarchie und Abhängigkeiten zu einer gut vernetzten horizontalen Masse separat gestarteter Suiten nach, die dieselbe Aufgabe wie die vorherige Infrastruktur ausführen.

Da beide Technologien von immer mehr Unternehmen implementiert wurden, nutzten und verbesserten Entwickler k8s als das beliebteste Tool für das Containermanagement. Eines der positivsten Dinge an Kubernetes ist sein deklarativer Charakter: Ein Entwickler beschreibt die Umgebung einmal — und Kubernetes sammelt alles, was benötigt wird: Ressourcen, Bibliotheken, benötigte APIs, Abhängigkeiten usw.

Dank des deklarativen Charakters des Dienstes kommen Programmierer der Implementierung von Microservices näher und befassen sich mit kleineren Aufgaben, die mit Agile einfacher erledigt werden können. Die erste dieser Infrastrukturänderungen kann nicht nur auf realen Servern stattfinden, sondern auch auf virtuellen oder lokalen Maschinen und überall dort, wo Kubernetes gestartet wird.

Dies ist der Moment, in dem Cloud-Technologien Unternehmen einige Einblicke ermöglichen.

Als Unternehmen begannen, auf die Cloud umzusteigen und sich dort niederzulassen, stellten sie fest, dass ihre Apps oder Dienste nur dann wettbewerbsfähig und stabiler als andere sind, wenn sie eine Möglichkeit finden, auf die spitzen Aktivitäten von Traffic oder Anfragen zu reagieren. Und verringern Sie sogar das Volumen der verfügbaren Ressourcen, wenn sie derzeit nicht genutzt werden. Dies wird die Kosten für Apps in der Cloud drastisch senken.

Außerdem unterteilen viele Unternehmen ihre Apps und Programme auf die grundlegenden linearen oder baumartigen Eventstrukturen, und sie benötigen sie, um sie irgendwo billig und effizient laufen zu lassen. Und immer gibt es Leute, die gerne so einfache Programme erstellen, dass ihre Funktionsübersicht an die A4-Liste angepasst werden kann. Aus diesen Umständen entstand Serverless als Softwarearchitekturstil.

Lassen Sie uns nach dieser kurzen historischen Reise in jede Technologie einzeln eintauchen und die fragwürdigen Vor- und Nachteile von Kubernetes im Vergleich zu den Vor- und Nachteilen von Serverless durchgehen.

Mehr zu Kubernetes

Schauen wir uns an, wie diese Technologie funktioniert, um Ihnen mehr Hintergrundinformationen zur Bewertung der Vor- und Nachteile von Kubernetes zu geben.

Sie können k8s buchstäblich überall einrichten. Es unterstützt eine Vielzahl von Cloud-Anbietern auf der ganzen Welt und ist einer der Hauptvorteile von Kubernetes. In der Produktion würde die Plattform normalerweise aus einer Steuerungsebenenkomponente bestehen, die sich mit der Clusterverwaltung von k8s und den Worker-Nodes zur Ausführung Ihrer Anwendungs-Workloads befasst.

Wenn Sie in der Cloud gehostet werden, könnten Sie nicht nur die gesamten k8s-Cluster-on-VMs-Dienste (IaaS) hosten, sondern auch entscheiden, einen Teil der Installation, Verwaltung und Unterstützung der Master-Nodes und der gesamten „Cluster-Kontrollebene“ an den Cloud-Anbieter auszulagern und sich auf das zu konzentrieren, was für Ihre Anwendungen wirklich wichtig ist.

Typical Kubernetes project structure
Typische Kubernetes-Projektstruktur. Quelle

Diese Option wird als „Managed Kubernetes Service“ bezeichnet und wird auf den Big Three durch Elastic Kubernetes Service (AWS), Azure Kubernetes Service (Azure) und Google Kubernetes Service (GCP) repräsentiert. Normalerweise würde ein Anbieter eine geringe Gebühr verlangen, um einen Kubernetes-Cluster für Sie zu betreiben und zu verwalten. Auf AWS kostet das normalerweise 0,10 USD/Stunde.

Und das ist noch nicht alles. Sie werden eine Reihe von Vor- und Nachteilen von Kubernetes finden, die für Entwickler fraglich sind, da Sie auf der einen Seite alles für Ihre individuellen Bedürfnisse auswählen können und auf der anderen Seite möchten Sie es delegieren und nicht zu viel darüber nachdenken:

  • Eine API zur Verwaltung Ihrer Cluster- und Container-Workloads;
  • DB zum Speichern der Cluster- und Container-Workload-Konfiguration;
  • Speicher- und Netzwerk-Plug-ins zur Bereitstellung von softwaredefiniertem Speicher und einem Netzwerk für den Betrieb Ihres Clusters und der darauf ausgeführten Anwendungen;
  • Kern-DNS-Implementierung zur Unterstützung der Namensauflösung;
  • Authentifizierung, Lastenausgleich, Skalierungsmechanismen, Sonden.

Wie auch immer, es sieht ein bisschen riesig aus, nicht wahr? Das ist einer der berühmten Kubernetes-Nachteile, die Entwickler oder Unternehmen abschrecken, die anfangen zu glauben, dass es nur für große internationale Unternehmen ist. Oder Sie müssen wirklich reich sein, um diese Art von Tool verwenden zu können.

Nun, um ehrlich zu sein, einer der versteckten Nachteile von Kubernetes ist, dass die Verfügbarkeit eines vollwertigen Tools etwas teuer sein kann. Aber neben den Vorteilen von Kubernetes für Firmenkunden lohnt es sich, in diese Ausgaben zu investieren.

Wenn Sie die berühmten K8s ausprobieren, spüren Sie sofort den Unterschied, wenn Sie die Vorteile von Kubernetes nutzen, wie zum Beispiel Skalierbarkeit. Als Entwickler können Sie mit der Nutzung von Kubernetes beginnen, indem Sie es in Sekundenschnelle installieren und Mikroinstallationen von k8s wie „minikube“ oder „kind“ auf Ihrem eigenen Laptop zusätzlich zu Docker ausführen. Als Unternehmen können Sie einen Kubernetes-Cluster in Ihren eigenen Einrichtungen mit Reihen von Racks betreiben, die mit leistungsstarken Servern mit bis zu 5.000 Knoten pro Cluster ausgestattet sind.

Wissen Sie, welche Vorteile die Verwendung von Kubernetes aus der Skalierbarkeit hat? Es bietet einen schnellen Start und plattformübergreifende Funktionen. Wir werden sie detaillierter beschreiben und dann die Geschäftsvorteile von Kubernetes erörtern.

Was würden Sie wirklich zusätzlich zu Ihrer k8s-Infrastruktur benötigen?

Für einen Produktionsfall möchten Sie, dass Ihre Kubernetes-Bereitstellung ausgereift sowie einfach zu verwalten und Fehler zu beheben ist. Dazu gehören wahrscheinlich Dinge wie Überwachung, Protokollierung, erhöhte Sicherheit und Backups. Es gibt eine Fülle von Lösungen, was vielleicht einer der Hauptvorteile von Kubernetes und Docker ist.

Hier ist eine Liste einiger der besten Open-Source-Technologien, die Ihre k8s-Bereitstellung ergänzen:

  • Überwachung (Prometheus/Grafana);
  • Protokollierung (Elasticsearch-Stack);
  • Zertifikatsverwaltung (Zertifikatsmanager mit automatisierten Let's Encrypt-Zertifikaten);
  • Reverse-Proxy und Load Balancing (Nginx).

Nachdem all diese Dinge vorbereitet sind, verfügen Sie über eine sorgfältig ausgearbeitete Infrastruktur, die alle Vorteile von Kubernetes nutzt. Aber um objektiver zu sein, wissen wir, wie man alle Nachteile von Kubernetes beschreibt, da Dysnix seit 2016 damit arbeitet.

Lassen Sie uns mit unserem Teil Serverless fortfahren, in dem wir die wichtigsten Details zu Serverless besprechen, insbesondere die Nachteile und Vorteile von Serverless.

Mehr zu Serverless

Serverless ist ein Cloud-Computing-Ausführungsmodell, bei dem ein Anbieter es Ihnen ermöglicht, seine Kapazitäten für eine Laufzeit zu nutzen und Maschinenressourcen nach Bedarf zuzuweisen, sodass Sie sich um die gesamte Verwaltung kümmern. Das ist einer der großen Vorteile von Serverless. Serverless setzt auf einen cloudnativen Architekturansatz für die Entwicklung, Erstellung und Ausführung Ihrer Anwendungen. Und es entfernt im Großen und Ganzen die Notwendigkeit von Ops (alles, was den operativen Teil berücksichtigt) aus dem DevOps-Paradigma.

Serverless sieht aus der Sicht des Entwicklers wie folgt aus:

  • Implementierung von Nucleus-Funktionen als Microservices;
  • Verknüpfung mit allen benötigten Anbieter- und Cloud-Diensten, wie Integrationen von Drittanbietern;
  • Alles gemeinsam verwalten und synchronisieren, basierend auf Ereignissen.

Serverless in Form von Function Platform as a Service (FPaaS) gibt es schon lange. Aber erst 2014, als Amazon seinen AWS Lambda-Service ankündigte, gewann er wirklich an Bedeutung und breite Akzeptanz bei Entwicklern und Unternehmen. Unter großen Serverless-Profis kann auch erwähnt werden, dass er schnell an Beliebtheit und großer Wertschätzung unter Entwicklern gewann. Es kam nicht an einem Tag, sondern AWS entwickelte eine Vielzahl von benachbarten Diensten wie Amazon Elastic Compute Cloud, Simple Storage Service und Amazons Simple Notification Service (SNS), um nur einige zu nennen. Durch die Erweiterung ihrer Funktionen erweiterten Entwickler ihre Möglichkeiten beim Schreiben einfacher Dienste, während sich AWS um die Überwachung von Prozessen, die Protokollierung von Ereignissen und die Skalierung der Rechenkapazität kümmert. Hier kommen alle AWS-Lambda-Profis her. Diese Strategie eignet sich gut für Webanwendungen, bei denen der Datenverkehr in einem weiten Bereich schwanken und viele Spitzen verursachen kann, was für einen Menschen wirklich schwierig zu handhaben ist. FPaaS hilft Ihnen bei dieser Herausforderung durch automatische Skalierung der Rechenleistung und elementare Einrichtungskonfiguration.

Laut Gartnerwird der Anteil der Unternehmen, die ihre Anwendungen auf FPaaS ausführen, von 20% im Jahr 2020 auf 50% im Jahr 2025 steigen.

Aber kommen wir zurück zum Punkt und sprechen über die Vor- und Nachteile von AWS Lambda. Lassen Sie uns sehen, an welche Nachteile von AWS Lambda wir uns erinnern können. Schauen wir uns die FPaaS-Struktur genauer an, und sie werden sich von selbst zeigen.

Typical Serverless Web Application
Typische serverlose Webanwendung
  1. Packen Sie Ihre Anwendung und bereiten Sie sie für die Migration vor.
  2. Laden Sie es in die Cloud hoch und zahlen Sie nur für die Anfrage.
  3. Reagieren Sie dank SNS-Warteschlangen auf Ereignisse, um Aktionen auszuführen.

Aus geschäftlicher Sicht gibt es keinen Grund zur Sorge: Wenn niemand Ihre App nutzt, zahlen Sie nicht für die Speicherung in der Cloud. Wenn Ihr Traffic deutlich zunimmt, wird alles automatisch skaliert. Beide Funktionen reduzieren die Kosten. Fantastisch! Was kann noch über die Vor- und Nachteile von Serverless gesagt werden?

Und hier ist ein Punkt, an dem die Serverless-Betrüger zurückschlagen, denn in einem magischen Moment stellen Sie möglicherweise fest, dass Ihr Cloud-Anbieter Ihre erforderlichen Drittanbieterdienste nicht einhält. Azure, GCP oder AWS sind berühmt für ihre Cloud-Dienste, aber im Paket an Integrationen finden Sie verschiedene Stapel von Diensten. Sie könnten sagen, dass es eine Frage der Wahl ist, nicht die Vor- und Nachteile von Serverless, aber was ist, wenn keiner der Anbieter Ihr ideales Paket hat, werden Sie dann einen Teil Ihrer App-Funktionalität aufgeben, um sie serverlos zu machen? Und was ist, wenn Sie eine Vorstellung davon bekommen, wie Sie aus der Cloud aussteigen können? Es bereitet Entwicklern und der gesamten Infrastruktur immer noch Kopfschmerzen.

Daher tun Anbieter so viel wie möglich, um die von ihnen angebotenen FPaaS-Lösungen in ihr Ökosystem aller Arten von Produkten zu integrieren, die sie anbieten. Und meistens müssten Sie nur eine Reihe von verwalteten Diensten auswählen, die Ihre Anwendung benötigt, und Ihren Code mithilfe der normalerweise gut dokumentierten und entwickelten Bibliotheken, die vom FPaaS-Anbieter bereitgestellt werden, mit ihnen verbinden lassen.

Um die Suppe zu versüßen, müssen Sie sich bei Serverless nur um Folgendes kümmern:

  • Laufzeitplattform zur Auswahl (je nach FPaaS unterschiedlich);
  • Integration mit den anderen Diensten eines FPaaS-Anbieters.

Und wenn Sie eine finden, die auf Ihre App angewendet werden kann, und Sie alle Vor- und Nachteile der serverlosen Architektur zweimal vergleichen, dann haben wir einige weitere Empfehlungen, um die Cloud-Präsenz Ihrer App zu verbessern.

Eine der beliebtesten Technologien, um Ihre Entwicklungs- und Bereitstellungserfahrung bei den drei großen Cloud-Anbietern (nicht nur) zu ergänzen, ist ein serverloses Framework. Jeder Cloud-Anbieter bietet Ihnen eine bestimmte Toolbox, um die wichtigsten Aktionen auszuführen:

  • Konfigurieren und binden Sie Ihre Funktionen mit Ein- und Ausgaben (Clients/Dienste), die die Funktionen auslösen und das Ergebnis verwenden würden;
  • Verwaltung von Drittanbieter-Integrationen mit APIs;
  • Überwachen Sie Ereignisse und Verkehrsänderungen;
  • Verwalte deine digitalen Authentifizierungsgeheimnisse;
  • Protokollieren Sie den App-Status;
  • Bearbeiten und aktualisieren Sie Ihren Code und so weiter.

Zusammenfassend lässt sich sagen, dass der attraktivste Vorteil von Serverless ein einfaches „Pay-as-you-go“ -Modell und eine hervorragende Skalierbarkeit sind. Es wird immer beliebter, weil Cloud-Anbieter ihren Integrationsstapel um viele Technologien erweitert und den operativen Teil des Anwendungsmanagements minimiert haben. Dennoch können einige Fälle und Szenarien nicht in Serverless implementiert werden.

Das ist so ziemlich alles, was wir kurz über die Vor- und Nachteile einer serverlosen Architektur erwähnen könnten, und wir sind bereit, mit dem direkten Vergleich beider Technologien zu beginnen.

Fahren Sie mit Dysnix' zweitem Teil der Studie Kubernetes vs. Serverless fort.

Alex Ivanov
Senior DevOps at Dysnix
Specialized in Kubernetes, infrastructure optimization, traveling, and compliments.
Table of content
In die Zwischenablage kopiert
Fügen Sie es ein, wo immer Sie möchten