Ein Microservice ist ein Ansatz der Softwarearchitektur, bei der die Anwendung in kleine, unabhängige Dienste aufgeteilt wird, die jeweils eine spezifische Aufgabe erfüllen. Jeder Microservice ist in sich abgeschlossen und kann unabhängig von anderen Microservices entwickelt, bereitgestellt und verwaltet werden. Dies ermöglicht eine flexiblere und skalierbare Anwendung, Anwendungsentwicklung und -verwaltung, da Änderungen an einzelnen Microservices nicht die gesamte Anwendung beeinträchtigen.
Begriffsdefinition
Eine Microservice Architektur besteht aus kleinen, unabhängigen Diensten, die als Microservices bezeichnet werden. Diese Microservices werden in Containern verpackt, die sicherstellen, dass die Einheit während des gesamten Entwicklungsprozesses konsistent bleibt, einschließlich des Tests.
Die architektonische Zusammensetzung von Microservices besteht aus:
- Containern: Verpackung von Diensten und ihren Abhängigkeiten. Sie stellen sicher, dass die Einheit während des gesamten Entwicklungsprozesses konsistent bleibt, einschließlich des Tests.
- Service Mesh: Erleichtert die Kommunikation zwischen Microservices über eine dedizierte dynamische Messaging-Schicht.
- Service Discovery: Hilft Microservices, sich gegenseitig in einem Ökosystem zu finden.
- API-Gateway: Ein Kommunikationsweg zwischen Microservices und externen Clients.
- Backend: Der Teil einer Anwendung, der nicht direkt vom Benutzer interagiert wird und die Geschäftslogik und Datenverarbeitung verwaltet.
Zusammen bilden die Interkommunikation und Datenaustausche der Bausteine die Funktionen einer vollständigen Anwendung.
Wann ist es sinnvoll, auf Microservices zu setzten?
Eine Microservice-Architektur ist ein geeigneter Ansatz, wenn eine Anwendung komplex und skalierbar sein muss und schnell an Änderungen angepasst werden kann. Und wenn einzelne Dienste unabhängig voneinander entwickelt, skalieren und aktualisiert werden sollen, was die Flexibilität und Time-to-Market erhöht. Oder wenn unterschiedliche Technologien für verschiedene Dienste zum Einsatz kommen und wenn die Anwendung Plattform unabhängig bzw. in der Cloud laufen soll.
Der Einsatz von Microservices kommt mit seinen eigenen Herausforderungen. Dazu gehören die Integration von Diensten, die Verwaltung von API-Schnittstellen, Überwachung und Fehlerbehebung.
Vorteile
Eine Microservice-Architektur hat einige Vorteile gegenüber der Monolithischen-Architektur, bei dem eine Anwendung als einzelnes, großes und komplexes Programmmodul entwickelt wird. Dazu gehören:
- Skalierbarkeit: Da Microservices selbstständige Dienste sind, können sie unabhängig voneinander skaliert werden, um die Leistung der gesamten Anwendung zu verbessern.
- Flexibilität: Microservices sind modular aufgebaut und können einfach geändert oder aktualisiert werden, ohne dass die gesamte Anwendung neu gestartet werden muss.
- Unabhängige Teams: Microservices ermöglichen es, dass Entwicklerteams unabhängig voneinander zu arbeiten, was die Produktivität und die Qualität erhöht.
- Unterschiedliche Technologie: Microservices ermöglichen es, unterschiedliche Technologien für unterschiedliche Dienste zu verwenden.
- Plattform unabhängig und Cloud-native: Microservices sind in der Regel Container, was den Einsatz auf verschiedenen Platzformen und in Cloud erleichtert/ermöglicht.
- Höhere Fehlertoleranz: Wenn ein Microservice ausfällt, hat dies keine Auswirkungen auf die anderen Dienste und die gesamte Anwendung bleibt weiterhin funktionstüchtig.
- Wiederverwendbarkeit: Microservices können wiederverwendet werden, um andere Anwendungen zu bauen oder in anderen Projekten eingesetzt werden.
Nachteile
- Komplexität: Microservices erhöhen die Komplexität der Anwendung, da mehrere unabhängige Dienste miteinander kommunizieren müssen.
- Fehlersuche: Die Fehlersuche in einer Microservice-Architektur kann schwierig werden, da Probleme in einem Dienst Auswirkungen auf andere Dienste haben könnten.
- Latenz: Microservices kommunizieren über Netzwerke miteinander, dadurch kann es zu Latenzproblemen kommen, die die Anwendungsperformance beeinträchtigen können.
- Operationsaufwand: Der Betrieb und die Wartung einer Microservice-Architektur erfordert einen größeren Aufwand im Gegensatz zu einem Monolith, da jeder Dienst separat betrieben werden muss.
- Tests: Einen Microservice zu testen ist mitunter eine Herausforderung, da sie sich gegenseitig beeinflussen und unvorhergesehene Interaktionen haben können.
- Sicherheit: Da Microservices unabhängig voneinander entwickelt werden, kann es schwierig sein, eine einheitliche Sicherheitsstrategie für die gesamte Anwendung umzusetzen.
Beispiele für eine Microservice-Architektur
Ein Schaltbild für eine Microservice-Architektur könnte wie folgt aussehen:
In diesem Beispiel gibt es mehrere Services, die miteinander kommunizieren, um verschiedene Funktionen zu erfüllen. Jeder Service ist für eine spezifische Aufgabe verantwortlich und kommuniziert über API-Aufrufe mit den anderen Services.
Auf die Services kann wird über ein API-Gateway (zum Beispiel über eine Android- oder IOS-APP oder Software auf dem PC) zugegriffen werden. Das Gateway kommuniziert mit einem vorgelagerten Service (zum Beispiel eine Middleware), der die Kommunikation mit den anderen beiden Services, die den Zugriff auf ein jeweiliges Backend verantworten, steuert.
Ein weiteres Beispiel für eine Microservice-Architektur könnte wie folgt aussehen:
In diesem Beispiel gibt es eine Frontend-Anwendung, die von verschiedenen Backend-Services unterstützt wird. Auf die Services kann entweder über ein API-Gateway oder über eine Web-Anwendung (zum Beispiel über den Webbrowser) über einien Frontend Service zugegriffen werden.
Jeder Backend-Service ist für ein spezifisches Backend verantwortlich und stellt eine REST-API (auch bekannt als RESTful API) bereit, über die die Kommunikation mit dem API-Gateway oder dem Frontend-Service stattfindet.
Einige bekannte Unternehmen, die Microservices einsetzten
- Netflix: Netflix hat eine der größten Microservice-Architekturen unter anderem auf AWS und nutzt sie, um seinen Kunden eine große Auswahl an Filmen und TV-Shows anzubieten.
- Amazon: Hat seinen Onlineshop als Microservices strukturiert, um seine vielfältigen E-Commerce-Angebote zu unterstützen und schnell auf Veränderungen in der Nachfrage reagieren zu können.
- Uber: Das Unternehmen setzt Microservices ein, um seine Fahrdienst-Plattform zu betreiben und schnell auf Veränderungen in der Nachfrage reagieren zu können.
Links
- https://de.wikipedia.org/wiki/Microservices: Microservices – Wikipedia-Eintrag, der eine allgemeine Erklärung der Microservices Architektur und ihrer Konzepte bereitstellt.
- https://nextgentips.com/2022/09/18/how-does-microservice-architecture-work: Führt zu einem Artikel, der sich mit der Funktionsweise von Microservice-Architekturen beschäftigt.
- https://docs.microsoft.com/en-us/azure/architecture/microservices/: Eine Sammlung von Ressourcen von Microsoft, die sich mit der Microservice-Architektur befassen und Tipps und Best Practices für deren Einsatz.
- https://12factor.net/de/: Das „12 Factor“-Manifest ist ein Leitfaden für die Entwicklung von Microservices, der von einer Gruppe von Experten erstellt wurde. Es enthält Empfehlungen für die Architektur von Microservices und die Art und Weise, wie sie entwickelt und bereitgestellt werden sollten.
- https://www.redhat.com/de/topics/microservices/what-are-microservices: Was sind Microservices? Ein Artikel von Red Hat, welcher eine Einführung in die Microservices Architektur gibt und die Vorteile und Herausforderungen erklärt.
- https://www.ionos.de/digitalguide/websites/web-entwicklung/microservice-architecture-so-funktionieren-microservices/: Microservice-Architektur: So funktionieren Microservices. Ein Artikel von ionos, welcher die Grundlagen der Microservice-Architektur erklärt und zeigt, wie Microservices in der Praxis funktionieren.
- https://aws.amazon.com/de/microservices/ : Eine Seite auf AWS (Amazon Web Services), die sich auf die Verwendung von Microservices in der Cloud und die Tools und Dienste von AWS konzentriert, die für die Entwicklung und Bereitstellung von Microservices nützlich sind.
- https://entwickler.de/microservices/was-sind-eigentlich-microservices/ und https://entwickler.de/software-architektur/monolithische-versus-microservices-architektur-wer-hat-die-nase-vorn/: Zwei Artikel auf Entwickler.de, die sich mit Microservices und Microservice Architektur auseinandersetzen und die Vorteile und Herausforderungen beschreiben.
- https://www.atlassian.com/de/microservices/microservices-architecture und https://www.atlassian.com/de/microservices/microservices-architecture/microservices-vs-monolith: Zwei Artikel von Atlassian, die sich mit Microservices Architektur und dem Vergleich von Microservices vs Monolith Architektur beschäftigen und die Vorteile und Herausforderungen jeder Methode beschreiben.
- https://www.itwissen.info/Monolithische-Software-Architektur.html : Monolithische Softwarearchitektur erklärt auf ITWissen.info und die Herausforderungen, die sie mit sich bringt.
- https://www.computerweekly.com/de/definition/Monolithische-Architektur : Kurze Definition der monolithischen Architektur und wie sie in der Softwareentwicklung verwendet wird.
- https://www.talend.com/de/resources/monolithische-systeme/ : Ebenfalls ein Artikel, der die Herausforderungen von monolithischen Systemen beschreibt und wie man sie überwinden kann.
- https://vuestorefront.io/microservices : Microservices – Eine Einführung in die Verwendung von Microservices in der Entwicklung von Vue.js Anwendungen.
- https://www.redhat.com/de/topics/api/what-is-a-rest-api : Was ist eine REST API – Ein Artikel, der erklärt, was eine REST API ist und wie sie in der Entwicklung von Anwendungen verwendet wird.
- https://de.wikipedia.org/wiki/Middleware : Middleware – Wikipedia-Eintrag, der erklärt, was Middleware ist und wie es in der Softwareentwicklung verwendet wird.
One thought on “Softwareentwicklung: Was ist ein ‚Microservice‘?”