Ähnlich wie beim Gärtnern muss man auch bei der Softwareentwicklung verstehen, wie verschiedene Elemente zusammenwirken, um ein schönes, produktives Ökosystem zu schaffen. Das gab den Ausschlag dafür, das diesjährige Programm Microservices March unter das Motto „Gärtnern“ zu stellen. Wie in jedem Garten taucht auch hier immer wieder ein lästiges Unkraut in der Diskussion auf: Was ist der Unterschied zwischen Microservices und Kubernetes?

Pflanzen sind die Hauptelemente des Ökosystems eines Gartens. Sie sind die Lebewesen, aus denen Ihr Garten besteht und die zu seiner Schönheit und Funktionalität beitragen. Ebenso sind Microservices die wichtigsten Bausteine moderner Softwareanwendungen. Sie sind die einzelnen Dienste, die bestimmte Funktionen erfüllen und zusammen eine größere, komplexere Anwendung bilden.
Wie Pflanzen unterscheiden sich auch Microservices in Größe, Form und Zweck. Einige sind klein und spezialisiert und für einen einzigen Vorgang zuständig. Andere sind größer und decken ein breiteres Aufgabenspektrum ab oder bestehen aus einer Gruppe kleinerer Komponenten. Eine Erdbeerpflanze beispielsweise ist klein und bringt ausschließlich Erdbeeren hervor. Sie ähnelt damit einem Microservice, der nur Kreditkartentransaktionen verarbeitet (klein und spezialisiert). Eine vielseitigere Pflanze wie Koriander liefert nicht nur die für Salsa und Guacamole verwendeten Blätter, sondern auch Koriandersamen. Eine solche Pflanze ist mit einem Service vergleichbar, der die Benutzerauthentifizierung übernimmt (ein größerer und allgemeinerer Prozess).

Die meisten Pflanzen müssen in Erde gepflanzt werden, damit sie Nährstoffe und Feuchtigkeit aufnehmen können – bleiben ihre Wurzeln unbedeckt, sterben sie ab. Man kann sie zwar problemlos direkt in den Boden pflanzen, doch viele Gärtner entscheiden sich für die Kultivierung in Pflanzgefäßen, da sie so die Erde individuell anpassen, die Pflanzen besser vor Schädlingen schützen und sie im Garten umstellen (oder im Winter sogar ins Haus holen) können. Ähnlich verhält es sich mit Microservices: Auch für sie gibt es mehrere Bereitstellungsoptionen, wobei sie am häufigsten passenderweise in einem „Container“ untergebracht werden. Ein containerisierter Microservice enthält alles, was zum Ausführen der Anwendung benötigt wird, und lässt sich problemlos zwischen verschiedenen Laufzeitumgebungen verschieben.

Wir haben also unsere Microservices (Pflanzen) in unseren Containern (Töpfen) – aber wie stellen wir sie bereit, warten und skalieren sie? Mit Werkzeugen! Hier kommt Kubernetes ins Spiel. Kubernetes bietet zahlreiche Funktionen und Erweiterungen, die die Verwaltung und Wartung von Microservices erleichtern, und gilt als De-facto-Standard für die Container-Orchestrierung. Kubernetes ermöglicht beispielsweise automatisierten Lastenausgleich, Service Discovery und Selbstheilung (wodurch Ihren Entwicklern ein Teil der Wartungs- und Überwachungsarbeit abgenommen wird). Und was, wenn alle möchten, dass Ihre Microservices (Pflanzen) mehr produzieren? Kubernetes unterstützt die automatische Skalierung und schrittweise Updates, damit Ihre Microservice-Anwendungen reibungslos laufen.
Hinweis: Kubernetes-Alternativen wie Docker Swarm und HashiCorp Nomad bieten weitgehend dieselben Funktionen.

Wir haben dargelegt, warum Kubernetes zur Verwaltung von Microservices eingesetzt werden sollte, damit Anwendungen nicht unkontrolliert wuchern. Kubernetes und Container sind jedoch nicht immer erforderlich. Je nach Komplexität Ihrer Anwendung können Sie sich stattdessen für eine herkömmliche Plattform mit virtuellen (oder sogar physischen) Maschinen entscheiden, die sich ebenfalls mithilfe von Automatisierungstools bereitstellen lässt. Diese Tools bieten zwar nicht dasselbe Maß an Automatisierung und Skalierbarkeit wie Kubernetes, doch bei weniger komplexen oder unkritischen Anwendungen ist dieser Kompromiss möglicherweise vertretbar. Eine weitere Möglichkeit sind Serverless-Computing-Plattformen (wie AWS Lambda), mit denen Sie Ihren Microservices-Code als Reaktion auf Ereignisse ausführen können, ohne sich um die zugrunde liegende Infrastruktur kümmern zu müssen.

