Microservice

Microservice ist eine komponentenorientierte Architektur die eine abgeschlossene Geschäftsfunktion adressiert. Die Verantwortlichkeit je Microservice liegt bei genau einem Team. Microservice sollen funktionalen Architekturprinzipien Rechnung tragen und Seiteneffekt frei sein. Ein Microservice muss für sein Team überschaubar sein. Ein Microservice wird nicht gepflegt. Microservice unterstützen horizontale Skalierung z.B. über Commodity Hardware. Microservice tauschen Informationen über definierte (Web-)Schnittstellen aus.


Wann sind Microservice zweckmäßig?

Die Anzahl der Entwickler muss die Bildung mehrerer Teams ermöglichen. Die time-to-market ist geschäftskritisch oder es soll die Legacy-Modernisierung von Anwendungen erfolgen. Entwicklung in einem Start-Up bedeutet faktisch time-to-market Fokus zur Kundenakquirierung. Für die Betrieb der Microservice ist Personal mit Know-How vorhanden. Die Komplexität bzw. Größe der umzusetzenden Aufgabe ist groß genug um in mehrere Microservice unter Berücksichtigung der Entwicklungs- und Betriebsoverheads sinnvoll zerlegt zu werden.


Wie groß ist ein Microservice?

Microservice werden gewartet oder neu entwickelt und nicht gepflegt. Es gibt keine Major oder Minor Versionen von Microservice. Ein Microservice ist zudem nur so groß um in einem überschaubaren Zeitraum durch sein Team neu entwickelt werden kann. Zweckmäßig kann ein Aufwand von 1 Teammonat sein, der sich durch die Anzahl der Teammitglieder ergibt.


Wie ist ein Microservice zu schneiden?

Jeder Microservice kapselt in seinem Bounded Context als Komponente die komplette Geschäftsfunktion und kann daher vom Frontend bis zu den Arbeitsdaten alles umfassen. Der Zugriff auf Bestandsdaten ist hingegen nur einem oder wenigen Microservice zugestanden.

Ein Microservice durchbricht das Konzept des Schichtenmodells nur soweit, wie die Seiteneffektfreiheit garantiert bleibt.


Ein anderer Kontext bedeutet ein anderer Microservice. Microservice teilen sich dabei keine Daten oder Entwicklungsergebnisse mit anderen Microservice um hierdurch seiteneffektfrei bzw. funktional zu bleiben und weiterhin einfach horizontal skalierbar zu sein.

Ein Microservice entwickelt Geschäftsobjekte nur mit den unmittelbar benötigten Daten. Jeder Microservice kann so ein Geschäftsobjekte mit gleichem Namen aber unterschiedlichen Inhalt beinhalten (z.B. Kunde), so dass bewusst Quelltext und Funktionalitäten in verschiedenen Microservice mehrmals entwickelt werden.


Welchen Lebenszyklus hat ein Microservice?

Microservice werden entwickelt, (getestet), in Einsatz genommen, gewartet und außer Betrieb genommen. Da durch die Größe eines Microservice eine Pflege vom Aufwand nah an einer Neuentwicklung ist, wird eine Weiterentwicklung durch Neuentwicklung umgesetzt. Neue und alte Microservice können nebeneinander betrieben werden.


Wann ist ein Microservice zu hinterfragen?

Gibt es ausreichend Geschäftsfunktionen

Gibt es ausreichend Entwickler

Bedarf es horizontaler Skalierung (out-of-the-box)

Kann auf Wiederverwendung von Quelltext verzichtet werden