Zum Hauptinhalt springen

Antipatterns

Microservices scheitern selten an Technologie.
Sie scheitern an Kopplung, Ownership und falschen Schnitten.

Diese Anti-Patterns treten in der Praxis besonders häufig auf.


1️⃣ Verteilter Monolith

Beschreibung

Mehrere Deployables existieren,
aber sie sind fachlich und technisch eng gekoppelt.

Deployments müssen koordiniert werden.
Änderungen ziehen mehrere Services gleichzeitig nach sich.

Prinzipdarstellung

Kernaussage: Zyklische Abhängigkeiten = verteilte Kopplung.

Symptome

  • Big-Bang-Releases
  • Viele synchrone Call-Chains
  • Gemeinsame Datenbank
  • Enge Versionsabhängigkeiten

Strukturelles Problem

Verteilung ersetzt keine Entkopplung.

Gegenmaßnahme

  • Fachliche Schnitte nach Domäne (Bounded Contexts)
  • Reduktion synchroner Abhängigkeiten
  • Event-basierte Entkopplung
  • Klare Service-Grenzen

2️⃣ Shared Database als Integrationsbus

Beschreibung

Mehrere Services greifen auf dieselbe Datenbank zu. Integration erfolgt über Tabellen statt über Verträge.

Symptome

  • Schema-Änderungen betreffen mehrere Teams
  • Implizite Kopplung
  • Schwer nachvollziehbare Abhängigkeiten
  • Transaktionslogik über Service-Grenzen hinweg

Strukturelles Problem

Datenbank wird zur versteckten Integrationsschicht.

Gegenmaßnahme

  • Jeder Service besitzt seine Daten
  • Integration nur über API oder Events
  • Explizite Verträge statt impliziter Tabellen

3️⃣ Chatty APIs / Zu feine Services

Beschreibung

Services sind so klein geschnitten, dass ein Use Case mehrere synchrone Aufrufe benötigt.

Symptome

  • Hohe Latenz
  • Komplexe Call-Chains
  • Fehlerpropagation
  • Performanceprobleme unter Last

Strukturelles Problem

Schnitt entlang technischer Layer statt fachlicher Capabilities.

Gegenmaßnahme

  • Services nach Business-Fähigkeiten schneiden
  • Aggregation am richtigen Ort
  • Reduktion synchroner Interaktionen
  • Async wo sinnvoll

4️⃣ Gateway als God Service

Beschreibung

API Gateway oder Edge-Service enthält:

  • Orchestrierungslogik
  • Business-Regeln
  • Aggregationslogik

Symptome

  • Gateway wird Bottleneck
  • Deployments hängen am Gateway
  • Fachlogik ist zentralisiert
  • Teams verlieren Autonomie

Strukturelles Problem

Zentrale Schicht ersetzt verteilte Domänenverantwortung.

Gegenmaßnahme

  • Gateway nur für Routing/Auth/Transformation
  • Business-Logik gehört in Services
  • Klare Verantwortlichkeiten

5️⃣ Fehlende Ownership

Beschreibung

Services existieren technisch, aber organisatorisch fühlt sich niemand verantwortlich.

Symptome

  • Keine klaren Service-Owner
  • Unklare SLOs
  • Incident-Pingpong
  • Wissen bei Einzelpersonen

Strukturelles Problem

Microservices ohne End-to-End-Ownership sind nur technische Fragmentierung.

Gegenmaßnahme

  • Ein Team pro Service (Build + Run)
  • Klare SLOs
  • Dokumentierte Verträge
  • Transparente Verantwortlichkeiten

6️⃣ Schein-Resilienz

Beschreibung

Es gibt Timeouts, aber:

  • keine Backoff-Strategie
  • keine Idempotenz
  • keine DLQ
  • kein Monitoring

Symptome

  • Kaskadierende Fehler
  • Unklare Ursachen
  • Retry-Stürme

Gegenmaßnahme

  • Resilience-Standards pro Abhängigkeit
  • Circuit Breaker
  • Idempotente Consumer
  • Observability als Pflicht

Folgen dieser Anti-Patterns

  • Hohe Änderungskosten
  • Schlechte Fehlertoleranz
  • Langsame Delivery trotz „Microservices“
  • Operative Fragilität
  • Abhängigkeit von Schlüsselpersonen

Kernbotschaft

Microservices sind kein Diagramm.

Sie sind:

  • Autonomie
  • Datenhoheit
  • Ownership
  • Resilienz
  • klare Domänenschnitte

Wenn diese Eigenschaften fehlen, ist es kein Microservice-System – sondern ein verteilter Monolith mit zusätzlicher Komplexität.