Erfahrene Gärtner wissen, dass Mischkultur – zum Beispiel Ringelblumen neben Tomaten – Ressourcen besser nutzt und zu einem gesünderen Garten beiträgt. Ebenso bietet Kubernetes eine Vielzahl von Funktionen und Add-ons, durch die es sich für mehr als nur die Verwaltung von Microservices eignet. Kubernetes kann beispielsweise für Anwendungen eingesetzt werden, die nicht auf Microservices basieren, etwa Machine-Learning-Modelle oder monolithische Anwendungen. Viele unserer Kunden nutzen Kubernetes zur Verwaltung von Microservices und anderen Anwendungen. Einige stellen sogar virtuelle Maschinen (VMs) innerhalb von Kubernetes bereit! Dies kann eine hervorragende Option für Unternehmen sein, die ältere monolithische Anwendungen auf eine Microservices-orientierte Architektur umstellen.
Der Sache auf den Grund gehen
Wir hoffen, dass Sie aus diesem Beitrag zwei Dinge mitnehmen (abgesehen von der Lust, Ihre örtliche Gärtnerei zu besuchen):
- Nicht alles, was in Kubernetes bereitgestellt wird, ist ein Microservice. Die Funktionen und Add-ons von Kubernetes machen es zu einem nützlichen Werkzeug für eine Vielzahl von Ökosystemen.
- Microservices müssen nicht immer mit Kubernetes verwaltet werden. Manche Anwendungen gedeihen mit alternativen Tools und einem „Wildwuchs“-Ansatz.
In den folgenden Ressourcen finden Sie weitere Informationen zu den Grundlagen von Microservices:
- Blog – Best Practices für die Konfiguration von Microservices-Apps
- Webinar auf Abruf – Grundlagen von Microservices
- Training auf Abruf – Microservices März 2022: Kubernetes-Netzwerke
- Training auf Abruf – Microservices März 2023: Mit der Bereitstellung von Microservices beginnen
Über den Autor

Ähnliche Blogbeiträge
Die Zukunft von NGINX: Zurück zu unseren Open-Source-Wurzeln
Beim NGINX Sprint 2022 besinnen wir uns auf unsere Open-Source-Wurzeln. Erfahren Sie mehr über die Initiativen, die wir im kommenden Jahr verfolgen, und teilen Sie uns mit, was Sie sich wünschen.

Ein Leitfaden zur Auswahl eines Ingress-Controllers, Teil 1: Ermitteln Sie Ihre Anforderungen
Ein Ingress-Controller kann eines der leistungsstärksten Tools in Ihrem Kubernetes-Stack sein. Erfahren Sie, wie Sie Ihre Ingress-Anforderungen ermitteln, um die beste Option auszuwählen.
Bereitstellung des NGINX Ingress Controllers auf Amazon EKS: So haben wir getestet
Wir haben kürzlich den Lösungsleitfaden zum NGINX Ingress Controller um Empfehlungen zur Dimensionierung für Amazon Elastic Kubernetes Service (EKS) ergänzt. In diesem Blogbeitrag erläutern wir, wie wir diese Empfehlungen erarbeitet haben, und stellen Ihnen alle Informationen zur Verfügung, die Sie benötigen, um selbst ähnliche Tests durchzuführen.

Protokollierung des Datenverkehrs zwischen NGINX und Upstream-Servern bei CDN77
Bei der Fehlersuche bei Datenverkehrsproblemen zwischen NGINX und Upstream-Servern konnte CDN77 die benötigten Daten nur aus dem Fehlerprotokoll mit aktivierter Debug-Ausgabe beziehen, was die Leistung beeinträchtigt und riesige Dateien erzeugt. Daher entwickelte das Team ein neues benutzerdefiniertes Modul, das ausschließlich die benötigten Daten protokolliert.
Ankündigung von NGINX Plus R16
NGINX Plus R16 ist eine einheitliche, elastische Ingress- und Egress-Schicht für Anwendungen, die die Funktionen eines Load Balancers, API-Gateways und einer WAF vereint und neue Features wie clusterfähige Ratenbegrenzung, Schlüssel-Wert-Speicher, „Random with Two Choices“, verbessertes UDP-Load-Balancing und vieles mehr bietet.
5 Gründe für den Umstieg auf softwarebasiertes Load Balancing
Entdecken Sie fünf Gründe für den Wechsel zu einem softwarebasierten Load Balancer wie NGINX Plus, darunter Kosteneinsparungen, die Einführung von DevOps und eine einheitliche Lösung für alle Umgebungen.