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

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

Alex Ivanov
June 16, 2021

Kubernetes vs. Serverless — Vor- und Nachteile

Kubernetes — pros and cons

Alle Vor- und Nachteile von Kubernetes ergeben sich aus seiner Natur als multifunktionale Plattform mit unzähligen Möglichkeiten, die Sie nicht alleine oder sogar mit Ihrem Team über einen kurzen Zeitraum abdecken können.

Sie benötigen ein zusätzliches Gehirnpaar — wie Dysnix.

Serverless — pros and cons

Die Vorteile einer serverlosen Architektur sind für einige Arten von Projekten unersetzlich, aber Sie müssen wirklich sorgfältig überlegen, ob Ihre App in diese Kategorie passt.

Worin unterscheiden sie sich stark?

Kubernetes vs Serverless

Was haben sie gemeinsam?

  • Beide Tools können für einen Microservices-Ansatz verwendet werden.
  • Sie können in der Cloud gestartet werden.
  • Apps starten auf einmal (dauert ein paar Sekunden).
  • Beide Systeme funktionieren über APIs mit Tools von Drittanbietern.
  • Diese beiden Strukturen sind isolierte Umgebungen.

Überblick über die Anwendungsfälle

Okay, das war riesig, aber wir sind nur dem interessantesten Teil der Übersicht über die Anwendungsfälle näher gekommen, in dem Sie den Fall Ihrer App finden und unsere Empfehlungen sehen können.

Wann sollte man Kubernetes verwenden

Der allgemeine Grund für die Verwendung von k8s ist das Bedürfnis nach Flexibilität und das Fehlen von Problemen, wenn es um die Migration von Legacy-Projekten mit einer Vielzahl von Drittanbieter-Verbindungen und Datenströmen zur Ausführung aller Arten von Anwendungen geht, egal ob es sich um eine moderne Cloud-native verteilte Anwendung oder eine Reihe einfacher Websites mit MySQL-Datenbank handelt.

Ihre anderen möglichen Forderungen:

  • Wenn Sie Ihre App in Zukunft ständig skalieren und immer für die neuesten Innovationen bereit sein möchten.
  • Wenn Ihr Projekt mit verschiedenen Versionen — sowohl alten als auch neuen — der Software auf verschiedenen Plattformen umgehen muss. Mit Containern erhalten Sie die anpassungsfähigste und reaktionsfähigste Grundlage für die Erstellung aller Anforderungen für Ihre App.
  • Wenn Sie vor langer Zeit Legacy-Software entwickelt haben, die Sie mit einer containerisierten Umgebung modernisieren möchten, in der Erwartung, eine höhere Produktivität zu erzielen — oder wenn Sie eine monolithische App haben, die Sie in Microservices neu aufbauen möchten.
  • Sie möchten CI/CD für Ihr Projekt implementieren.
  • Sie haben zusätzliche Anforderungen in Bezug auf Sicherheit, Ressourcenzuweisung oder Administratorrichtlinien.
  • Sie haben komplexe Anwendungsanforderungen: bestimmte Programmiersprachen, die möglicherweise nicht von einem Cloud-Anbieter unterstützt werden; Low-Level-APIs wie Thread-Kontrolle; statusbehaftete Komponenten oder lang andauernde Aufgaben; starke Nutzung der JVM, insbesondere Parallelität; verteilte Systeme in Echtzeit.
  • Wenn Sie ein riesiges E-Commerce-Projekt haben, können alle Prozesse und Funktionen ohne Änderungen an der Geschäftslogik in Container umgepackt werden.
  • Ihr Team hat einen DevOps-Teil und/oder k8s-Ingenieure, sodass Sie kein zusätzliches Personal für die Einführung von k8s einstellen müssen.
  • Sie führen Ihre App derzeit vor Ort, in einer Cloud oder Hybrid auf dedizierten Servern oder VMs aus und möchten Ihre Umgebung modernisieren und optimieren.
  • Es gibt keine Möglichkeit, für Ihr Projekt an einen Anbieter gebunden zu sein.
  • Sie sind bereit, Ressourcen in k8s zu investieren, um die Kosten in Zukunft zu senken.

