Wir haben unseren Monolithen in 3 Monaten in 15 Microservices aufgeteilt. Danach haben wir 2 Jahre damit verbracht, die Grenzen zu korrigieren.

Wie wir aufgeteilt haben:

  • Ein Service pro Datenbanktabelle
  • „Das wirkt wie eine natürliche Grenze“
  • Schnell ausliefern, später reparieren

Was wir falsch gemacht haben:

  • Der Order-Service brauchte Customer-Daten
  • Der Customer-Service brauchte die Order-Historie
  • Jeder Request: 5+ Aufrufe zwischen Services
  • Verteilte Joins über HTTP (ja, wirklich)

Die Symptome:

  • P99-Latenz: 50ms → 800ms
  • Ein Service down = alles kaputt
  • Teams konnten nicht unabhängig releasen (der eigentliche Sinn der Übung)
  • Dateninkonsistenz zwischen Services

Was wir hätten tun sollen:

  • Zuerst DDD Event Storming
  • Die tatsächlichen Bounded Contexts finden
  • Nach Business Capability aufteilen, nicht nach Tabelle
  • Grenzen anhand von Traffic-Mustern validieren

Lektion: Service-Grenzen sind das Schwierigste, was es richtig hinzubekommen gilt. Nehmen Sie sich Zeit — genau beim Grenzdesign zahlt sich ein externes DevOps- und Architektur-Review aus, vor der Aufteilung, nicht danach.


← Zurück zu Lessons Learned

Incidents wie dieser sind vermeidbar. Unser AWS Managed Services-Team überwacht Kundenumgebungen 24/7 mit KI-gestütztem Monitoring und Senior Engineers am Pager — damit Geschichten wie diese im Archiv bleiben.