Microservices-Tutorial: Was ist, ArchiStruktur und Beispiel
Was sind Microservices?
Microservices ist ein serviceorientiertes Architekturmuster, bei dem Anwendungen als Sammlung verschiedener kleinster unabhängiger Serviceeinheiten erstellt werden. Es ist ein Softwareentwicklung Ansatz, bei dem die Anwendung in Einzelfunktionsmodule mit klar definierten Schnittstellen zerlegt wird. Diese Module können unabhängig voneinander von kleinen Teams bereitgestellt und betrieben werden, die für den gesamten Lebenszyklus des Dienstes verantwortlich sind.
Der Begriff „Mikro“ bezieht sich auf die Größe eines Mikrodienstes, der von einem einzelnen Entwicklungsteam (5 bis 10 Entwickler) verwaltet werden muss. Bei dieser Methodik werden große Anwendungen in kleinste unabhängige Einheiten unterteilt.
Was ist monolithisch? ArchiStruktur?
Für Laien lässt sich sagen, dass die monolithische Architektur einem großen Container gleicht, in dem alle Softwarekomponenten einer Anwendung in einem einzigen Paket zusammengefasst sind.
Lassen Sie uns ein Beispiel eines E-Commerce-Shops im Kontext einer monolithischen Architektur besprechen.

In jeder E-Commerce-Anwendung gibt es einige Standardfunktionen wie Suche, RevAnsicht & Bewertungen und Zahlungen. Diese Funktionen sind für Kunden über ihren Browser oder Apps zugänglich. Wenn der Entwickler der E-Commerce-Site die Anwendung bereitstellt, handelt es sich um eine einzelne monolithische Einheit. Der Code für verschiedene Funktionen wie Suche, RevAnsicht & Bewertungen sowie Zahlungen befinden sich auf demselben Server. Um die Anwendung zu skalieren, müssen Sie mehrere Instanzen (Server) dieser Anwendungen ausführen.
Was ist Microservice? ArchiStruktur?
Mikrodienst Architektur ist ein architektonischer Entwicklungsstil, der das Erstellen von Anwendungen als Sammlung kleiner autonomer Dienste ermöglicht, die für eine Geschäftsdomäne entwickelt wurden. Es handelt sich um eine Variante der strukturellen Architektur, die dabei hilft, Anwendungen als lose gekoppelte Dienstsammlung anzuordnen. Der Microservice Architecture enthält feinkörnige Dienste und schlanke Protokolle.
Nehmen wir ein Beispiel für eine E-Commerce-Anwendung, die mit einer Microservices-Architektur entwickelt wurde. In diesem Beispiel einer Microservices-Architektur konzentriert sich jeder Microservice auf eine einzelne Geschäftsfunktion. Suche, Bewertung & Review und Payment haben jeweils ihre eigene Instanz (Server) und kommunizieren miteinander.
Im Monolithischen ArchiDank der Struktur sind alle Komponenten zu einem einzigen Modul zusammengefasst. Aber in Microservices ArchiStrukturell sind sie in einzelne Module (Microservice) aufgeteilt, die miteinander kommunizieren, wie im Microservices-Beispiel oben gezeigt.
Die Kommunikation zwischen Microservices ist eine zustandslose Kommunikation, bei der jedes Paar aus Anfrage und Antwort unabhängig ist. Daher können Microservices mühelos kommunizieren. Im Microservice Archistrukturell werden die Daten föderiert. Jeder Microservice hat seinen eigenen Datenspeicher. Als nächstes in diesem Java Im Microservices-Tutorial erfahren wir mehr über den Unterschied zwischen Microservices und monolithischer Architektur.
Microservices vs. Monolithisch Architektur
Microservices | Monolithisch Architektur |
---|---|
Jede Einheit der gesamten Anwendung sollte die kleinste sein und in der Lage sein, ein bestimmtes Geschäftsziel zu erreichen. | Eine einzige Codebasis für alle Geschäftsziele |
Der Dienststart erfolgt relativ schnell | Der Start des Dienstes dauert länger |
Die Fehlerisolierung ist einfach. Selbst wenn ein Dienst ausfällt, können andere weiterhin funktionieren. | Die Fehlerisolierung ist schwierig. Wenn eine bestimmte Funktion nicht funktioniert, stürzt das gesamte System ab. Um dieses Problem zu beheben, muss die Anwendung neu erstellt, erneut getestet und auch erneut bereitgestellt werden. |
Alle Microservices sollten lose gekoppelt sein, damit Änderungen, die in einem Microservice vorgenommen werden, keine Auswirkungen auf den anderen haben. | Monolithische Architektur ist eng gekoppelt. Änderungen in einem Codemodul wirken sich auf das andere aus. |
Unternehmen können mehr Ressourcen für Dienste einsetzen, die einen höheren ROI generieren | Da Dienste nicht isoliert sind, ist eine individuelle Ressourcenzuweisung nicht möglich |
Dem häufig genutzten Dienst könnten mehr Hardware-Ressourcen zugewiesen werden. Im obigen E-Commerce-Beispiel überprüfen mehr Benutzer die Produktliste und suchen im Vergleich zu Zahlungen. Somit könnten mehr Ressourcen für den Such- und Produktlisten-Mikroservice bereitgestellt werden. | Die Skalierung von Anwendungen ist sowohl anspruchsvoll als auch verschwenderisch. |
Microservices bleiben stets konsistent und kontinuierlich verfügbar. | Entwicklungstools werden überlastet, da der Prozess von vorne beginnen muss. |
Daten werden föderiert. Dies ermöglicht es einzelnen Microservices, ein Datenmodell zu übernehmen, das für ihre Anforderungen am besten geeignet ist. | Die Daten werden zentralisiert. |
Kleine, fokussierte Teams. Parallele und schnellere Entwicklung | Es sind ein großes Team und ein erheblicher Teammanagementaufwand erforderlich |
Änderungen im Datenmodell eines Microservices wirken sich nicht auf andere Microservices aus. | Änderungen im Datenmodell wirken sich auf die gesamte Datenbank aus |
Interagiert mit anderen Microservices über klar definierte Schnittstellen | Unzutreffend |
Microservices arbeiten nach dem Prinzip, dass der Fokus auf Produkten und nicht auf Projekten liegt | Legen Sie Wert auf das gesamte Projekt |
Keine gegenseitigen Abhängigkeiten zwischen Codebasen. Sie können unterschiedliche Technologien für unterschiedliche Microservices nutzen. | Eine Funktion oder ein Programm hängt von anderen ab. |
Microservice-Herausforderungen
- MicroServices sind aufeinander angewiesen und müssen miteinander kommunizieren.
- Im Vergleich zu monolithischen Systemen müssen mehr Dienste überwacht werden, die mit unterschiedlichen Methoden entwickelt werden Programmiersprachen.
- Da es sich um ein verteiltes System handelt, ist es ein von Natur aus komplexes Modell.
- Verschiedene Dienste verfügen über separate Mechanismen, was zu einer großen Speichermenge für unstrukturierte Daten führt.
- Effektives Management und Teamarbeit erforderlich, um kaskadierende Probleme zu verhindern
- Das Reproduzieren eines Problems wird eine schwierige Aufgabe sein, wenn es in einer Version verschwunden ist und in der neuesten Version wieder auftritt.
- Die unabhängige Bereitstellung ist mit Microservices kompliziert.
- Die Microservices-Architektur bringt einen hohen Betriebsaufwand mit sich.
- Es ist schwierig, Anwendungen zu verwalten, wenn dem System neue Dienste hinzugefügt werden
- Zur Unterstützung heterogen verteilter Microservices ist ein breites Spektrum an qualifizierten Fachkräften erforderlich.
- Microservice ist kostspielig, da Sie für verschiedene Geschäftsaufgaben unterschiedlichen Serverraum vorhalten müssen.
SOA vs. Microservices
SOA-Dienste werden in der Organisation durch eine Registry verwaltet, die als Verzeichnisliste fungiert. Anwendungen müssen die Dienste in der Registrierung nachschlagen und den Dienst aufrufen.
In einer anderen Welt, SOA ist wie ein Orchester, in dem jeder Künstler mit seinem Instrument spielt, während der Musikdirektor allen Anweisungen gibt.
Auf der anderen Seite sind Microservices eine Form des serviceorientierten Architekturstils, bei dem Anwendungen als Sammlung verschiedener kleinerer Dienste statt als eine einzelne Software oder Anwendung erstellt werden.
Microservices sind wie eine Truppe, in der jeder Tänzer unabhängig ist und weiß, was er zu tun hat. Wenn sie also einige Schritte verpassen, wissen sie, wie sie wieder in die richtige Reihenfolge kommen. In diesem Tutorial zur Microservices-Architektur lernen wir nun den Unterschied zwischen SOA und Microservices kennen.
Hier finden Sie einen detaillierten Vergleich zwischen SOA und Microservices
Parameter | SOA | Microservices |
---|---|---|
Designtyp | Bei SOA werden Softwarekomponenten der Außenwelt zur Nutzung in Form von Diensten zugänglich gemacht. | Micro Service ist ein Teil von SOA. Es handelt sich um eine Implementierung von SOA. |
Abhängigkeit | Geschäftseinheiten sind abhängig. | Sie sind unabhängig voneinander. |
Größe der Software | Die Softwaregröße ist größer als bei jeder herkömmlichen Software | Die Größe der Software ist bei Microservices immer klein |
Technologie-Stapel | Der Technologie-Stack ist im Vergleich zu Microservice geringer. | Der Microservice-Technologie-Stack könnte sehr groß sein |
Art der Anwendung | Monolithischer Natur | Voller Stapel in der Natur |
Unabhängig und fokussiert | SOA-Anwendungen sind für die Ausführung mehrerer Geschäftsaufgaben konzipiert. | Sie sind für die Ausführung einer einzelnen Geschäftsaufgabe konzipiert. |
Einsatz | Der Bereitstellungsprozess ist zeitaufwändig. | Die Bereitstellung ist unkompliziert und weniger zeitaufwändig. |
Kosteneffektivität | Kostengünstiger. | Less kosteneffizient. |
Skalierbarkeit | Less im Vergleich zu Microservices. | Hoch skalierbar. |
Geschäftslogik | Geschäftslogikkomponenten werden innerhalb einer einzelnen Servicedomäne gespeichert. Einfache Wire-Protokolle (HTTP mit XML JSON) API wird mit SDKs/Clients gesteuert | Die Geschäftslogik kann domänenübergreifend im Enterprise Service Bus wie Schichten zwischen Dienst-Middleware leben |
Microservices-Tools
1) Wiremock: Testen von Microservices
WireMock ist eine flexible Bibliothek zum Stubben und Verspotten von Webdiensten. Es kann die Antwort konfigurieren, die von der HTTP-API zurückgegeben wird, wenn eine bestimmte Anfrage empfangen wird. Es wird auch zum Testen von Microservices verwendet.
Download-Link:http://wiremock.org/
2) Docker
Docker ist ein Open-Source-Projekt, das es uns ermöglicht, Anwendungen mithilfe von Containern zu erstellen, bereitzustellen und auszuführen. Mithilfe dieser Container können Entwickler eine Anwendung als einzelnes Paket ausführen. Es ermöglicht Ihnen, Bibliotheken und andere Abhängigkeiten in einem Paket zu versenden.
Download-Link:https://www.docker.com/
3) Hystrix
Hystrix ist eine fehlertolerante Java-Bibliothek. Dieses Tool wurde entwickelt, um Zugriffspunkte auf Remote-Dienste, Systeme und Bibliotheken von Drittanbietern in einer verteilten Umgebung wie Microservices zu trennen. Es verbessert das Gesamtsystem, indem es die ausgefallenen Dienste isoliert und die Kaskadenwirkung von Ausfällen verhindert.
Download Link:https://github.com/Netflix/Hystrix
Best Practices für Microservices Architektur
- Separater Datenspeicher für jeden Microservice
- Behalten Sie Code mit einem ähnlichen Reifegrad bei.
- Separater Build für jeden Mikrodienst.
- Behandeln Sie – schwer wie staatenlos.
Zusammenfassung
- Microservices sind ein serviceorientiertes Architekturmuster, bei dem Anwendungen als Sammlung verschiedener kleinster unabhängiger Serviceeinheiten erstellt werden.
- Mikrodienst Architecture ist ein architektonischer Entwicklungsstil, der den Aufbau einer Anwendung als Sammlung kleiner, autonomer Dienste ermöglicht, die für eine Geschäftsdomäne entwickelt wurden.
- Eine monolithische Architektur ist wie ein großer Container, in dem alle Softwarekomponenten einer Anwendung in einem einzigen Paket zusammengefasst sind.
- In einem Microservice sollte jede Einheit der gesamten Anwendung die kleinste sein und in der Lage sein, ein bestimmtes Geschäftsziel zu erreichen
- In einer monolithischen Architektur kann eine große Codebasis den gesamten Entwicklungsprozess verlangsamen. Neue Releases können Monate dauern. Die Codewartung ist schwierig
- Zwei Arten von Microservices sind 1) zustandslos und 2) zustandsbehaftet
- Microservices in Java verlassen sich aufeinander und müssen miteinander kommunizieren. Hilft Ihnen, eine bestimmte Funktion und geschäftliche Anforderungen hervorzuheben
- Serviceorientierte Architektur, kurz SOA genannt, ist eine Weiterentwicklung des verteilten Rechnens, die auf dem Request-or-Reply-Designmodell für synchrone und asynchrone Anwendungen basiert.
- Bei SOA werden Softwarekomponenten der Außenwelt zur Nutzung in Form von Diensten zugänglich gemacht, wohingegen Micro Service ein Teil von SOA ist. Es handelt sich um eine Implementierung von SOA
- Wiremock, Docker und Hystrix sind einige beliebte Microservices-Tools