
Head-to-head: Monolith vs. Microservices
Available Now • On-Demand
Microservices sind eine Softwarearchitektur, bei der die Funktionalität der Applikation in kleinere Fragmente aufgeteilt ist, um sie robuster und skalierbarer zu machen. Diese Fragmente nennen wir „Services“. Jeder Service beschränkt sich auf eine einzelne Funktion der Applikation und ist von den anderen isoliert. Dadurch ist jeder Service unabhängig von den anderen. So können Entwicklerteams an jeweils verschiedenen Services arbeiten und eine komplexe Orchestrierung untereinander vermeiden.
Die verschiedenen Services kommunizieren schließlich über APIs oder Webdienste miteinander.
Microservices-Architektur
Um besser zu verstehen, was Microservices sind und warum sie so populär geworden sind, hilft ein Blick auf ihren Ursprung. Hier ein kurzer Überblick über ihre Geschichte.
Wie ein Phönix wurden Microservices aus der Asche ihrer früheren Inkarnation, den Services, geboren. Vor zwei Jahrzehnten haben Architekten Services konzipiert, deren Versprechen heute durch Microservices erfüllt wird. Die serviceorientierte Architektur (aka SOA) versprach der IT-Welt eine Art Wundermittel gegen schwierig zu handhabende monolithische Applikationen.
Derzeit waren Unternehmen von Backlogs und internem Hickhack geplagt, während Startups skalierbare Produkte entwickelten, die große Marktanteile verschlangen. Nun konnten Unternehmen ihre Monolithen aufbrechen, indem sie Mini-Monolithen erstellen, die die Funktionen des Kerngeschäfts enthielten.
Ein Mini-Monolith oder besser noch ein „Minilith“ wurde geschaffen, um agile Praktiken zu fördern, einem horizontalen Team die vollständige Produktverantwortung zu übertragen und allen, die ihn brauchten, einen einfachen Zugriff auf den Service zu geben. Das war beeindruckend. Doch was geschah dann?
Bei Services handelte sich um einen Tech-Trend, der wie fast alle Trends dem Muster einer Modeerscheinung folgte. Modeerscheinungen verschwinden, weil diejenigen, die sie initiiert haben, sie schon jahrelang praktiziert haben. Andere, die sich von ihrem Erfolg anstecken lassen, haben es jedoch schwer, die gleichen Resultate zu erzielen. Einige talentierte Entwickler haben ihre Services gründlich ausgearbeitet, während der Rest der IT-Branche neidisch zu verstehen versuchte, wie sie das Ganze so einfach aussehen lassen konnten.
Martin Fowler, einer der Begründer von Agile, erklärte einmal, dass die meisten Unternehmen nicht zu echten SOAs migrieren, sondern lediglich die Komplexität verlagern, hauptsächlich in den Enterprise Service Bus. Der Enterprise Service Bus (ESB) ist eine Middleware, die für die Kommunikation zwischen Services und ihren Consumern entwickelt wurde. Unternehmen nutzen ESBs, um die Schwierigkeiten bei der Entkopplung eines Geschäftsprozesses von seiner monolithischen Muttergesellschaft zu mildern.
Das Ergebnis ist eine Blackbox-Lösung, die zwar technisch „funktioniert“, sich aber nur schwer ändern, testen und verwalten lässt. Martin Fowler beschloss deshalb, die Abkürzung ESB als Erroneous Spaghetti Boxes zu verstehen.
Haben Sie bei einer Präsentation schon einmal festgestellt, dass Ihre Zuhörer eine eindeutig falsch interpretierte Version Ihres Vortrags wiedergegeben haben? Erinnern Sie sich im Zweifelsfall an Situationen, in denen es auffällig viel Kopfnicken gab. Genau so fühlten sich Entwickler, als die Unternehmenswelt das Thema serviceorientierte Architekturen in Beschlag nahm.
In dieser Situation möchte man Missverständnisse gerne korrigieren. Entwickler haben dies getan, indem sie ihre ursprüngliche Idee zu Microservices umformuliert haben. Microservices bieten im Kern die gleichen Vorteile, die ursprünglich von Services versprochen wurden. Generell folgen sie den folgenden Konventionen:
Mehrere Tech-Giganten wie Netflix, Amazon und Uber haben Microservices aufgrund ihrer vielen Vorteile längst eingeführt. Dazu zählen:
Leider ist – wie bei jedem Trend – auch bei Microservices nicht alles rosig. Hier ist der Haken.
Nach unserem Überblick über die Vor- und Nachteile von Microservices sollten Sie diese Frage nun gut beantworten können. Bevor Sie nach Microservices-Tutorials suchen, sollten Sie sich zunächst überlegen, warum Sie eine Microservice-Architektur entwickeln möchten. Wenn Ihre Antwort lautet „Weil alle großen Unternehmen das tun“, sollten Sie Ihre Entscheidung noch einmal überdenken.
In diesem Artikel haben wir einige Vorteile von Microservices vorgestellt, die deutlich machen, warum eine entsprechende Architektur nützlich sein kann. Mehrere Teams können voneinander unabhängige Continuous-Integration- und Continuous-Delivery-Pipelines (CI/CD) betreiben und dabei unterschiedliche Skills, Anbieter und Technologien einsetzen.
Entscheidend ist jedoch zu erkennen, wann genau sich dies lohnt. Die meisten Unternehmen verfügen nicht wie Netflix über ein großes Entwicklerteam mit einigen der besten Entwickler der Welt, die sich alle einer einzigen Applikation widmen. Im durchschnittlichen Unternehmen sind hochqualifizierte Entwickler rar. Zudem sind Teams in der Regel kleiner und kümmern sich um ein ganzes Portfolio von Business-Applikationen statt um ein einzelnes Produkt. Falsch eingesetzt können Microservices zu unlösbaren Situationen führen.
Gute Entscheidungen bezüglich Ihrer Architektur erfordern unbedingt ein Verständnis der Vor- und Nachteile jedes Ansatzes.
Um mehr über die verschiedenen Ansätze und die Wahl der richtigen Architektur für Ihre Entwicklungsprojekte zu erfahren, empfehlen wir die folgenden Ressourcen: