Wofür stehen Microservices in der Softwareentwicklung
Es gibt eine Vielzahl an Architekturkonzepten in der Softwareentwicklung. Eines davon sind Microservices.
Definition von Microservices
Microservices sind ein Architekturansatz in der Softwareentwicklung. Der Grundgedanke besteht darin, dass eine Softwareanwendung aus einer Vielzahl kleiner und unabhängiger Dienste besteht. Jeder dieser Dienste ist für einen spezifischen Funktionsbereich zuständig und kann eigenständig entwickelt, getestet und deployed werden. Die kleinen unabhängigen Services kommunizieren über sorgfältig definierte APIs.
Microservices sind auch ein organisatorischer Ansatz. Die Services können parallel von kleinen eigenständigen Teams entwickelt werden, da sie unabhängig voneinander sind. Mittels des Continuous Integration Konzepts werden die Services bereitgestellt und integriert.
Was sind Microservices?
Unter Microservices versteht man Dienste, die jeweils eine kleine Aufgabe erfüllen. Jeder dieser Dienste ist für einen spezifischen Funktionsbereich zuständig und kann eigenständig entwickelt, getestet und deployed werden.
Die einzelnen Services/Prozesse lassen sich wie Module so miteinander verbinden, dass sich daraus eine beliebig komplexe Software ergeben kann.
Das bedeutet, mit Microservices werden Funktionen soweit in einzelne Komponenten zerlegt, dass im Endergebnis jeder Mikrodienst eine einzelne Aufgabe erfüllt. Die einzelnen Dienste können unabhängig voneinander funktionieren, ohne andere Dienste in irgendeiner Weise zu beeinflussen. Mittels Schnittstellen können mehrere Microservices zu einem großen Dienst gekoppelt werden.
Allerdings geht es bei der Microservices-Architektur um mehr als nur die Bündelung von Kernfunktionen. Es geht auch darum, Entwicklungsteams und Kommunikation so zu strukturieren, dass sie für zukünftige Anforderungen skalierbar sind und die Integration neuer Features ermöglichen.
Beispiel für Microservices
Das Architekturkonzept Microservices kann an einem Beispiel am Einfachsten dargestellt werden. Ein greifbares Beispiel ist ein Onlineshop. Damit lassen sich die Funktionen „In den Warenkorb legen“ sowie der Warenkorb selbst jeweils mit unterschiedlichen Microservices betreiben. Sie kommunizieren über eine Datenbank oder einen zentralen Server miteinander.
Die einzelnen Services können bei Bedarf in anderen Anwendungen wiederverwendet werden.
Welche Vorteile bieten Microservices?
Aufgrund der Unabhängigkeit von einzelnen Microservices, können Entwicklungsteams unabhängig voneinander arbeiten. Dadurch lässt sich recht schnell ein agiler Entwicklungsprozess skalieren.
Durch paralleles Arbeiten kann die Gesamtzeit für die Entwicklung verkürzt werden.
Im Gegensatz zu monolithischen Applikationen sind einzelne Microservices leichter weiterentwickelbar.
Eine Änderung an einem kleinen Teil der Anwendung erfordert nur das neue Ausliefern eines oder einiger weniger Dienste. Ein Ausfall eines Microservices beeinflusst andere Services nicht.
Durch die Aufteilung der Anwendung in Microservices werden Flexibilität, Skalierbarkeit sowie Wartbarkeit erhöht.
Mit einem durchdachten Service-Konzept können Synergieeffekte durch die Wiederverwendung von Services geschaffen werden.
Welche Nachteile bringen Microservices mit sich?
Die größte Herausforderung bei der Arbeit mit Microservices stellt wohl die Komplexität und Service-Struktur der Anwendungen dar.
Für die Entwicklung und Bereitstellung von Services wird ein tiefes technisches Wissen, wie auch die ausreichenden Kapazitäten benötigt.
Die komplexe Kommunikation zwischen den einzelnen Services muss mit entsprechendem Schnittstellen Know-how gemanagt werden.
Die Komplexität einer monolithischen Anwendung verschwindet nicht, wenn sie als eine Reihe von Microservices neu implementiert wird. Ein Teil der Komplexität wird nur in betriebliche Komplexität umgewandelt. Um die Komplexität der Services grundsätzlich beherrschbar zu halten, muss im Vorfeld der Entwicklung ein durchdachtes Servicekonzept erstellt werden.
Mit einer wachsenden Anzahl an Microservices wird es schwieriger, die Übersicht zu behalten. Eine Orchestrierung für die Services wird wichtig. Spezielle Softwareanwendungen können dabei unterstützen. Aber auch hier wird das technische Know-how benötigt.
Um eine Servicelandschaft zu betreiben, werden hohe Anforderungen an die Infrastruktur gestellt. Oftmals wird unterschätzt, wie aufwändig es sein kann, eine Microservices-Landschaft zu betreiben und zu orchestrieren. Für deren Betrieb bedeutet das, dass viele Ressourcen und auch das entsprechende Wissen notwendig sind für Maintenance und Orchestrierung.
Fazit
Microservices können Unternehmen in vielen Bereichen Vorteile bringen. Allerdings müssen auch die Herausforderungen, die eine Service-Landschaft mit sich bringt genau betrachtet werden. Auch die Organisation des Unternehmens muss bereit sein für dieses Konzept, um die Vorteile nutzen zu können.
Für Microservices-Architekturen werden dedizierte Experten mit entsprechendem Fachwissen benötigt. Unternehmen müssen bereit sein, den einzelnen Teams bei der Technologieauswahl und Entwicklung Entscheidungen sowie Verantwortlichkeiten zu überlassen. Nur wer bereit ist, viele Ressourcen im Bereich IT aufzubauen oder bereits aufgebaut hat, sollte einen Microservices-Ansatz verfolgen.
Eine starke Hierarchie mit strikten Vorgaben für den Tech-Stack widerspricht dem Gedanken des schnellen und unabhängigen Deployments. Es besteht die Gefahr eines „De-facto-Monoliths“, bei dem zwar Microservices zum Einsatz kommen, aber alle in bestimmten Intervallen auf einmal deployed werden. Dies kombiniert die geringe Flexibilität von monolithischen Systemen mit der Komplexität von Microservices und bringt keine Vorteile.
Microservices sind eher für langfristige Projekte geeignet in die auch investiert werden soll. Für ein einzelnes Deployment oder den schnellen Start eines Projekts bieten sich eher monolithische Architekturen an.
Microservices erfordern deutlich mehr Ressourcen, sowohl was Infrastruktur als auch personelle Kapazitäten betrifft. Sind die nötigen Ressourcen vorhanden, eignen sich Microservices-Architekturen besonders für komplexe Projekte mit vielen Komponenten und Schnittstellen, die räumlich verteilt laufen und hochgradig skalierbar sein sollen. Dabei können auch externe Partner zur Entwicklung neuer Features eingebunden werden, ohne Einsicht ins gesamte System zu erhalten.
Die Vorteile für Microservices sind verlockend. Schlussendlich muss der Einsatz von Microservices allerdings individuell für den Einzelfall genau geprüft werden.
Sie möchten beraten werden zum Thema Microservices? Die Wünsch AG Entwicklungsexperten stehen Ihnen gerne zur Verfügung. Vereinbaren Sie noch heute Ihren kostenlosen Termin.