Software-Architektur

Monolith vs.
Microservices

Zwei Wege, eine Anwendung zu bauen – und warum keiner davon „der richtige" ist.

Basierend auf: freeCodeCamp – „Microservices vs. Monoliths Explained" · Pfeiltasten zum Blättern →

Interaktiv · 02

Gleicher Shop, zwei Bauweisen

Unser Beispiel aus dem Artikel: ein Online-Shop mit vier Aufgaben – Produktsuche, Bezahlung, Bestellungen, Empfehlungen.

▶ Schalte um und schau, wie sich dieselbe App verändert

ProduktsucheBezahlungBestellungenEmpfehlungen

▼ eine gemeinsame Datenbank

Produktsucheeigene DB
Bezahlungeigene DB
Bestellungeneigene DB
Empfehlungeneigene DB

▲ reden über APIs & Message Queues miteinander

Ein Codebase, ein Deployment. Alles lebt zusammen in einem Repository und wird als eine Einheit ausgeliefert. Alle Features laufen auf gemeinsamer Infrastruktur.

Viele kleine Services, geschnitten nach Fachgebiet. Jeder hat eigenen Code und eigene Datenbank und kann für sich gebaut, getestet und ausgeliefert werden.

Analogie · 03

Restaurant oder Food-Court?

So erklärt es der Artikel – und so merkt es sich die Klasse am leichtesten:

Monolith

Das klassische Restaurant

Eine Küche, eine Speisekarte. Alle Gerichte kommen aus derselben Küche – alles ist aufeinander abgestimmt, alles hängt zusammen. Willst du ein Gericht ändern, betrifft es die ganze Küche.

Microservices

Der Food-Court

Viele spezialisierte Stände – Pizza, Sushi, Burger. Jeder hat eigene Küche, eigene Karte, eigenes Team. Jeder Stand kann für sich umbauen, vergrößern oder schließen.

Behalte das Bild im Kopf – die nächsten vier Demos spielen alle in dieser Küche bzw. diesem Food-Court.

Demo 1 · Ausfallsicherheit · 04

Was passiert, wenn etwas kaputtgeht?

▶ Klick einen Service kaputt und vergleiche beide Welten

Monolith – die eine Küche

ProduktsucheBezahlungBestellungenEmpfehlungen

✓ Alles läuft

Microservices – der Food-Court

Produktsuche
Bezahlung
Bestellungen
Empfehlungen

✓ Alles läuft

Merksatz: Im Monolithen reißt ein Fehler alles mit. Bei Microservices schließt nur ein Stand – der Rest des Food-Courts verkauft weiter.

Demo 2 · Skalierung · 05

Black Friday: Alle wollen bezahlen

▶ Starte den Sale und vergleiche, was hochgefahren werden muss

Monolith – ganze App klonen

SucheBezahlungBestellungEmpfehlung
SucheBezahlungBestellungEmpfehlung
SucheBezahlungBestellungEmpfehlung

Laufende Feature-Instanzen: 4

Microservices – nur Bezahlung klonen

Suche
Bestellung
Empfehlung
Bezahlung
Bezahlung
Bezahlung

Laufende Feature-Instanzen: 4

Auch ein Monolith kann skalieren: Man kopiert die ganze App auf mehrere Server und verteilt die Anfragen per Load Balancer. Aber jede Kopie fährt alle Features mit hoch. Microservices skalieren nur das, was gebraucht wird – das spart Server und Geld.

Demo 3 · Deployment · 06

Ein kleiner Bugfix in der Suche

▶ Deploye den Fix und schau, wie viel jeweils angefasst wird

Monolith – alles neu ausliefern

Produktsuche ← der FixBezahlungBestellungenEmpfehlungen

Bereit

Microservices – nur den einen Service

Produktsuche ← der FixBezahlungBestellungenEmpfehlungen

Bereit

Beim Monolithen wird für eine Zeile Änderung die ganze App neu gebaut, getestet und ausgerollt – und alle Features tragen das Risiko. Bei Microservices fasst du nur den einen Service an.

Demo 4 · Kommunikation · 07

Wie Services miteinander reden

Getrennte Services müssen sich abstimmen. Dafür gibt es zwei Arten – wie ein Telefonanruf oder ein Briefkasten.

▶ Wechsle den Modus und leg dann den Bezahl-Service lahm

Bestellungenwill kassieren lassen
Message Queueder Briefkasten
Bezahlungkassiert

Telefonanruf: Bestellungen ruft an und wartet in der Leitung, bis Bezahlung antwortet. Einfach – aber eng gekoppelt.

Und die Daten?

Kein Service greift direkt in die Datenbank eines anderen – nur über dessen API. So kann ein Team sein Schema ändern, ohne andere zu brechen.

Zwischenstand · 08

Was wir gesehen haben

Jede Bauweise gewinnt in anderen Disziplinen – genau das sagt der Artikel: Es ist ein Trade-off, kein Duell mit klarem Sieger.

DisziplinPunkt geht anWarum
EinfachheitMonolithKein verteiltes System: keine Netzwerk-Latenz, keine verteilte Datenkonsistenz.
Schnell iterierenMonolithEine Codebasis – ideal, solange sich das Produkt noch ständig ändert.
Kosten am AnfangMonolithWeniger Infrastruktur, weniger Betrieb, weniger Leute nötig.
AusfallsicherheitMicroservicesDemo 1: Ein kaputter Service reißt nicht alles mit.
Gezielt skalierenMicroservicesDemo 2: Nur die Bezahlung hochfahren, nicht den ganzen Shop.
Unabhängig deployenMicroservicesDemo 3: Ein Bugfix fasst nur einen Service an.
Freie Tech-WahlMicroservicesJedes Team wählt Sprache und Datenbank passend zu seinem Service.

Interaktiv · 09

Was passt zu euch?

▶ Hakt an, was auf euer (fiktives) Team zutrifft – die Empfehlung passt sich live an

Noch nichts angehakt – probiert es aus!Der Artikel sagt: Die Antwort hängt von eurer Phase ab, nicht von der Mode.
„Fast jeder ursprüngliche Plan ist falsch."frei nach Paul Graham – zitiert im Artikel: darum starten die meisten besser einfach.

Mittelweg · 10

Der Hybrid-Ansatz

Man muss sich nicht ganz entscheiden. Der Artikel schlägt vor: Ähnliches zusammenfassen, Spezielles herauslösen.

Bezahlung Bestellungen

gleiche Technologie → ein Monolith

ProduktsucheSpezial-DB für Volltextsuche
Empfehlungeneigener Stack für Machine Learning

Spezialfälle → eigene Services

So bekommt man die Einfachheit des Monolithen dort, wo sie reicht – und die Freiheit der Microservices nur dort, wo sie wirklich gebraucht wird.

Fazit · 11

Es kommt auf die Phase an

Am Anfang

Startups

profitieren vom Monolithen: schneller lernen, weniger bezahlen, einfacher umbauen.

Später

Etablierte Firmen

mit echten Skalierungs-Anforderungen profitieren von Flexibilität und Resilienz der Microservices.

Der übliche Weg

Netflix, Uber und Etsy starteten alle als Monolith – und migrierten erst zu Microservices, als sie die Probleme wirklich hatten.

Quelle: freecodecamp.org/news/microservices-vs-monoliths-explained