İçeriğe atla

AWS ECS Fargate Mimari Diyagramı: Servisler, Görevler ve Yük Dengeleme

Fargate'te ECS ile çalışan bir üretim web servisi, çizilip açıklandı: görev ağı, ALB, IAM rolleri, secret'ler, otomatik ölçekleme, Fargate Spot ve dağıtımlar.

· Kurucu ve geliştirici

Yayımlandı:

İki Availability Zone'a yayılan bir VPC. Kullanıcılar, genel alt ağların arasındaki bir Application Load Balancer'a ulaşır; o da her özel alt ağdaki bir Fargate görevine iletir. Görevler Multi-AZ RDS'i sorgular; ECR, Secrets Manager ve CloudWatch Logs'a VPC uç noktalarıyla ulaşır.

İmajı push edersiniz, servisi oluşturursunuz ve ilk görevler hiçbir zaman RUNNING durumuna ulaşmaz. ResourceInitializationError ile dururlar: “unable to pull secrets or registry auth”. İmajda bir sorun yok. Görevler, Amazon ECR'ye ya da Secrets Manager'a giden bir rotası olmayan özel alt ağlarda duruyor; bu yüzden Fargate onları başlatamıyor.

Fargate üzerindeki ECS sorunlarının çoğu buna benzer: Konteynerler çalışır, ama etraflarındaki ağ, rol ya da yük dengeleyici ayarları çalışmaz. Bu yazı, Amazon ECS ve AWS Fargate üzerinde çalışan bir üretim web servisini ağ ve yük dengelemeden IAM'e, ölçeklemeye, dağıtımlara ve ECS ile EKS karşılaştırmasına kadar, kopyalayabileceğiniz bir diyagramla adım adım ele alıyor.

ECS kavramları tek tabloda

Kavram Nedir Örnekte
Küme (cluster) Servislerin ve görevlerin mantıksal bir grubu prod
Görev tanımı (task definition) Sürümlü şablon: imaj, CPU, bellek, portlar, roller, secret'ler, loglama orders-api:42
Görev (task) Bir görev tanımının çalışan bir kopyası; Fargate'te kendi çekirdeği, belleği ve ağ arayüzü vardır 2 ile 10 arası kopya
Servis (service) İstenen görev sayısını korur, görevleri yük dengeleyiciye kaydeder, dağıtımları yürütür orders-api
Kapasite sağlayıcı (capacity provider) Görevlerin çalıştığı yer: FARGATE, FARGATE_SPOT, EC2 Auto Scaling grupları ya da ECS Managed Instances FARGATE ve FARGATE_SPOT

Küme bir ağ sınırı değildir: Görevler, belirttiğiniz alt ağlarda ve kendi güvenlik gruplarının arkasında çalışır. ECS orkestrasyon için ücret almaz; Fargate her görevin vCPU, bellek ve depolama kullanımını, en az bir dakika olmak üzere saniye bazında faturalandırır.

Ağ: her göreve bir ENI

Fargate görevleri her zaman awsvpc ağ modunu kullanır: Her görev kendi elastik ağ arayüzünü (ENI), alt ağından özel bir IP'yi ve kendi güvenlik gruplarını alır (Fargate görev ağı). Bunun üç sonucu var:

  • Alt ağlarda yer olmalı. Her görev bir IP alır ve AWS her alt ağda beş adresi ayırır. İki AZ'ye yayılan altmış görev, alt ağ başına 30 demektir; %200 ile yapılan bir rolling dağıtım ise kısa bir süre için 60 adres ister. Bir /24 (251 kullanılabilir) yeter; bir /27 (27 kullanılabilir) yetmez.
  • Güvenlik grupları görev başına çalışır. Konteyner portunu yalnızca yük dengeleyicinin grubuna, veritabanındaki 5432 portunu da yalnızca görevlerin grubuna açın.
  • Görevlerin AWS API'lerine giden bir yolu olmalı. Kodunuz çalışmadan önce Fargate, görevin ENI'si üzerinden imajı çeker, secret'leri getirir ve log göndermeye başlar.

