Öffne deine AWS-Rechnung. Such nach “Lambda.” Dann such nach “NAT Gateway.” Genau.
Die meisten Teams haben dasselbe Gesicht wenn sie ihre erste Serverless-Rechnung aufschlüsseln. Lambda ist eine Rundungsfehler. Die restlichen 95% der Kosten verteilen sich auf Services, die im Architekturdiagramm nicht mal auftauchen: NAT Gateway, API Gateway, CloudWatch Logs, Data Transfer.
Zieh den Slider und schau, wie sich deine Rechnung zusammensetzt:
Bei niedrigem Traffic dominiert der NAT Gateway $32 im Monat dafür, dass er existiert. Bei hohem Traffic übernimmt API Gateway mit $3.50 pro Million Requests. Lambda? Bleibt einstellig. Egal bei welchem Volumen.
NAT Gateway kostet $0.045 pro Stunde plus $0.045 pro GB. Wenn dein Lambda in einer VPC läuft und AWS-Services aufruft, geht jedes Byte durch den NAT. VPC Endpoints kosten $0.01/GB und sparen dir 80%. Trotzdem setzt sie fast niemand auf.
Die unsichtbare Steuer
API Gateway. $3.50 pro Million Requests klingt nach nichts. Bei 50 Millionen Requests im Monat sind das $175 für einen HTTP-Proxy. ALB kostet für denselben Traffic ~$20. Wenn du keine API Gateway Features brauchst (Usage Plans, API Keys, Request Validation), ist ALB + Lambda die günstigere Wahl.
NAT Gateway. Der teuerste Service den niemand bewusst auswählt. Du brauchst ihn, weil Lambda in einer VPC keinen Internetzugang hat. Drei AZs für High Availability, drei NAT Gateways: $97 im Monat Grundgebühr, bevor ein einziges Byte fließt.
CloudWatch Logs. $0.50 pro GB Ingestion. Klingt billig. Aber ein console.log pro Request mit dem Request-Body drin, und du bist bei 2KB pro Invocation. Bei 10 Millionen Requests: 20GB, $10. Bei 100 Millionen: $100. Nur für Logs.
Data Transfer. Der versteckteste Posten. Cross-AZ Traffic kostet $0.01/GB in jede Richtung. Lambda in AZ-a ruft DynamoDB in AZ-b auf? Zahlen. Lambda ruft einen anderen Lambda über API Gateway auf? Zahlen. Internet Egress? $0.09/GB nach den ersten 100GB.
Wann lohnt sich Container?
Früher als du denkst.
Der Crossover liegt bei etwa 11 Millionen Requests im Monat. Darunter ist Serverless günstiger du zahlst nur was du nutzt. Darüber wird der Per-Request-Overhead von API Gateway und NAT Gateway teurer als ein paar Fargate Tasks die 24/7 laufen.
Die Zahlen sind vereinfacht. Dein Crossover hängt von deinem konkreten Stack ab: Request-Größe, Response-Größe, Compute-Dauer, DB-Zugriffsmuster. Aber die Richtung stimmt: Serverless skaliert linear, Container sublinear.
Und Fargate ist nicht deine einzige Option. ECS auf EC2 mit Reserved Instances ist nochmal 40-60% günstiger. Wenn du vorhersagbaren Traffic hast, ist Serverless die teuerste Variante nicht die günstigste.
Wann Serverless trotzdem richtig ist
Serverless macht Sinn wenn:
- Traffic unvorhersagbar ist: Spikes von 0 auf 10.000 Requests pro Sekunde, dann wieder Ruhe. Dafür sind Container schlecht.
- Du wenig Traffic hast: unter 5 Millionen Requests im Monat ist Serverless fast immer billiger. Und du zahlst nichts wenn nichts passiert.
- Time-to-Market zählt: kein Cluster-Management, keine Scaling-Config, keine Kapazitätsplanung. Du schreibst Code und deployst.
- Event-driven Workloads: S3 Events, SQS Trigger, DynamoDB Streams. Hier ist Lambda unschlagbar, weil die Alternative ein dauerhaft laufender Poller wäre.
Drei Dinge die du morgen tun kannst
1. VPC Endpoints einrichten. Für DynamoDB, S3, SQS, SNS. Interface Endpoints kosten $0.01/GB statt $0.045/GB über NAT. Bei den meisten Workloads spart das 60-80% der NAT-Kosten.
2. CloudWatch Log Retention setzen. Default ist unendlich. Setz es auf 14 Tage für Dev, 90 Tage für Prod. Alte Logs kosten $0.03/GB/Monat in Storage.
3. AWS Cost Explorer nach Service filtern. Sortier nach Kosten, nicht nach Service-Name. Der teuerste Posten ist selten der, den du erwartest.
Check deine NAT Gateway Kosten. Ernsthaft. Jetzt.