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.
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 zu erstellen.
Es gibt drei Arten von Microservices:
- Domain-Microservices verbinden Services lose mit verwandten Funktionen.
- Integrations-Microservices erleichtern die Interaktion zwischen Anwendungen, die nichts miteinander zu tun haben.
- 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.
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:
Widerstandsfähigkeit und Fehlerisolierung
In monolithischen Architekturen betrifft ein Fehler betrifft die gesamte Anwendung. Microservices sind jedoch unabhängig. Ein Fehler hat keine Auswirkungen auf die anderen Teile der Anwendung.
Flexibilität
Die Aufteilung von Anwendungen in kleinere Einheiten beschleunigt die Entwicklung. Sie ermöglicht Teams, Software schneller zu entwickeln, zu testen und bereitzustellen.
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.
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.
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, 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.
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?
Wer DevOps versteht, weiß, 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.
Werde Teil der Atlassian Community, um weitere Artikel und Diskussionen über Microservices zu erhalten.