Özel bir alt ağdan bu yol ya bir NAT ağ geçidi ya da VPC uç noktalarıdır (yazının yazıldığı Kasım 2026 itibarıyla US East fiyatları):

Yol Oluşturduğunuz Maliyet Ödünleşim
NAT ağ geçidi AZ başına bir tane ya da tek bir bölgesel NAT ağ geçidi AZ başına saatlik 0,045 USD artı GB başına 0,045 USD Üçüncü taraf API'lere de ulaşır
VPC uç noktaları ecr.api, ecr.dkr, logs, secretsmanager arayüz uç noktaları, artı S3 ağ geçidi uç noktası Uç nokta ve AZ başına saatlik 0,01 USD artı GB başına 0,01 USD; S3 ağ geçidi ücretsizdir İnternete hiçbir yol yok

S3 ağ geçidi uç noktasını atlamayın: ECR, imaj katmanlarını S3'te saklar (ECR arayüz uç noktaları). İki AZ'deki dört arayüz uç noktası, veri ücretleri hariç ayda yaklaşık 58 USD tutar (8 × 0,01 USD × 730 saat); bu, 66 USD'lik iki NAT ağ geçidine yakındır. Yani veri ücretleri ve gizlilikte uç noktalar, erişim alanında NAT kazanır. Kasım 2025'ten beri bölgesel bir NAT ağ geçidi AZ'lere kendiliğinden yayılıyor ve genel alt ağ gerektirmiyor. Görevlere genel IP vermek de işe yarar, ama her görevi internetten yalnızca tek bir güvenlik grubu kuralı uzakta bırakır. AWS VPC diyagramı rotaları ve NAT yerleşimini ele alıyor.

Yük dengeleyici: hedef gruplar ve sağlık kontrolleri

ALB, en az iki AZ'de alt ağ ister; her biri /27 ya da daha büyük olmalı ve sekiz boş adresi bulunmalıdır. awsvpc görevi bir EC2 instance'ı değil, bir ENI olduğundan hedef grubun türü ip olmalıdır. Servis başına bir hedef grup kullanın; görevleri ECS kaydeder ve kayıtlarını siler.

Ayar Varsayılan Değerlendirin
Sağlık kontrolü aralığı 30 sn Servis 10 sn'den kısa sürede başlıyorsa 5 sn (AWS'nin önerisi)
Sağlıksız eşiği 2 kontrol Başarısız bir görev yaklaşık bir dakikada devreden çıkar
Sağlıklı eşiği 5 kontrol Yeni hedefler için tek bir başarılı kontrol yeterlidir
Kayıt silme gecikmesi (deregistration delay) 300 sn Kısa istekler için 30 sn ya da daha az; eski görevlerin boşaltılması bu kadar sürebilir
healthCheckGracePeriodSeconds 0 Başlatma süresini kapsayın, yoksa yavaş başlayan görevler döngü hâlinde değiştirilir

Kasım 2025'ten beri ECS Express Mode, bu ALB, HTTPS ve ölçekleme kurulumunu bir konteyner imajından oluşturabiliyor. Yük dengeleyici diyagramı sağlık kontrollerini ve boşaltmayı (draining) genel olarak ele alıyor.

IAM: yürütme rolü ve görev rolü

İki rol, iki ayrı iş:

  • Görev yürütme rolünü (task execution role) kodunuz değil, ECS ve Fargate ajanı kullanır: İmajı çeker, logları yazar ve görev tanımında adı geçen secret'leri okur (görev yürütme rolü). AmazonECSTaskExecutionRolePolicy ECR'yi ve logları kapsar; secretsmanager:GetSecretValue iznini kendiniz ekleyin, müşteri tarafından yönetilen bir anahtar için de kms:Decrypt iznini.
  • Görev rolü (task role), kodunuzun AWS SDK üzerinden S3 ya da SQS için kullandığı roldür; ECS Exec'in ihtiyaç duyduğu rol de budur.

Secret'ler ortam değişkeni olarak gelir:

"secrets": [{
  "name": "DB_PASSWORD",
  "valueFrom": "arn:aws:secretsmanager:us-east-1:111122223333:secret:prod/orders/db-AbCdEf:password::"
}]

