Microservices: Zerlege dein System, um es zu beherrschen

Statt eine grosse Software als ein einziges, eng gekoppeltes Programm zu bauen, wird sie bei einer Microservices-Architektur nach dem Prinzip divide et impera (teile und herrsche) prinzip in viele kleine, spezialisierte Dienste aufgeteilt, die jeweils eine klar abgegrenzte Aufgabe haben. Diese Bausteine können unabhängig voneinander entwickelt, getestet, bereitgestellt, aktualisiert und bei Bedarf ersetzt werden, ohne das gesamte System zu verändern. 

Einführung in Microservices

Stell dir vor, du baust ein Lego-Haus. Statt eines riesigen, schweren Blocks nimmst du viele kleine Steine, die du jederzeit austauschen oder erweitern kannst. Genau so funktionieren Microservices: Grosse Software-Apps werden je nach Bedarf in kleinere, unabhängige Programme zerlegt, die jeweils nur eine Aufgabe erledigen. Diese Bausteine kommunizieren über das Internet miteinander und machen Apps flexibler, schneller und robuster.  

Um das Konzept besser zu verstehen und einen guten Überblick zu bekommen, nehmen wir als Beispiel einen Online-Shop. So sehen wir die Vor- und Nachteile beider Ansätze klarer.

Was ist eine Monolith-Architektur (eine einzige grosse Anwendung)?

Ein Monolith ist ein grosses Programm, das alle Funktionen eines Online-Shops in einem einzigen Block vereint. Produkte, Warenkorb, Zahlung und Versand sind eng miteinander verbunden und laufen gemeinsam ab. Wenn eine Änderung, etwa im Bezahlsystem, gemacht werden muss, betrifft das die gesamte Anwendung. Das bedeutet, dass man oft den ganzen Shop neu starten oder sogar komplett umbauen muss, was zeitaufwendig und fehleranfällig sein kann. Fehler in einem Bereich können das ganze System lahmlegen, und es ist schwieriger, einzelne Teile unabhängig weiterzuentwickeln oder zu skalieren. 

 Vorteile: 

  • Einfache Entwicklung für kleine Projekte, da alles an einem Ort ist 
  • Einfaches Testen, da nur eine Anwendung vorliegt 
  • Geringerer Ressourcenbedarf, da keine Kommunikation zwischen Diensten nötig ist 

Nachteile: 

  • Änderungen an einem Teil erfordern oft Neustart oder Umbau der ganzen Anwendung 
  • Fehler in einem Modul können das gesamte System lahmlegen 
  • Eingeschränkte Skalierbarkeit, da nur die ganze Anwendung hochgefahren wird 
  • Entwicklung wird bei grossen Projekten unübersichtlich und langsam

Was ist eine Microservices-Architektur (eine Anwendung, die aus kleinen Bausteinen besteht)?

Eine Microservice-Architektur zerlegt eine grosse Software-Anwendung in viele kleine, unabhängige Dienste, die jeweils nur eine spezifische Aufgabe übernehmen. Im Gegensatz zum Monolith kommunizieren diese Dienste über standardisierte Schnittstellen miteinander und können separat entwickelt, getestet und skaliert werden.  

Das Motto lautet: 

“The golden rule: can you make a change to a service and deploy it by itself without changing anything else?”  Sam Newman: Building Microservices: Designing Fine-Grained Systems 

 Stell dir einen Online-Shop vor. Statt ein einziges Programm zu haben, gibt es zum Beispiel: 

  • einen Service für Produkte und Preise 
  • einen Service für den Warenkorb 
  • einen Service für Zahlungen 
  • einen Service für den Versand 

Wenn nun etwas am Bezahlsystem geändert werden muss, kann nur dieser Teil angepasst werden, ohne den Rest des Shops anzurühren. Und wenn der Versand mal nicht funktioniert, können die Kund:innen den Shop weiterhin nutzen und im Katalog stöbern. 

 Vorteile 

  • Unabhängige Entwicklung und Aktualisierung: Jeder Microservice kann separat aktualisiert oder ausgetauscht werden, ohne das gesamte System zu beeinflussen. 
  • Bessere Skalierbarkeit: Nur stark genutzte Dienste werden gezielt skaliert, was Ressourcen spart. 
  • Erhöhte Ausfallsicherheit: Ein Fehler in einem Dienst beeinträchtigt nicht das gesamte System, Nutzer können weiterhin andere Funktionen nutzen. 

Nachteile 

  • Komplexere Kommunikation: Viele kleine Dienste müssen zuverlässig miteinander kommunizieren, was zusätzliche Herausforderungen und Fehlerquellen schafft. 
  • Höherer Aufwand bei Entwicklung und Betrieb: Jeder Dienst braucht eigene Infrastruktur, Überwachung und Tests. 
  • Verteilte Fehleranalyse: Fehlererkennung und Debugging werden schwieriger, weil Probleme über mehrere Dienste verteilt sein können. 

Fazit

Die Entscheidung zwischen Monolith und Microservices läuft auf eine Frage hinaus: Wie gross soll Ihr Projekt werden?

Der Monolith ist einfach und ideal für kleine Projekte.

Microservices sind zwar komplexer, bieten aber die nötige Skalierbarkeit, Ausfallsicherheit und Flexibilität für wachsende Anwendungen (z.B. grosse Online-Shops). 

Daher ist die Microservice-Architektur der zukunftssichere Weg für nachhaltiges Wachstum und schnelle Innovation.

Beitrag teilen

Muhamed Rustemi

Muhamed Rustemi ist Technical Consultant bei der IPG - Information Processing Group AG und bloggt aus dem Unterricht des CAS Modern Software Engineering & Development.

Alle Beiträge ansehen von Muhamed Rustemi →

Schreibe einen Kommentar