Wie bei der Gartenarbeit ist auch bei der Softwareentwicklung ein Verständnis dafür erforderlich, wie verschiedene Elemente zusammenwirken, um ein schönes, produktives Ökosystem zu schaffen. Dies war der Auslöser für unsere Wahl eines Gartenthemas für das diesjährige Microservices-März -Programm. Wie in jedem Garten taucht auch hier immer wieder ein problematisches Unkraut in der Diskussion auf: Was ist der Unterschied zwischen Microservices und Kubernetes?
Pflanzen sind die Hauptelemente des Ökosystems eines Gartens. Sie sind die lebenden Organismen, aus denen Ihr Garten besteht und die zu seiner Schönheit und Funktionalität beitragen. Ebenso sind Microservices die wichtigsten Bausteine moderner Softwareanwendungen . Dabei handelt es sich um einzelne Dienste, die bestimmte Funktionen ausführen und zusammenarbeiten, um eine größere, komplexere Anwendung zu erstellen.
Wie Pflanzen variieren Microservices in Größe, Form und Zweck. Einige sind klein und spezialisiert und mit einer einzigen Operation beauftragt. Andere sind größer, funktionieren eher allgemeiner Natur oder bestehen aus einer Gruppe kleinerer Komponenten. Eine Erdbeerpflanze ist beispielsweise klein und bringt nur Erdbeeren hervor. Dies ist vergleichbar mit einem Mikroservice, der nur Kreditkartentransaktionen (klein und spezialisiert) verarbeitet. Eine allgemeinere Pflanze wie Koriander produziert nicht nur das Blattgemüse, das in Salsa und Guacamole verwendet wird, sondern auch Koriandersamen. Diese Art von Anlage ähnelt einem Dienst, der die Benutzerauthentifizierung (ein größerer und allgemeinerer Prozess) handhabt.
Die meisten Pflanzen müssen in Erde gepflanzt werden, damit sie Nährstoffe und Feuchtigkeit aufnehmen können. Lassen Sie sie wurzelnackt, sterben sie. Obwohl es völlig in Ordnung ist, die Pflanzen direkt in die Erde zu pflanzen, entscheiden sich viele Gärtner für die Containergärtnerei, weil sie so den Boden individuell anpassen, Schädlinge besser abwehren und die Pflanzen im Garten umstellen (oder im Winter sogar drinnen lassen) können. Ebenso haben Sie mehrere Möglichkeiten, Microservices zu platzieren. Am gebräuchlichsten ist die Platzierung in einem „Container“. Ein containerisierter Microservice enthält alles, was Sie zum Ausführen der App benötigen, und lässt sich problemlos zwischen Laufzeitumgebungen portieren.
Wir haben also unsere Microservices (Pflanzen) in unseren Containern (Töpfen), aber wie stellen wir sie bereit, wie warten und skalieren wir sie? Mit Werkzeug! Geben Sie Kubernetes ein. Kubernetes bietet viele Funktionen und Add-Ons, die die Verwaltung und Wartung von Microservices erleichtern, und gilt als das De-facto-Tool für die Container-Orchestrierung. Kubernetes bietet beispielsweise automatisierten Lastenausgleich, Diensterkennung und Selbstheilungsfunktionen (um Ihren Entwicklern einen Teil der Wartungs- und Überwachungsarbeit abzunehmen). Und wenn alle möchten, dass Ihre Microservices (Fabriken) mehr produzieren? Kubernetes unterstützt automatische Skalierung und fortlaufende Updates, damit Ihre Microservice-Anwendungen reibungslos laufen.
Notiz: Kubernetes-Alternativen wie Docker Swarm und HashiCorp Nomad bieten weitgehend die gleiche Funktionalität.
Wir haben dargelegt, warum Kubernetes für die Verwaltung von Mikroservices und zur Verhinderung des unkontrollierten Wachstums von Anwendungen sinnvoll ist. Aber Kubernetes und Container sind nicht immer notwendig. Abhängig von der Komplexität Ihrer Anwendung möchten Sie möglicherweise stattdessen eine herkömmliche virtuelle (oder sogar physische) Maschinenplattform verwenden, die weiterhin mithilfe von Automatisierungstools bereitgestellt oder bereitgestellt werden kann. Diese Tools bieten zwar nicht denselben Grad an Automatisierung und Skalierbarkeit wie Kubernetes, aber bei weniger komplizierten oder nicht kritischen Apps ist dieser Kompromiss für Sie möglicherweise in Ordnung. Eine weitere Möglichkeit besteht darin, serverlose Computing-Plattformen (wie AWS Lambda ) zu verwenden, 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 Mischkulturen – zum Beispiel von Ringelblumen neben Tomaten – die Ressourcen besser nutzen und zu einem gesünderen Garten beitragen. Ebenso bietet Kubernetes eine breite Palette an Funktionen und Add-Ons, die es für mehr als nur die Verwaltung von Microservices geeignet machen. Kubernetes kann beispielsweise für Nicht-Microservices-Apps (wie etwa Machine-Learning-Modelle oder Monolithen) verwendet werden. Wir sehen, dass viele Kunden Kubernetes verwenden, um Microservices und andere Anwendungen zu verwalten, und einige stellen sogar virtuelle Maschinen (VMs) in Kubernetes bereit! Dies kann eine großartige Option für Organisationen sein, die ältere monolithische Apps auf eine auf Mikrodienste ausgerichtete Architektur umstellen.
Wir hoffen, dass Sie aus diesem Beitrag zwei Dinge mitnehmen (abgesehen von der Lust, Ihre örtliche Gärtnerei zu besuchen):
Weitere Einzelheiten zu den Grundlagen von Microservices finden Sie in den folgenden Ressourcen:
„Dieser Blogbeitrag kann auf Produkte verweisen, die nicht mehr verfügbar und/oder nicht mehr unterstützt werden. Die aktuellsten Informationen zu verfügbaren F5 NGINX-Produkten und -Lösungen finden Sie in unserer NGINX-Produktfamilie . NGINX ist jetzt Teil von F5. Alle vorherigen NGINX.com-Links werden auf ähnliche NGINX-Inhalte auf F5.com umgeleitet."