Was ist eine Microservices-Architektur?
Die Microservices-Architektur bezieht sich auf eine Technik, die den modernen Entwicklern die Möglichkeit gibt, hochskalierbare, flexible Anwendungen zu entwerfen, indem die Anwendung in verschiedene Services zerlegt wird, die bestimmte Geschäftsfunktionen implementieren. Diese Services, die oft als „lose Verbindung“ bezeichnet werden, können dann unabhängig voneinander erstellt, bereitgestellt und skaliert werden.
Jeder Service kommuniziert mit anderen Services über standardisierte Schnittstellen zur Anwendungsprogrammierung (APIs), sodass die Services in verschiedenen Sprachen oder auf verschiedenen Technologien geschrieben werden können. Dies unterscheidet sich vollständig von Systemen, die als monolithische Strukturen gebaut wurden, in denen Services untrennbar miteinander verbunden waren und nur miteinander skaliert werden konnten.
Da jeder Service über eine eingeschränkte Funktionalität verfügt, ist er bezüglich Größe und Komplexität viel kleiner. Der Begriff Microservice stammt aus diesem diskreten Funktionalitätsdesign, nicht von seiner physischen Größe.
Warum eine Microservices-Architektur?
Die Microservices-Architektur ist immer beliebter geworden, da ihre modularen Eigenschaften zu Flexibilität, Skalierbarkeit und reduziertem Entwicklungsaufwand führen. Ihre Flexibilität bei der Bereitstellung und der Aufstieg cloudnativer, serverloser und Funktion als Dienstleistung-Bereitstellungsoptionen (wie AWS Lambda und Microsoft Azure Cloud Functions) haben die perfekte Umgebung geschaffen, in der Microservices in der heutigen IT-Landschaft gedeihen können. Mit diesen Cloud-Plattformen können Microservices und Funktionen von Inaktivität auf hohes Volumen und wieder zurück skaliert werden, während Kunden nur für die Rechenkapazität bezahlen, die sie nutzen.
Da Unternehmen ständig agiler sein, Engpässe reduzieren und die Lieferzeiten von Anwendungen verkürzen möchten, wird die Microservices-Architektur weiterhin immer beliebter.

Vorteile einer Microservices-Architektur
- Anwendungskomponenten können in verschiedenen Programmiersprachen erstellt werden
- Individuelle kontinuierliche Entwicklungs- und Bereitstellungs-Streams können aufrechterhalten werden
- Es können extrem skalierbare Anwendungen erstellt werden
- Die Verwendung cloudnativer Bereitstellungsoptionen für Funktionen als Service ist möglich
- Es ergeben sich oft geringere Betriebskosten
- Isolation und lose Verbindung ermöglichen unterteilte Upgrades und Verbesserungen
Anwendungsbeispiele für Microservices Architecture
- Nutzung von cloudnativen Bereitstellungsoptionen: Nutzen Sie serverlos und Funktion als Dienstleistung für effizientere und skalierbarere Abläufe.
- Migration der Funktionen von Alt-Anwendungen: Zerlegen Sie Services aus großen monolithischen Anwendungen, damit sie unabhängig gewartet und skaliert werden können.
- Nutzung der modernen Anwendungsarchitektur: Nutzen Sie ereignisbasierte, lose miteinander verbundene Microservice-Anwendungsmuster und die Möglichkeit, je nach Anwendungsfallbedarf verschiedene Programmiersprachen zu nutzen. Entscheiden Sie sich zum Beispiel für rechnerisch schwere Funktionen, Node.js, um schnelle Web-Apps usw. aufzurufen.
Was ist DevOps und warum wird das oft mit Microservices in Zusammenhang gebracht?
DevOps kann als toolorientierte Ideologie erklärt werden. Im Wesentlichen werden Tools/Technologien verwendet, um die Arbeit zu vereinfachen, die von Entwicklern geleistet werden muss. Neben verbesserten Werkzeugen trägt die Zusammenarbeit zwischen den Betriebs- und Entwicklungsteams zum schnelleren und effizienteren Abschluss von Projekten bei.
Angenommen, Sie erstellen eine Anwendung, mit der Benutzer ihre Kontostände überprüfen können. In der Vergangenheit hatte der Entwicklungszyklus der App die Entwickler oft dazu gebracht, die App zu erstellen und sie dann an das Betriebsteam zu übergeben, ohne für das Endergebnis verantwortlich zu sein. Es war Aufgabe des Betriebsteams, die App zum Laufen zu bringen. In einer geschlosseneren DevOps-Umgebung arbeiten beide Seiten zusammen. Ein Entwickler würde den Lebenszyklus der App von Anfang bis Ende besitzen. Das bedeutet, dass er beispielsweise während der Veröffentlichung einsatzbereit ist. Eine konsistente Kommunikation zwischen den beiden Gruppen ist notwendig, um sicherzustellen, dass alles erfolgreich ist und Sie die Vorteile von DevOps nutzen (Marktgeschwindigkeit, einfacherer Entwicklungszyklus, mehr Rechenschaftspflicht usw.).
Das neue DevOps-Workflow-Modell bewirkt einen großen kulturellen Wandel. Durch Verwendung neuer Tools wird ein DevOps-Plan nicht erfolgreich. Im Gegenteil: neue Tools können den Erfolg beeinträchtigen, wenn sie Sie ohne Zweifel glauben lassen, dass alles angemessen implementiert werden wird.
Aufgrund der Art von Microservices ist es oft notwendig, über starke DevOps-Prozesse für die Bereitstellung zu verfügen. Der verstärkte Einsatz von Werkzeugen und stärkere gemeinsame Praktiken verhindern, dass Teams von all den kleinen, sich bewegenden Teilen überwältigt werden. Sie reduzieren die Störung oder Belastung dieser Änderung und erhalten gleichzeitig weiterhin die Vorteile.

Die Zukunft: Ereignisbasierte Microservices, serverloses Computing und FaaS
Wenn Menschen zum ersten Mal mit Microservices experimentieren, verwenden sie häufig bekannte Techniken, zum Beispiel RESTful-APIs. REST arbeitet mit einer Art Kommunikation namens Anfrage-Antwort. Das Problem bei diesem synchronen Ansatz besteht darin, dass Sie auf eine Antwort warten müssen; die Services werden voneinander abhängig. Wenn ein Service langsamer läuft oder nicht reagiert, bedeutet dies, dass der Service, der ihn aufgerufen hat, langsamer ausgeführt wird oder fehlschlägt. Diese Verbindung kann den Verlust einiger der Vorteile einer Microservices-Architektur bedeuten und eine voneinander abhängigere Struktur zu schaffen, die einem Stil der serviceorientierten Architektur (SOA) ähnelt.
Wenn Sie Ihre Services mit einem ereignisbasierten Modell entwerfen, können Sie sicherstellen, dass Teile Ihrer Anwendung weiterhin funktionieren, während andere Teile möglicherweise nicht beteiligt sind, anstatt dass die gesamte Anwendung nicht mehr reagiert. Nehmen Sie Netflix als Beispiel. Gelegentlich stellen Sie möglicherweise fest, dass die Schaltfläche „Fortfahren“ nicht angezeigt wird. Das liegt daran, dass ein bestimmter Service nicht verfügbar ist. Das bedeutet jedoch nicht, dass Netflix als ein Ganzes stillsteht. Benutzer können weiterhin nach Shows suchen und sich Vorschauen ansehen, sodass andere Aspekte des Netflix-Services weiterhin verfügbar sind, obwohl das bei einem Service möglicherweise nicht der Fall ist.
Entwickler, die einen Microservice-Ansatz voll und ganz annehmen, erkennen, dass echte Skalierbarkeit durch lose Verbindung und ereignisbasierte Architektur ermöglicht wird. Ein Service kann asynchron sein, eine Aktion ausführen, eine Nachricht senden und seine Hauptfunktion fortsetzen, ohne auf eine Antwort eines anderen Services warten zu müssen.