Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Tipp
Dieser Inhalt ist ein Auszug aus dem eBook .NET Microservices Architecture for Containerized .NET Applications, verfügbar auf .NET Docs oder als kostenlose herunterladbare PDF, die offline gelesen werden kann.
Wie der Name schon sagt, ist eine Microservices-Architektur ein Ansatz zum Erstellen einer Serveranwendung als gruppe kleiner Dienste. Dies bedeutet, dass eine Microservices-Architektur hauptsächlich auf das Back-End ausgerichtet ist, obwohl der Ansatz auch für das Front-End verwendet wird. Jeder Dienst wird in einem eigenen Prozess ausgeführt und kommuniziert mit anderen Prozessen mithilfe von Protokollen wie HTTP/HTTPS, WebSockets oder AMQP. Jeder Microservice implementiert eine bestimmte End-to-End-Domäne oder Geschäftsfunktion innerhalb einer bestimmten Kontextgrenze und muss unabhängig voneinander entwickelt und bereitgestellt werden. Schließlich sollte jeder Microservice sein zugehöriges Domänendatenmodell und Domänenlogik (Souveränität und dezentrale Datenverwaltung) besitzen und auf verschiedenen Datenspeichertechnologien (SQL, NoSQL) und verschiedenen Programmiersprachen basieren.
Welche Größe sollte ein Microservice sein? Bei der Entwicklung eines Microservice sollte die Größe nicht der wichtige Punkt sein. Stattdessen sollte der wichtige Punkt sein, lose gekoppelte Dienste zu erstellen, damit Sie autonomie von Entwicklung, Bereitstellung und Skalierung für jeden Dienst haben. Natürlich sollten Sie beim Identifizieren und Entwerfen von Microservices versuchen, sie so klein wie möglich zu machen, solange Sie nicht über zu viele direkte Abhängigkeiten mit anderen Microservices verfügen. Wichtiger als die Größe des Mikroservice ist der interne Zusammenhalt, den er haben muss, und seine Unabhängigkeit von anderen Diensten.
Warum eine Microservices-Architektur? Kurz gesagt, es bietet langfristige Flexibilität. Microservices ermöglichen eine bessere Wartung in komplexen, großen und hoch skalierbaren Systemen, indem Sie Anwendungen basierend auf vielen unabhängig bereitgestellten Diensten erstellen können, die jeweils präzise und autonome Lebenszyklus aufweisen.
Als zusätzlicher Vorteil können Microservices unabhängig voneinander skaliert werden. Anstatt eine einzige monolithische Anwendung zu haben, die Sie als Einheit skalieren müssen, können Sie stattdessen bestimmte Microservices skalieren. Auf diese Weise können Sie nur den Funktionalen Bereich skalieren, der mehr Verarbeitungsleistung oder Netzwerkbandbreite benötigt, um den Bedarf zu unterstützen, anstatt andere Bereiche der Anwendung zu skalieren, die nicht skaliert werden müssen. Dadurch sparen Sie auch Kosten, da Sie weniger Hardware benötigen.
Abbildung 4-6. Monolithische Bereitstellung im Vergleich zum Microservices-Ansatz
Wie in Abbildung 4-6 gezeigt wird, skaliert die Anwendung im herkömmlichen monolithischen Ansatz, indem die gesamte App auf mehreren Servern/VMs geklont wird. Im Microservices-Ansatz ist die Funktionalität in kleineren Diensten getrennt, sodass jeder Dienst unabhängig skaliert werden kann. Der Microservices-Ansatz ermöglicht agile Änderungen und eine schnelle Iteration jedes Microservice, da Sie bestimmte, kleine Bereiche komplexer, großer und skalierbarer Anwendungen ändern können.
Das Entwerfen von Anwendungen, die auf präzisen Microservices basieren, ermöglicht eine fortlaufende Integration und kontinuierliche Bereitstellung und beschleunigt die Bereitstellung neuer Funktionen in der Anwendung. Eine differenzierte Zusammensetzung von Anwendungen ermöglicht es Ihnen auch, Mikroservices isoliert auszuführen und zu testen und diese eigenständig zu entwickeln und gleichzeitig klare Verträge zwischen ihnen aufrechtzuerhalten. Solange Sie die Schnittstellen oder Verträge nicht ändern, können Sie die interne Implementierung jedes Microservices ändern oder eine neue Funktionalität hinzufügen, ohne dass andere Microservices in ihrer Funktion negativ beeinflusst werden.
Im Folgenden sind wichtige Aspekte aufgeführt, um den Erfolg bei der Produktion mit einem mikroservicesbasierten System zu ermöglichen:
Überwachung und Gesundheitsüberprüfung der Dienste und Infrastruktur.
Skalierbare Infrastruktur für die Dienste (d. a. Cloud und Orchestrator).
Sicherheitsdesign und Implementierung auf mehreren Ebenen: Authentifizierung, Autorisierung, geheime Verwaltung, sichere Kommunikation usw.
Schnelle Anwendungsbereitstellung, in der Regel mit unterschiedlichen Teams, die sich auf verschiedene Microservices konzentrieren.
DevOps- und CI/CD-Praktiken und -Infrastruktur.
Von diesen werden nur die ersten drei behandelt oder in diesem Leitfaden eingeführt. Die letzten beiden Punkte, die sich auf den Anwendungslebenszyklus beziehen, werden im zusätzlichen containerisierten Docker Application Lifecycle mit Microsoft Platform and Tools e-Book behandelt.
Weitere Ressourcen
Mark Russinovich. Microservices: Eine Anwendungsrevolution, die von der Cloud unterstützt wird
https://azure.microsoft.com/blog/microservices-an-application-revolution-powered-by-the-cloud/Martin Fowler. Microservices
https://www.martinfowler.com/articles/microservices.htmlMartin Fowler. Voraussetzungen für Microservice
https://martinfowler.com/bliki/MicroservicePrerequisites.htmlJim Nilsson. Block Cloud Computing
https://www.infoq.com/articles/CCC-Jimmy-NilssonCesar de la Torre. Containerisierter Docker-Anwendungslebenszyklus mit Microsoft-Plattform und -Tools (herunterladbares E-Book)
https://aka.ms/dockerlifecycleebook