Unsere Kubernetes-Services waren geschwätzig. Zu geschwätzig. Cross-AZ-Datentransfer: ~$8K/Monat.

Die Architektur:

  • 20 Microservices
  • Verteilt über 3 AZs (gut für HA)
  • Die Services rufen sich gegenseitig häufig auf
  • Pro Request: im Schnitt 5 Inter-Service-Calls

Die Rechnung:

  • Cross-AZ-Datentransfer: $0,01/GB in jede Richtung, effektiv also $0,02/GB
  • Bei gleichmäßig über 3 AZs verteilten Pods überschreiten rund 2/3 der Aufrufe eine AZ-Grenze
  • Rechenbeispiel für einen nutzerseitigen Flow: 1 Mio. Requests/Tag × 5 Calls × 50 KB Payload ≈ 250 GB/Tag East-West-Traffic, davon ~167 GB Cross-AZ ≈ $100/Monat
  • Das klingt harmlos — bis man jeden Flow addiert: Request- und Response-Payloads, Retries, gRPC-Streaming, Log-Shipping und Kafka-Replikation über alle 20 Services
  • Mit VPC Flow Logs gemessen: ~13 TB/Tag Cross-AZ ≈ $260/Tag ≈ $8K/Monat

Erwogene Lösungen:

  • Single AZ — verworfen: eliminiert die Kosten, indem es die Hochverfügbarkeit eliminiert
  • Topology-aware Routing — Same-AZ-Endpoints für Service-zu-Service-Calls bevorzugen
  • Payload-Größen reduzieren — Kompression und Pagination bei den geschwätzigsten APIs
  • API-Calls bündeln, wo möglich
  • Service Mesh mit Locality-aware Load Balancing

Ergebnis: 60% weniger Cross-AZ-Traffic mit Locality-aware Routing von Istio.

Lektion: Hochverfügbarkeit hat ihren Preis. Kennen Sie ihn. Datentransfer gehört zu den Posten, die wir in Cloud-Kosten-Reviews als Erstes prüfen, weil er sich in „Networking“ versteckt und niemand dafür zuständig ist.


← Zurück zu Lessons Learned

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