Wann sollten Sie Kubernetes nicht verwenden oder bedenken, dass der Prozess aufgrund der folgenden möglichen Risiken zusätzlichen Aufwand erfordern kann:

  • Selbst wenn Sie die automatische Steuerung der Skalierung für Verkehrsänderungen auf zwei Ebenen (Pods und Nodes) einrichten, kann der Reaktionsprozess auf starke Spitzen eine gewisse Zeit in Anspruch nehmen, bis die ausreichende Instanzreserve aktiviert ist. Bei einigen Projekten ist jede Sekunde wichtig, daher sollten wir diesen Punkt erwähnen. Serverlose Skalierung, z. B. Lambda & Google Function, kann übrigens auch einige Zeit in Anspruch nehmen.
  • Die Laufzeitkosten sind unvermeidlich.
  • Eine vollständige Abschaltung, wenn kein Verkehr herrscht, ist unmöglich.

Kubernetes ist eine der besten Lösungen für eine Vielzahl von Apps und Diensten: von Websites mit kleinen Datenbanken bis hin zu großen Legacy-Apps. Und selbst wenn die k8s-Infrastruktur ein größeres Team erfordert und die Einrichtung und Wartung länger dauert, wird die Vielfalt der Open-Source-Lösungen Ihre täglichen Aufgaben erheblich vereinfachen. Bei Kubernetes zahlen Sie also für mehr Kontrolle und Optionen zur Kostensenkung in einer flexiblen, aber stabilen Umgebung.

Wann sollte Serverless verwendet werden?

Um es kurz zu machen: Verwenden Sie Serverless, wenn Sie „schnell, nicht weit“ gehen müssen: schnelle Entwicklung und Bereitstellung, automatische Skalierung und eine Senkung der minimal möglichen Laufzeitkosten.

Weitere Informationen zu Anwendungsfällen für die Verwendung der serverlosen Architektur:

  • Wenn Ihr Team hauptsächlich aus Entwicklern ohne Betriebserfahrung (Netzwerk, Speicher, Überwachung usw.) besteht, Sie Ihre App-Idee jedoch schnell testen möchten. Und wenn es für den Kunden funktioniert, möchten Sie im Handumdrehen skalieren.
  • Sie haben nicht vor, zwischen Cloud-Anbietern zu migrieren oder denselben Code zu verwenden, oder Sie benötigen dies nicht.
  • Ihr Team reagiert völlig okay auf die Programmiersprachen und Tool-Einschränkungen Ihres Anbieters.
  • Sie haben das Muster von Verkehrsspitzen und -abfällen und möchten den größtmöglichen Nutzen daraus ziehen, indem Sie die Laufzeitkosten an den Punkten mit null oder niedrigem Traffic sparen.
  • Ihr Team will oder kann keine Infrastruktur für Ihre App verwalten, sondern konzentriert sich darauf, dem Endkunden den Mehrwert zu bieten.
  • Sie können plötzliche Spitzen in den monatlichen Rechnungen bewältigen. Dies kann ein Problem für Startups sein, bei denen eine hohe Cloud-Rechnung sie in Schwierigkeiten bringen könnte.
  • Ihr Budget beinhaltet keine Ausgaben für die Backend-Infrastruktur.
  • Wenn Ihre App (oder Teile davon) ereignisgesteuert ist, wird sie nicht die ganze Zeit ausgeführt.

Wann sollten Sie Serverless nicht verwenden und die Spezifität und mögliche Risiken berücksichtigen:

  • Der Verkäufer ist an sich gebunden. Das ist eine große Frage der Glaubwürdigkeit. Und wenn Sie Kubernetes mit AWS Lambda vergleichen, gewinnen Sie vielleicht ein anderes Maß an Vertrauen in sie, und das wird Ihre Entscheidung beeinflussen... Aber trotzdem schränkt jeder Cloud-Anbieter Ihre Eventquellen, Programmiersprachen und Ihren Appetit auf Laufzeit ein. Sie sollten darauf vorbereitet sein. Und wenn Sie fest entschlossen sind, einen Anbieter zu beauftragen, wäre es sehr mühsam, zu einem anderen zu migrieren oder wieder zu On-Premise-Lösungen zurückzukehren.

