Frank PientkaInnovation und Technologie

Microservices: Warum kleiner manchmal besser ist

„Small is beautiful“ war der Titel des 1973 veröffentlichen Buches vom Volkswirt Ernst Schumacher.  Im Rahmen der Energiekrise ging es darin darum, die „Rückkehr zum menschlichen Maß“ zu finden und einen angemessenen Umgang mit Ressourcen und der Organisation der Mittel zu finden. Es war ein Gegenimpuls zum damaligen Größenwahn des „bigger is better“. Das „too big to fail“ ist heute bei den kaum mehr zu beherrschbaren Systemen zum „too big to scale“ geworden.

Software bestimmt immer mehr unser Leben und die Wirtschaft. Sie hat die Tendenz, immer größer und damit weniger beherrschbar zu werden. Deswegen besteht die Software-Krise immer noch und ist eine große Herausforderung beim Bau moderner kritischer Systeme.

Neuere Ansätze zur Software-Architektur, wie Microservices, sollen die Probleme von SOA (serviceorientieren)-Architekturen vermeiden und neue Anwendungsgebiete erschließen.

SOA trat vor über zehn Jahren an, die Integration der heterogenen Systeme innerhalb großer Firmen zu erleichtern und gleichzeitig für das neu aufkommende Web zu öffnen. Gedanklich war das Ganze jedoch eher ein Infrastrukturansatz, der oft auf einen Zoo von zentralen schwergewichtigen und teuren kommerziellen Produkten führen konnte. Statt Ressourcen effizienter zu nutzen, dauerte es oft länger und wurde teurer, einen neuen Dienst produktiv zu bringen. Die Webservices-Schnittstellen waren oft nicht programmiersprachenunabhängig lesbar und verwendbar.

Deswegen besann man sich wieder auf die eigentlichen Grundlagen des Internet. Wichtige Impulsgeber sind hier die ThoughtWorks-Mitarbeiter Martin Fowler und James Lewis.

Das REST-Prinzip ist eine wichtige Grundlage von Microservices. Hier steht nicht der Aufruf von entfernten Funktionen im Vordergrund, sondern die Verwendung von Ressourcen. Damit wird eine einfache, Programmiersprachen unabhängige Verwendung ermöglich. Dadurch dass REST-Dienste zustandslos sind, wird eine gute Verteilbarkeit und Skalierbarkeit erreicht. Außerdem sind REST-Schnittstellen selbstbeschreibend, so dass die Ressourcen in unterschiedlichen Darstellungen angeboten werden können. Die beliebtesten sind dabei die Webformate HTML und JSON. Das macht REST-Schnittstellen sowohl für Menschen als auch einfache Werkzeuge nutzbar. Gleichzeitig können sie die ausgereifte Infrastruktur des Internets und die technischen Erfahrungen damit optimal nutzen, ohne das Rad neu erfinden zu müssen.

Weitere Prinzipien von Microservices sind „smart endpoint, dumb filter pipes, independently deployable”. Diese erleichtern die Verteilung und vermeiden, zu viel Logik in der Schnittstelle selbst zu verstecken. Um den Kommunikations- und Koordinationsaufwand zu minimieren, ist es wichtig, dass die Services von kleinen Teams unabhängig voneinander entwickelt und betrieben werden können.

Die Verantwortung des Entwicklungsteams hört nicht bei der finalen Erstellung und Übergabe der produktiven Version auf, sondern das Team sorgt dafür, dass ihre Dienste über eine möglichst große Zeit erfolgreich produktiv genutzt werden, um damit einen möglichst großen Geschäftsnutzen zu erreichen. Hier gilt das Motto, ein System vom Ende her zu betrachten. Wer etwas erstellt, muss sich auch um den Betrieb kümmern gemäß dem Motto „you build, you run it““.

Wie jede Medizin hat auch der Microservice-Ansatz Auswirkungen auf die Art, wie Systeme gebaut werden, und bringt einige Nebenwirkungen mit sich. Da Teile der Komplexität aus der Software im Betrieb der Software landen, sollten Microservice nicht ohne ein ausgereiftes und automatisiertes Monitoring und Deployment der gesamten Software-Erstellungskette mit vielen kleinen Feedback-Schleifen eingeführt werden. Bevor Microservices zu neuen Monolithen und schwer wartbaren Altlasten werden, sollten weitere Prinzipien im Team vereinbart und eingehalten werden.

Sicher sind noch weitere Muster, wie für Stabilität, Ausfallsicherheit und Testbarkeit mit verbraucherorientierten Tests, für den Bereich Cloud und DevOps nötig, um auf die neuen Herausforderungen von Microservices angemessene Lösungen zu finden.

Als ein früher Prophet der Nachhaltigkeit war es Erich Schumacher wichtig, Menschen mit den geeigneten Mitteln auszustatten, um eine nachhaltige Entwicklung zu ermöglichen.

Das „rechte Maß” zu finden, fällt uns Menschen auch heute noch schwer. Deswegen können Ansätze wie Microservices die Dinge einfacher und damit beherrschbarer machen. Dies ist ein guter Ansatz sein, die Komplexität zu beherrschen.

Schlagwörter: