Close

Microservices: Was versteht man darunter und welche Vorteile bieten sie?

Bis etwa 2013 wurden bei der Entwicklung von Unternehmenssoftware in der Regel Anwendungen als einzelne Einheiten mit großen Codebasen konstruiert, d. h. als eine monolithische Architektur. Als Software komplexer wurde und Cloud Computing an Popularität gewann, wurde dieser Ansatz weniger praktikabel.

Das Aufkommen von Software-as-a-Service-Produkten (über die Cloud bereitgestellte Anwendungen) ermöglichte es Unternehmen, Anbieter wie Amazon Web Services zu nutzen, um neue Server zu erstellen und schnell Redundanz hinzuzufügen. Dadurch wurde sichergestellt, dass die Services während der Upgrades online blieben. Es war auch der Beginn einer neuen Ära der Geschwindigkeit und Agilität. Die Benutzer erwarteten nun schnelle Upgrades und Verbesserungen. Dies veranlasste Unternehmen dazu, ihre Entwicklungsprozesse zu ändern.

Unternehmen begannen, Anwendungen in kleinere, unabhängige Services oder Microservices aufzuteilen. Anstatt beispielsweise einen Messaging-Posteingang als Teil einer monolithischen E-Commerce-Plattform einzubinden, erstellten sie einen separaten Microservice für diese Funktion.

Parallel dazu begannen Entwickler, in kleineren, spezialisierteren Gruppen zu arbeiten, die einzelne Services modifizierten und verbesserten, ohne die gesamte Anwendung zu gefährden. Diese Gruppen übernahmen oft auch die Verantwortung für den Betrieb ihres Codes – ein Modell namens DevOps. Um diese Änderungen zu ermöglichen, begannen die Projektmanager, neue Methoden zu entwickeln, wie Agile – dabei werden Projekte in kleinere, häufigere Releases unterteilt.

Im Folgenden erfährst du mehr über die Anatomie von Microservice-basierten Anwendungen. Außerdem wird erläutert, wie Compass von Atlassian die Komplexität reduziert und Entwicklern gleichzeitig ermöglicht, die Vorteile dieses Architekturmodells zu nutzen.

Microservices sind eine Ansammlung kleiner Einheiten, durch die kontinuierlich große, komplexe Anwendungen realisiert und bereitgestellt werden.

Compass-Logo.

Teste Compass kostenlos

Als Unterstützung beim Entwickeln, zum Katalogisieren von Diensten und zum Optimieren des Softwarezustands.

Was sind Microservices?


Ein Microservice ist eine Funktion, die für eine einzelne Logik verantwortlich ist (außer für Domain-Microservices, wie unten erklärt). Mehrere Microservices werden kombiniert, um verteilte Anwendungen wie Jira Software zu erstellen.

Abbildung: Microservices

Es gibt drei Arten von Microservices:

  1. Domain-Microservices verbinden Services lose mit verwandten Funktionen.
  2. Integrations-Microservices erleichtern die Interaktion zwischen Anwendungen, die nichts miteinander zu tun haben.
  3. Microservices für Aufgabeneinheiten führen einzelne Funktionen aus.

Microservices interagieren mithilfe von Anwendungsprogrammierschnittstellen (APIs) miteinander. Entwickler, die an einzelnen Services arbeiten, können die internen Abläufe der anderen Microservices erlernen, was ein weiterer Vorteil gegenüber einer monolithischen Architektur ist.

Eine auf Microservices basierende Architektur bietet viele Vorteile, erhöht aber auch die Komplexität. Aus diesem Grund hat Atlassian Compass entwickelt – um Unternehmen die Skalierung zu erleichtern. Diese Developer-Experience-Plattform führt alle Informationen zu den gesamten Entwicklungsergebnissen und zur Teamzusammenarbeit an einem zentralen, durchsuchbaren Ort zusammen.

Die wichtigsten Prinzipien von Microservices


Eine auf Microservices basierende Architektur verfügt über einige typische Merkmale. Entwickler können ihre Services unabhängig entwickeln und bereitstellen, indem sie die Sprachen und Technologien verwenden, die zu ihren Komponenten passen.

Die Kommunikation zwischen Microservices ist API-basiert und ermöglicht den Zugriff auf Daten aus verschiedenen Quellen ohne Änderungen. Einzelne Services können je nach Nachfrage skaliert werden. Dies spart Kosten und stellt die Verfügbarkeit sicher.

Dank dieser Eigenschaften sind auf Microservices basierende verteilte Anwendungen flexibel und wartungsfreundlich.

In einer Microservice-Architektur kann jede Komponente entwickelt, bereitgestellt, betrieben, geändert und neu bereitgestellt werden, ohne die Funktion anderer Services oder die Integrität einer Anwendung zu beeinträchtigen.

Vorteile von Microservices


Microservices bieten viele Vorteile. Sie vereinfachen die Entwicklung und das Projektmanagement. Manchmal machen sie separate Operations-Teams überflüssig, da Entwickler den Betrieb der von ihnen entwickelten Microservices übernehmen können.

Zu den weiteren Vorteilen von Microservices gehören:

Abbildung: Waage

Widerstandsfähigkeit und Fehlerisolierung

Ein Fehler betrifft die gesamte Anwendung in monolithischen Architekturen. Microservices sind jedoch unabhängig. Ein Fehler hat keine Auswirkungen auf die anderen Teile der Anwendung.

Abbildung: Agile

Flexibilität

Die Aufteilung von Anwendungen in kleinere Einheiten beschleunigt die Entwicklung. Sie ermöglicht Teams, Software schneller zu entwickeln, zu testen und bereitzustellen.

Abbildung eines Werkzeugkasten

Technologische Vielfalt

Microservices ermöglichen es Entwicklern, die richtigen Tools und Technologien für den Job auszuwählen. Das erhöht die Effizienz und Produktivität.

Abbildung: Bausteine

Verbesserte Wartung

Die Möglichkeit, einzelne Komponenten zu testen, macht es einfacher, Fehler zu finden und zu beheben, ohne die gesamte Anwendung offline zu nehmen.

Herausforderungen der Microservice-Architektur


Eine auf Microservices basierende Architektur hat viele Vorteile, bringt aber auch Herausforderungen mit sich.

Eine Herausforderung bei Microservices besteht darin, dass die unabhängigen Services ihre eigenen Protokolle generieren. Das ist ein Nachteil im Vergleich zu den zentralisierten Protokollen von monolithischen Architekturen, die eine zentrale Informationsquelle für Entwickler und Operations-Teams bieten. Überwachung und Infrastrukturmanagement sind aufgrund der vielen beweglichen Teile ebenfalls komplizierter. Testen und Debuggen sind eine Herausforderung, da im Gegensatz zu monolithischen Architekturen keine integrierte Entwicklungsumgebung (IDE) vorhanden ist.

Compass von Atlassian kann dir bei all diesen Herausforderungen helfen. Compass erleichtert die Zusammenarbeit und unterstützt Unternehmen bei der Handhabung komplexer verteilter Architekturen während der Skalierung, indem nicht vernetzte Informationen an einem zentralen, durchsuchbaren Ort zusammengeführt werden.

Unkontrollierte Entwicklung

Mit dem Wechsel von einer monolithischen Architektur zu Microservices nimmt die Komplexität zu, da es an mehreren Orten mehr Services gibt, die von mehreren Teams erstellt werden. Das macht es schwierig herauszufinden, welchen Bezug verschiedene Komponenten zueinander haben, wer für eine bestimmte Komponente zuständig ist oder wie verhindert werden kann, dass abhängige Komponenten beeinträchtigt werden. Wenn die unkontrollierte Entwicklung nicht eingedämmt wird, führt dies zu einer langsameren Entwicklungsgeschwindigkeit und einer schlechten Betriebsleistung. Ein zunehmend komplexes System erfordert ein erfahrenes Operations-Team, das die kontinuierlichen neuen Deployments und häufigen Änderungen in der Architektur verwaltet.

Keine klaren Zuständigkeiten

Bei der Nutzung einer Microservice-Architektur entsteht Verwirrung darüber, wer wofür zuständig ist. Ein DevOps-Team kann eine Kombination aus APIs, Komponentenbibliotheken, Überwachungstools und Docker-Images für Benutzer ausführen, um eine Anwendung bereitzustellen. Es ist wichtig, einen Einblick in Informationen zu den Komponenten zu haben, einschließlich ihrer Besitzer und Ressourcen und den sich entwickelnden Beziehungen zwischen anderen Komponenten. Damit alle Beteiligten das zum Verständnis eines Produkts erforderliche Wissen leicht finden können, ist eine klare Kommunikation und Koordination zwischen den zahlreichen Teams erforderlich.

Exponentielle Infrastrukturkosten

Jeder neue Microservice, der dem Produktions-Deployment hinzufügt wird, verursacht eigene Kosten für Testsuite, Deployment-Playbooks, Hosting-Infrastruktur, Überwachungstools und mehr.

Zusätzlicher organisatorischer Aufwand

Ein zusätzliches Maß an Kommunikation und Zusammenarbeit ist erforderlich, um Updates und Schnittstellen zwischen Microservice-Architekturteams zu koordinieren.

Fehlerbehebung

Es kann schwierig sein, Fehler in einer Anwendung zu beheben, die mehrere Microservices mit jeweils eigenen Protokollen enthält. Ein einzelner Geschäftsprozess kann auf mehreren Computern zu unterschiedlichen Zeiten ausgeführt werden, wodurch die Fehlerbehebung noch komplizierter wird.

Incident Response

Es ist wichtig, Informationen zur Incident Response für einen Microservice zu haben, wie z. B., wer den Microservice nutzt, wo und wie der Microservice bereitgestellt wurde und an wen du dich wenden kannst, wenn etwas schiefgeht.

Wofür wird die Microservices-Architektur verwendet?


Große Verbraucher-Websites nutzen oft Hunderte oder Tausende von Microservices. Microservices sind in den folgenden Anwendungsfällen und Branchen besonders hilfreich:

  • E-Commerce-Websites wie eBay nutzen separate Microservices für Einkaufswagen, mobile Apps und Nachrichten.
  • Finanzinstitute wie die Bank of America nutzen Microservices, um mit externen Services zu kommunizieren. Sie verwenden sie auch, um Funktionen wie Benutzerautorisierungen und die Anzeige von Transaktionen abzuwickeln.
  • Social-Media-Plattformen wie Instagram und Facebook nutzen Microservices, um die News-Feeds, Nachrichten, Benachrichtigungen und Freundenetzwerke der Benutzer anzuzeigen.

Best Practices für die Verwaltung von Microservices


Im Laufe der Jahre haben Entwickler Dutzende wichtige Best Practices für die Entwicklung von Microservices erstellt. Im Folgenden sind nur ein paar Beispiele aufgeführt:

  • Das Single-Responsibility-Prinzip (SRP) legt fest, dass jedes Modul bzw. jeder Microservice nur eine Funktion haben sollte. Die Continuous Integration (CI) von SRP ist eine Methode zur Quellcodekontrolle, die Qualitätsüberprüfungen für Code automatisiert, bevor sie in einem Projekt zusammengeführt werden. Dadurch wird die Geschwindigkeit erhöht, da kein separater Qualitätssicherungsprozess erforderlich ist. Diese Best Practice von DevOps sorgt für mehr Geschwindigkeit. Auf CI folgt Continuous Delivery (CD). Dabei werden automatisierte Build-Tools ausgeführt, um die Software einsatzbereit zu halten.
  • API-Gateways vereinfachen die Kommunikation zwischen Microservices, verwalten Authentifizierung und Autorisierung und erhöhen die Sicherheit.
  • Asynchrone Kommunikation zwischen Microservices bewahrt die Autonomie und reduziert Abhängigkeiten, die die Anwendungsfunktion verlangsamen könnten.
  • Die Versionierung von Microservices ist entscheidend, wenn Entwickler wichtige Änderungen implementieren, wie zum Beispiel das Entfernen eines gesamten Vorgangs. Diese Vorgehensweise sorgt für reibungslose Übergänge und minimiert die Wahrscheinlichkeit von Serviceunterbrechungen.

Open DevOps von Atlassian, unterstützt von Jira Software, macht es Teams leicht, Atlassian- und Partnertools automatisch zu integrieren, sodass sie sich auf die Entwicklung und den Betrieb von Software konzentrieren können.

Eine bessere Verwaltung deiner Microservices-Architektur mit Compass


Compass von Atlassian ist eine Entwickler-Plattform, die die verteilten Softwarearchitekturen und die Teams, die daran zusammenarbeiten, an einem Ort vereint. Es bietet einen praktischen Überblick über alle Komponenten und Services, an denen ein Team arbeitet. Darüber hinaus ist auch ein Softwarekomponentenkatalog enthalten, in dem Entwickler mühelos finden, wonach sie suchen.

Abbildung: Microservices

Compass ermöglicht eine einfache Komponentenverwaltung, Eigentumsverfolgung und Beziehungsüberwachung. Auch Änderungen in Echtzeit werden verfolgt.

Die Integration von Compass in deine Entwicklungsumgebung ist einfach, und zwar aufgrund der anpassbaren Benutzeroberfläche und der Kompatibilität sowohl mit internen Tools als auch mit Tools von Drittanbietern. Erfahre, wie du deine Microservices-Architektur mit Compass verwaltest und wie die Plattform unzusammenhängende Informationen an einem einheitlichen, zentralen Ort zusammenführt.

Microservices: Häufig gestellte Fragen


Welche Tools verwenden Benutzer üblicherweise in Microservices?

Unternehmen verwenden oft Containerisierungstools wie Kubernetes und Docker. Auch API-Gateways zwischen Microservices und ihren Kunden kommen gerne zum Einsatz. Diese Gateways führen API-Traffic-Funktionen wie Authentifizierung, Zugriffskontrolle und Load Balancing aus.

Wie unterscheiden sich Microservices von einer monolithischen Architektur?

Monolithische Architekturen sind große Codebasen, die als ein System funktionieren. Systemausfälle für Updates und Debugging sind hier unumgänglich. Microservices-Architekturen sind verteilte Anwendungen mit kleineren, unabhängigen Funktionspaketen. Entwickler können diese Module aktualisieren, verbessern und debuggen, ohne die gesamte Anwendung offline zu nehmen. Das vereinfacht die Skalierung und beschleunigt die Entwicklung.

Wie wirken sich Microservices auf DevOps aus?

Diejenigen, die DevOps verstehen, wissen, dass Continuous Integration und Continuous Delivery (die DevOps-CI/CD-Pipeline) die tragenden Säulen der DevOps-Methoden sind. Der modulare Charakter von Microservices passt perfekt zu diesem Ansatz. Microservices ermöglichen es Entwicklern, schnell kleine, häufige Releases zu erstellen, zu testen und bereitzustellen.

Tritt der Atlassian Community bei, um auf weitere Artikel und Diskussionen über Microservices zuzugreifen.

Navigation deiner Microservices mit Compass

Compass von Atlassian hilft dir, bei der Arbeit mit Microservices die Komplexität einer verteilten skalierbaren Architektur im Griff zu behalten. Die Lösung ist eine erweiterbare Developer-Experience-Plattform, die unzusammenhängende Informationen über die gesamten Entwicklungsergebnisse und die Teamzusammenarbeit an einem zentralen, durchsuchbaren Ort zusammenführt. Compass hilft dir nicht nur dabei, mit dem Komponentenkatalog die ungebremste Verbreitung von Microservices einzudämmen. Die Lösung kann dich auch dabei unterstützen, Best Practices zu erstellen und den Zustand deiner Software mit Scorecards zu messen. Sie gibt dir mithilfe von Erweiterungen, die in die Atlassian Forge-Plattform integriert sind, Daten und Einblicke in die gesamte DevOps-Toolkette an die Hand.

Abbildung: Microservices in Compass