Lassen Sie uns übrigens wissen, ob Lambda vs. Kubernetes ein interessantes Thema für Sie ist.

  • Kann nicht auf verteilte Echtzeit-Apps, lang andauernde Aufgaben oder Prozesse, statusbehaftete Streaming-Verarbeitung usw. angewendet werden. Ereignisse lösen die Funktionen aus und alles muss so einfach wie möglich sein, um schnell reagieren zu können. Mit einer serverlosen App können Sie Ihre Infrastruktur nicht explizit kontrollieren, um Ihre Leistung auf andere Weise zu optimieren.
  • Manchmal kann sogar Serverless teuer sein. Was ist, wenn die Anzahl der Ereignisse oder Laufzeitprozesse Ihre Erwartungen übertrifft? Und selbst wenn alles ziemlich kontrollierbar ist und Sie die Grenzen der Laufzeitkosten festlegen, kann ein Teil des Gewinns verblassen. Oder wenn Sie die Preise der Integrationen und deren Zahlungsrichtlinien berücksichtigen, könnte die endgültige Überprüfung erschreckend sein.
  • Anforderung, persistente Informationen auf der Festplatte zu speichern.
  • Unterstützung für bestimmte Protokolle (z. B. mqtt für IoT), die von der Serverless-Plattform nicht unterstützt werden.

Können Serverless und Container koexistieren und eine zuverlässige Hybridarchitektur aufbauen?

Wir werden nicht im 21. Jahrhundert leben, wenn es noch nicht jemand ausprobiert hat oder über den typischen Vergleich zwischen Kubernetes und Lambda hinausgegangen ist. In der Regel wird Ihre App in einen Teil eines Microservices-basierten Containers und in Cloud-basierte Funktionen aufgeteilt. In diesen Kombinationen ist es möglich, die Schwachstellen der einzelnen Teile zu ergänzen.

AWS Fargate gibt Ihnen die Freiheit, mit Hybridlösungen zu experimentieren, indem Sie mit Containern arbeiten können, ohne sich Gedanken über Server und Cluster machen zu müssen. Knative ist ein weiteres Beispiel, das für k8s verwendet wird. Dabei wird der serverlose Ansatz angewendet und Container im Leerlauf deaktiviert.

Teilen Sie uns in den Kommentaren mit, ob Sie mehr über hybride Tools und den dahinter stehenden Ansatz erfahren möchten.

Zusammengefasst

Wir haben den dunklen Wald der Schwächen und Vorteile der Serverless-Architektur durchforstet, uns die Vor- und Nachteile von k8s angesehen und sind zu einer Reihe von Zusammenfassungen gekommen. Auch wenn die Themen unserer Forschung für Sie völlig neu waren, hoffen wir, dass wir einige Dinge für Sie geklärt haben, insbesondere im Hinblick auf die Vorteile der serverlosen Architektur und Kubernetes im Vergleich. Außerdem wäre es ein weiterer Vergleich, wenn wir uns AWS Lambda und Kubernetes ansehen würden. Aber wie dem auch sei, alles hängt von der Struktur, den Entwicklungspräferenzen und den Ressourcen Ihres Unternehmens ab. Und um die richtige Wahl zu treffen, müssen Sie Informationen von echten Experten sowohl für k8s als auch für Serverless einholen — und vielleicht sogar von einem Drittanbieter, der sagt, dass Sie keine benötigen, um zu sehen, wie es für Sie funktioniert.

Wenn Sie ein Auto mit Schaltgetriebe haben, das gut auf Ihren Fahrstil abgestimmt ist, gewöhnen Sie sich an das Schalten und haben keine Angst vor der Kupplung. Dadurch werden Sie überall hingebracht, bis dem Auto der Treibstoff ausgeht.

Aber wenn Sie ein Auto brauchen, in das Sie einfach springen und fahren können, dann ist vielleicht ein Automatikgetriebe das Richtige für Sie.

Danke für deine Aufmerksamkeit. Bleiben wir für unsere zukünftigen Artikel in Kontakt. Falls wir noch etwas zu klären haben, kannst du uns gerne Feedback geben.

  1. FaaS oder Container — wann sollte man welche auswählen?
  2. Serverlos oder Container — was soll man wählen?
  3. Meine App skalieren: Serverlos im Vergleich zu Kubernetes | von Javier Ramos
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