Die Microservice Architektur zu verstehen, ist nicht immer ganz so einfach. Letztens beim Lesen bin ich auf ein Buch von Martin Abbott und Michael Fischer gestossen. In Ihrem Buch “The Art of Scalability” (Addison-Wesley, 2015) findet man eine sehr intuitive Veranschaulichung, die uns helfen wird den Begriff Microservices zu verstehen.

Das Modell definiert drei Achsen um eine Applikation zu skalieren: X, Y und Z.

Wuerfel

Load Balancing

Die X-Achse veranschaulicht die Skalierung von Instanzen. Dabei wird die entsprechende Applikation hinter einem Load Balancer parallel betrieben, um bei Ausfall oder starkem Anspruch zu entlassen. Dadurch schafft man bei N Instanzen eine starke Verfuegbarkeit und Ausfallsicherheit.

Subset Routing

Bei der Z-Achse unterhaelt man auch mehrere Instanzen einer Applikation, doch sind diese Instanzen nicht identisch. Jede Instanz ist verantwortlich fuer ein Subset der Daten. Dabei wird mithilfe eines Routers und genauen Routing Attributen (wie userID oder aehnlichem) die Anfrage an die verantwortliche Instanz geleitet.

Diese Methode ist sehr hilfreich, falls man mit einer steigenden Datenmenge und folgend einer starken Anzahl an Requets konfrontiert ist.

Microservices

Beide Achsen thematisieren die Probleme Kapazitaet und Verfuegbarkeit; jedoch was macht man wenn die Komplexitaet der Applikation zunimmt und die Entwicklung mit einem zu grossen Verwaltungsaufwand konfrontiert ist?

In diesem Bereich kommt Y-Skalierung zum Einsatz. Die Applikation und ihre diversen Funktionen werden aufgeteilt; genauer gesagt werden die Services voneinander entkoppelt alsdann Flexibilitaet durch Modularitaet entsteht. Entwicklungsteams koennen jetzt gesondert an Services arbeiten und natuerlich X/Z-Skalierung betreiben, aber auf Service-Ebene. Jeder Service besitzt von nun an eine kohaesive, fokusierte Verantwortung.