Rechnungsschock durch Cross-AZ-Traffic
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.
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.