Architektur
11.07.2018, 10:40 Uhr
Von Microservices zum Monolithen
Statt Entkopplung in kleine Einheiten hat dieses Team den umgekehrten Weg gewählt – aus gutem Grund.
Also wenn sich eine Sache durch alle möglichen Spielarten der Softwarearchitektur zieht, dann ist das Modularisierung und Entkopplung. Etwas irritiert ist man deshalb, wenn ein Team den Weg von den Microservices hin zum Monolithen einschlägt. Alexandra Noonan beschreibt das Szenario in ihrem Blogpost Goodbye Microservices: From 100s of problem children to 1 superstar.
In diesem speziellen Fall ging es um eine Anwendung, die viele Daten von einer Input Pipline auf verschieden Output Pipelines und damit an Empfänger verteilen sollte. Sowohl Input als auch Output waren Services. Die ersten Probleme tauchten auf, als die Anzahl der Empfänger zunahm und diese Services ab und an keine Daten entgegen nahmen. Die Daten mussten dann nämlich zwischengespeichert werden. Sie wurden dazu einfach noch mal in die Eingangspipeline eingestellt. Das belastete aber das gesamte System und die Performance ging nach unten.
Als Lösung wurde das System immer weiter in kleinere Teile zerlegt, was sich sogar bis in die Repositories hineinzog. Allerdings führte diese Lösung zu neuen Problemen.
In der schlussendlichen Lösung wurden alle Repositories und ein Teil des Codes wieder zusammengeführt. Das entscheidende dabei war eine Testsuite, die in jedem Fall funktionierte und nicht wie in der Vergangenheit ein Eigenleben führte.