ECS değeri konteyner başlarken okur. Rotasyona giren bir secret çalışan görevlere ulaşmaz; bu yüzden rotasyondan sonra yeniden dağıtım yapın ya da uygulamanın secret'i görev rolüyle kendisinin okumasını sağlayın. Yukarıdaki gibi tek bir JSON anahtarı seçmek, güncel LATEST olan 1.4.0 platform sürümünü gerektirir.

Ölçekleme: hedef izleme ve Fargate Spot

Service Auto Scaling için ECSServiceAverageCPUUtilization, ECSServiceAverageMemoryUtilization ya da ALBRequestCountPerTarget üzerinde hedef izleme (target tracking) ile başlayın. Ölçeği hızla büyütür, yavaşça küçültür ve dağıtımlar sırasında küçültmeyi duraklatır; birden fazla politika varsa ancak hepsi hemfikir olduğunda küçültür. AZ başına en az bir görev tutun.

Fargate Spot %70'e varan oranda daha ucuzdur. AWS kapasiteyi geri aldığında görev, SpotInterruption durdurma kodlu bir EventBridge olayı ve bir SIGTERM olarak iki dakikalık bir uyarı alır (Fargate kapasite sağlayıcıları). stopTimeout en fazla 120 saniye olabilir ve Fargate hiçbir zaman kendiliğinden normal kapasiteye geri dönmez; bu yüzden bir taban (base) tutun:

"capacityProviderStrategy": [
  { "capacityProvider": "FARGATE", "base": 2, "weight": 1 },
  { "capacityProvider": "FARGATE_SPOT", "weight": 1 }
]

İlk iki görev her zaman normal Fargate'te çalışır; geri kalanı bire bir bölünür. Spot üzerinde tek görevli bir servis, kapasite geri gelene kadar düpedüz durur.

Dağıtımlar: rolling, blue/green, linear ve canary

Varsayılan strateji rolling'dir: minimumHealthyPercent 100 ve maximumPercent 200 olduğunda ECS, eski görevleri durdurmadan önce yenilerini başlatır. Deployment circuit breaker'ı geri alma (rollback) ile birlikte açın; varsayılan olarak, başarısız görevler istenen sayının yarısına ulaştığında (en az 3, en fazla 200) dağıtımı başarısız sayar. CloudWatch alarmları da aynı geri almayı tetikleyebilir.

Temmuz 2025'ten beri ECS, blue/green dağıtımları CodeDeploy olmadan kendisi yürütüyor; Ekim 2025'ten beri linear ve canary dağıtımları da. Bu stratejiler yeni revizyonu ikinci bir hedef grubun arkasında başlatır, listener trafiğini kaydırır ve eski görevleri bir bekleme süresi (bake time) boyunca tutar; böylece geri alma bir trafik geçişinden ibaret olur.

Strateji Trafik geçişi Geri alma Ek kapasite
Rolling Görevler gruplar hâlinde değiştirilir Yeniden dağıtım maximumPercent değerine kadar
Blue/green Hepsi birden, isteğe bağlı test trafiğinden sonra Geri geçiş 2 kat
Linear Eşit adımlar, örneğin birkaç dakikada bir %10 Geri geçiş 2 kat
Canary Önce küçük bir pay, sonra geri kalanı Geri geçiş 2 kat

Lambda ya da duraklatma (pause) hook'ları her aşamanın geçişini bir koşula bağlayabilir. Blue/green ile ALBRequestCountPerTarget üzerinde hedef izleme desteklenmez. Dağıtım stratejileri diyagramı bu kalıpları karşılaştırıyor.

Gözlemlenebilirlik

awslogs sürücüsü awslogs-group, awslogs-region ve Fargate'te awslogs-stream-prefix ister. 25 Haziran 2025'ten beri varsayılan olarak 10 MB arabellekli non-blocking modda çalışıyor: Bir CloudWatch aksaklığı artık uygulamanızı dondurmaz, ama arabellek dolduğunda satırlar düşer. Gelişmiş gözlemlenebilirlikli Container Insights'ı, kabuk erişimi için ECS Exec'i ve görev durumu değişikliklerine bakan bir EventBridge kuralını ekleyin; durma nedeni (stopped reason) bir görevin neden öldüğünü söyler. İzleri toplamak için görevin içinde sidecar olarak bir OpenTelemetry Collector çalıştırın; bu Collector, OpenTelemetry ile loglar, metrikler ve izler için kurulan hattın ajan katmanıdır.

ECS ve EKS

Amazon ECS Amazon EKS
Kontrol düzlemi Ücretsiz Küme başına saatlik 0,10 USD, ayda yaklaşık 73 USD
API AWS görev tanımları ve servisleri Kubernetes, Helm, operatörler
Hesaplama Fargate, EC2, ECS Managed Instances Fargate, EC2 node grupları, EKS Auto Mode
Yükseltmeler Kontrol düzlemi için yok Kubernetes sürümü başına 14 ay standart destek, ardından küme başına saatlik 0,60 USD
Yerleşik dağıtımlar Rolling, blue/green, linear, canary Rolling; diğerleri Argo Rollouts gibi araçlarla

Fiyatlar, yazının yazıldığı tarihteki (Kasım 2026) EKS fiyatlandırma sayfasından alınmıştır. Kubernetes taşınabilirliğine ya da ekosistemine ihtiyacınız olduğunda EKS'yi seçin; Kubernetes mimari diyagramı o resmi gösteriyor. Kısa süreli, olay güdümlü işler için Lambda tabanlı serverless tasarımlar sürekli çalışan bir servise hiç ihtiyaç duymaz.

Fargate üzerinde ECS diyagramı

İki Availability Zone'a yayılan bir VPC. Kullanıcılar, genel alt ağların arasındaki bir Application Load Balancer'a ulaşır; o da her özel alt ağdaki bir Fargate görevine iletir. Görevler Multi-AZ RDS'i sorgular; ECR, Secrets Manager ve CloudWatch Logs'a VPC uç noktalarıyla ulaşır.

22 bileşen · 10 bağlantı

Archboard'da aç
Diyagram içeriği
  • VPC
  • Public subnet · AZ a
  • Public subnet · AZ b
  • Private subnet · AZ a
  • Private subnet · AZ b
  • Application Load Balancer
  • orders-api task
  • RDS for PostgreSQL
  • VPC endpoints
  • Users
  • Amazon ECR
  • Secrets Manager
  • CloudWatch Logs
  • HTTPS 443
  • HTTP 8080
  • SQL 5432
  • image pull
  • secrets at start
  • awslogs
İki Availability Zone'a yayılan, Fargate üzerinde tek bir ECS servisi. Genel alt ağlardaki ALB, özel alt ağlardaki görev IP'lerine iletir; görevler ECR, Secrets Manager ve CloudWatch Logs'a internet üzerinden değil, VPC uç noktaları üzerinden ulaşır.

Nasıl okunur:

  • AZ'ler satırlardır. Her birinde bir genel ve bir özel alt ağ vardır. ALB, RDS ve uç noktalar satırların arasında durur, çünkü her biri iki AZ'ye de yayılır: her genel alt ağda bir ALB düğümü, veritabanı için de Multi-AZ bir yedek (standby).
  • Düz mavi çizgi istek yoludur: ALB'ye HTTPS, AZ başına bir göreve HTTP 8080, 5432 portunda SQL.
  • Kesikli mor çizgi platform trafiğidir: Fargate'in görev yürütme rolüyle VPC uç noktaları üzerinden gönderdiği imaj çekme, secret ve log trafiği.
  • Yalnızca genel alt ağlar 0.0.0.0/0 trafiğini internet ağ geçidine yönlendirir.
  • Markdown bloğu servis ayarlarını listeler.

