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⁈