Bölüm 6: Ağ Çıkış Maliyeti Optimizasyonu, NAT Gateway ve AZ'ler Arası Veri Transferi
VPC Endpoint ile NAT Gateway maliyetlerini baypas etme, topoloji duyarlı yönlendirme ve CDN origin shielding.
#1. Yönetici Özeti ve Problem Tanımı
Genel bulut sağlayıcıları bant genişliğini yüksek karlı bir tekel gibi yönetir. AWS üzerinde içeriye internet girişi (ingress) ücretsizdir, ancak dışarıya internet çıkışı (egress) 90/TB) tutar. Dahası, aynı AWS bölgesindeki iki erişilebilirlik alanı (AZ) arasında veri taşımak çift yönlü olarak $0.02/GB veri transfer ücreti doğurur.
Veri yoğun mimarilerde (akış, analitik, medya işleme), ağ veri transferi toplam bulut faturasının 'ını oluşturabilir.
#2. NAT Gateway Egress Tuzağı
Yönetilen NAT Gateway servisleri iki ayrı boyuttan faturalandırılır:
- Saatlik çalışma ücreti: NAT Gateway başına ~$32.40/ay.
- Veri işleme ücreti: İçinden geçen her bir bayt için 45/TB).
Dahili bir uygulama Amazon ECR'dan büyük Docker imajları indirdiğinde, CloudWatch'a günlük yüklediğinde veya genel bir NAT Gateway üzerinden Amazon S3'ü sorguladığında, şirketler iki kez ödeme yapar: NAT işleme ücreti (0.09/GB).
Çözüm: VPC Gateway ve Interface Endpoint'leri
S3 ve DynamoDB için VPC Gateway Endpoint'leri %100 ücretsizdir ve trafiği tamamen AWS'in dahili özel omurgası üzerinden yönlendirir:
# NAT Gateway'i atlamak için ücretsiz S3 Gateway Endpoint'i
resource "aws_vpc_endpoint" "s3" {
vpc_id = aws_vpc.main.id
service_name = "com.amazonaws.${var.region}.s3"
route_table_ids = [
aws_route_table.private.id
]
}
#3. AZ'ler Arası Veri Transferi İsrafını Ortadan Kaldırmak
Kubernetes kümelerinde, yerellik duyarlı yönlendirme olmaksızın farklı erişilebilirlik alanları arasında iletişim kuran servisler ağ maliyetlerini katlar:
[AZ-1a'daki Pod A] ─── (AZ'ler Arası Geçiş: $0.01/GB) ───> [AZ-1b'deki Pod B]
│
[AZ-1a'daki Pod A] <─── (AZ'ler Arası Geçiş: $0.01/GB) ─── [Yanıt]
Çözüm: Topoloji Duyarlı Yönlendirme (Topology-Aware Routing)
Pod'dan pod'a iletişimi aynı bölge içinde tutmak için Kubernetes Topology Aware Routing özelliğini etkinleştirin:
apiVersion: v1
kind: Service
metadata:
name: order-service
annotations:
service.kubernetes.io/topology-mode: "Auto"
spec:
selector:
app: order-service
ports:
- port: 80
targetPort: 8080
#4. Kenar CDN Önbellekleme ve Origin Shielding
Genel internet çıkışını 'in üzerinde azaltmak için:
- API ve statik varlık kaynaklarının önüne küresel bir CDN (Cloudflare veya CloudFront) yerleştirin.
- Bölgesel önbellek ıskalamalarını tek bir konsolide kaynak isteğinde birleştirmek için Origin Shielding yapılandırın.
- Statik ve sürüm oluşturulmuş API yanıtları için uygun
Cache-Control: public, max-age=31536000, immutablebaşlıklarını tanımlayın.