ECS diyagramlarını net çizmek

  • Görevleri AZ başına alt ağların içine koyun. Her şeyi saran bir “ECS kümesi” kutusu, görevlerin nerede çalıştığını ve nelere erişebildiğini gizler.
  • AZ başına bir görev çizin, ölçekleme aralığını da yanına yazın.
  • ECR, Secrets Manager ve CloudWatch Logs'a giden yolu gösterin. Eksik bir yol, görevlerin başlayamamasının yaygın nedenlerinden biridir.
  • ALB bağlantısını port ve hedef türüyle etiketleyin, kesikli bağlantıların arkasındaki rolü de bir lejantta adlandırın.
  • Dışarıda bırakın: sidecar'lar, CI/CD ve DNS kayıtları, diyagramın konusu olmadıkları sürece.

AWS üç katmanlı mimari şablonu aynı VPC düzenini EC2 ile kuruyor.

Archboard'da oluşturun

  1. Google ya da GitHub ile giriş yapın ve bir diyagram oluşturun.
  2. Ağ pack'inden bir VPC ekleyin ve içine, her AZ için bir genel ve bir özel olmak üzere dört Alt ağ node'u yerleştirin.
  3. Genel alt ağların arasına Bulut pack'inden bir Bulut yük dengeleyici, genel alt ağlara da rota ve ALB düğümü için Metin notları ekleyin.
  4. Her özel alt ağa Bulut pack'inden bir Hesaplama node'u ekleyin ve görev boyutunu Instance tipi alanına yazın.
  5. Özel alt ağların arasına Yüksek erişilebilirlik ayarı açık bir Yönetilen veritabanı ve VPC uç noktaları için bir Bulut kaynağı ekleyin; ikisi de Bulut pack'inden.
  6. VPC'nin dışına Ağ pack'inden İnternet, Docker pack'inden Kayıt deposu, Güvenlik pack'inden Kasa ve DevOps pack'inden Loglar ekleyin.
  7. Etiketli bağlantılar çizin, platform trafiği için kesikli bağlantı kullanın ve ayarları içeren, Temel pack'inden bir Markdown bloğu ekleyin.

CloudFormation’dan diyagrama ve Terraform’dan diyagrama araçları, mevcut stack kodunu ilk taslağa dönüştürür; servisi Terraform'dan çizerken taslağı sadeleştirin ve istek yolunu elle ekleyin.

Örnek 15 diagram node kullanıyor ve Free planın sınırları içinde kalıyor.

SSS

Fargate, awsvpc ağ modunu gerektirir mi? Evet. Her Fargate görevi kendi ağ arayüzünü ve özel IP adresini alır; bu yüzden hedef gruplarının ip hedef türünü kullanması gerekir.

ECS görev rolü ile görev yürütme rolü arasındaki fark nedir? Yürütme rolü, ECS'nin görevi başlatmasını sağlar: imajı çekmek, secret'leri getirmek, log göndermek. Görev rolü ise uygulama kodunuzun kendi AWS çağrıları için kullandığı roldür.

Özel alt ağlardaki Fargate görevlerinin NAT ağ geçidine ihtiyacı var mı? AWS servisleri için yok. ECR, CloudWatch Logs ve Secrets Manager için arayüz uç noktaları, artı S3 ağ geçidi uç noktası yeterlidir. NAT'a yalnızca internete ulaşmak için ihtiyacınız olur.

ECS, CodeDeploy olmadan blue/green dağıtımları destekliyor mu? Evet. ECS, Temmuz 2025'ten beri blue/green'i, Ekim 2025'ten beri de linear ve canary'yi yerel olarak çalıştırıyor; bekleme süreleri (bake time), yaşam döngüsü hook'ları ve alarma dayalı geri alma da buna dahil.

ECS, EKS'den daha mı ucuz? Kontrol düzlemi için evet: ECS'nin orkestrasyon ücreti yoktur, bir EKS kümesi ise standart destekte saatte 0,10 USD tutar. Fargate ve EC2 instance fiyatları ikisinde de aynıdır.

Ücretsiz başlayın — tek kullanıcı, kredi kartı gerekmez.

İlgili yazılar

← Blog'a dön

Bir dakikada canvas açın

Google veya GitHub ile giriş yapın. Tek koltuk ücretsiz; ekip katılınca planı yükseltin.