Es gibt diese Themen, die bei manchen Zeitgenossen sehr emotionale Reaktionen auslösen und zu heftigen Diskussionen führen, selbst wenn das jeweilige Thema eher technisch ist und die beteiligten Parteien rational Denkende und Handelnde sind. Microservices sind so ein Thema. Für mich sind Microservices – bei allen Nachteilen – ein geeignetes Architekturmuster, um althergebrachte Nachteile zu überwinden. Um es jetzt schon zu sagen: Mich begeistern Microservices!

Anforderungen an eine gute Softwarearchitektur

Es soll im Jahre 2008 gewesen sein, als bei Netflix für 4 Tage nichts mehr ging, weil die Datenbank einen Fehler aufwies. Hier hatte ein Fehler an einer zentralen Komponente zu einem Ausfall des Gesamtsystems geführt. Ausfallsicherheit ist eine wichtige Anforderung an ein Softwaresystem.

Heutzutage kann die Last auf ein einzelnes IT-System sehr groß sein oder zumindest sehr stark schwanken. Eine Software muss daher „atmen", d. h. sich dem Bedarf kurzfristig anpassen können. Darum ist horizontale und vertikale Skalierung eine weitere Anforderung. Funktionale Änderungen müssen außerdem schnell bereitgestellt werden können.

Positive Eigenschaften der Microservices

Microservices sind eigenständige kleine Software-Anwendungen, unabhängig entwickelt, deployed und betrieben. Die Kommunikation erfolgt über definierte REST-APIs. Die Microservices sind fachlich geschnitten und konzentrieren sich auf eine Sache.

Damit einher geht die Eigenschaft der losen Kopplung, denn die kleinen Services teilen sich nichts. Die kleinen, unabhängigen Komponenten werden parallel entwickelt. Prozesse und Werkzeuge des Continuous Integration und Deployments erlauben einen kontinuierlichen Fluss an Änderungen. Das heißt: Releasezyklen ade. Das Prinzip „Du baust es – du betreibst es" führt zur Nähe des Betriebs zur Entwicklung. DevOps führt Entwicklung und Betrieb zusammen.

Negative Eigenschaften der Microservices

Wo viel Licht ist, da ist auch Schatten. Microservices lösen nicht alle Herausforderungen bzw. führen zu neuen. Die Netzbelastung und damit einhergehende Latenzzeit ist ein Faktor. Des Weiteren ist die Transaktionssteuerung bei serviceübergreifenden Prozessen ein Problem. Das Management vieler Services in großen Organisationen ist kompliziert. Auch der fachliche Serviceschnitt ist – wie schon in alten SOA-Zeiten – eine Kunst.

Fazit

Insbesondere im Cloud-Kontext sind Microservices oft genau richtig und auch als Refactoring-Ansatz sehr gut geeignet. Aber die Nachteile müssen auch betrachtet und bewertet werden. Die eingangs genannte emotionale Haltung der Gesprächsteilnehmer ist mir auch jetzt noch ein Rätsel.

← Leitlinien zur EAM-Einführung Ihre Cloud braucht eine Strategie →