Vortrag, zusammen mit Renato Vinga-Martins, Java User Group Frankfurt, 29. Mai 2019
Abstract:
Hype, Innovation oder State-of-the-Art? Den Begriff Microservice gibt es seit 2011 und er wird inflationär verwendet. Ob man den Schritt hin zu Microservice wagen soll oder nicht, ist eine Entscheidung, die man sehr bewusst und gezielt treffen sollte.
Wir geben in diesem Talk eine Entscheidungshilfe und nähern uns dem Thema aus den Blickwinkeln Fachlichkeit und Architektur. Und wir machen es uns einfach: Wir raten in diesem Talk vom Microservices-Einsatz kurzerhand ab.
Äh, wie bitte? Ja, richtig gelesen - wir raten vom Microservice-Einsatz ab, ...
..., wenn fachliche und organisatorische Komplexität nicht groß genug ist! Schon Martin Fowler rät: Don't even consider microservices unless you have a system that's too complex to manage as a monolith. Doch was meint Fowler eigentlich mit "complex"? Wann ist ein IT-Vorhaben nur kompliziert?
..., wenn das Team nicht oder wenig dynamisch / flexibel agieren muss! In welchen Größenordnungen ist das eigentlich der Fall? Muss man schon Netflix sein oder geht's eine Nummer kleiner?
..., wenn der fachliche Schnitt nicht klar ist! Reicht da schon Datenhoheit als Kriterium aus? Wieviel fachliche Strukturierung brauchen wir? Wie groß oder klein ist denn "Micro"? Wie vermeidet man ein Microservice-Spaghetti?
..., wenn man sich nicht (vorher) die architektonischen und fachlichen Laufzeit-Auswirkungen klar macht! Das in Microservices geschnittene "Verteilte System" erfordert z. B., mit deutlich erhöhten Latenzen umzugehen. Und es zwingt einen, sich mit Eventual Consistency zu beschäftigen und mit teilfertigen, fachlich nicht (immer) konsistenten Teilzuständen.
..., wenn die Frage nach Integration nicht geklärt ist! Der ESB ist aus guten Gründen verpönt. Aber irgendeine Integrationstechnologie brauchen wir doch? Insbesondere ist auch die Integration bei gemeinsamen Benutzeroberflächen zu klären: Was für Web-Oberflächen recht einfach ist, ist für native oder andere Clients schon gar nicht mehr so klar.
Microservices sind also ... vor allem nicht trivial. Sie betreffen verschiedenste fachliche, architektonische und organisatorische Aspekte. Wer da nicht alle Herausforderungen durchdenkt oder sich ihrer zumindest bewusst ist - nun, dem hatten wir ja auch abgeraten :-)