Penskalaan Otomatis Layanan ECS dan Penyeimbangan Beban
Hubungkan ALB ke layanan ECS untuk perutean berdasarkan jalur, lalu konfigurasikan penskalaan otomatis layanan agar merespons metrik CPU atau metrik CloudWatch khusus.
Penskalaan Otomatis Layanan ECS dan Penyeimbangan Beban adalah pelajaran AWS Solutions Architect gratis di CoddyKit. Ini adalah pelajaran 4 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar AWS Solutions Architect, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus AWS Solutions Architect mencakup 4 pelajaran total.
Kebutuhan Penskalaan Otomatis Layanan ECS
jumlah yang diinginkan secara tetap pada layanan ECS tidak dapat menanggapi fluktuasi lalu lintas—Anda akan menyediakan kapasitas berlebih (membuang biaya) atau kekurangan kapasitas (menurunkan kinerja). Penskalaan Otomatis Layanan ECS secara otomatis menyesuaikan jumlah tugas yang diinginkan berdasarkan metrik CloudWatch. Di balik layar, fitur ini menggunakan layanan Application Auto Scaling—kerangka kerja yang sama yang digunakan oleh DynamoDB, Aurora, dan ElastiCache. Penskalaan otomatis layanan ECS mendukung kebijakan pelacakan target, penskalaan bertahap, dan penskalaan terjadwal.
Mendaftarkan ECS sebagai Target yang Dapat Diskalakan
Sebelum menambahkan kebijakan penskalaan, daftarkan layanan ECS sebagai target yang dapat diskalakan di Application Auto Scaling. Tentukan jumlah tugas minimum dan maksimum, nama cluster, serta nama layanan sebagai ID sumber daya. Tindakan ini menetapkan batas tempat penskalaan otomatis akan beroperasi. Jumlah minimum memastikan Anda selalu memiliki kapasitas dasar; jumlah maksimum mencegah penskalaan tak terkendali yang menghabiskan kapasitas Fargate atau instans EC2.
aws application-autoscaling register-scalable-target \
--service-namespace ecs \
--scalable-dimension ecs:service:DesiredCount \
--resource-id 'service/MyAppCluster/MyAppService' \
--min-capacity 2 \
--max-capacity 20Pelacakan Target untuk Layanan ECS
Pelacakan Target adalah kebijakan penskalaan otomatis yang direkomendasikan untuk sebagian besar layanan ECS. Metrik target yang paling umum adalah ECSServiceAverageCPUUtilization—tetapkan target sebesar 50–70%, lalu ECS akan menambah atau menghapus tugas untuk mempertahankan tingkat CPU tersebut. Metrik lain yang sangat berguna adalah jumlah permintaan ALB per target: lacak jumlah permintaan ALB per tugas dan lakukan penskalaan untuk mempertahankan tingkat permintaan target per instans. AWS secara otomatis menangani scale-out dan scale-in dengan periode cooldown yang sesuai.
aws application-autoscaling put-scaling-policy \
--service-namespace ecs \
--scalable-dimension ecs:service:DesiredCount \
--resource-id 'service/MyAppCluster/MyAppService' \
--policy-name 'ECSTargetTracking' \
--policy-type TargetTrackingScaling \
--target-tracking-scaling-policy-configuration '{
"PredefinedMetricSpecification": {
"PredefinedMetricType": "ECSServiceAverageCPUUtilization"
},
"TargetValue": 60.0,
"ScaleOutCooldown": 60,
"ScaleInCooldown": 300
}'Perutean ALB ke Layanan ECS
Menghubungkan Application Load Balancer (ALB) ke layanan ECS akan mendistribusikan lalu lintas HTTP/HTTPS ke seluruh tugas yang sedang berjalan. Grup target ALB mendaftarkan IP setiap tugas (untuk Fargate/awsvpc) atau port kontainer (untuk mode bridge). ECS secara otomatis mendaftarkan tugas baru ke grup target saat tugas tersebut dimulai dan membatalkan pendaftarannya saat tugas berhenti. ALB melakukan pemeriksaan kesehatan pada setiap tugas; tugas yang tidak sehat akan dikuras (koneksi ditutup secara bertahap) sebelum layanan menghentikannya.
Perutean Berbasis Jalur untuk Beberapa Layanan
Salah satu pola yang sangat berguna adalah merutekan jalur URL yang berbeda ke layanan ECS yang berbeda menggunakan perutean berbasis jalur ALB. Satu ALB dengan satu listener HTTPS dapat merutekan: /api/orders/* ke layanan ECS Orders, /api/users/* ke layanan ECS Users, dan /api/products/* ke layanan ECS Products—masing-masing didukung oleh layanan ECS sendiri dengan penskalaan independen. Cara ini menghilangkan kebutuhan akan load balancer terpisah untuk setiap layanan mikro, sehingga mengurangi biaya dan menyederhanakan pengelolaan DNS.
# ALB listener rule for ECS microservice routing
aws elbv2 create-rule \
--listener-arn 'arn:aws:elasticloadbalancing:...' \
--priority 10 \
--conditions '[{"Field": "path-pattern", "Values": ["/api/orders/*"]}]' \
--actions '[{"Type": "forward", "TargetGroupArn": "arn:...OrdersTargetGroup"}]'Pengurasan Koneksi dan Penundaan Pembatalan Pendaftaran
Saat tugas ECS akan dihentikan (selama scale-in atau deployment), ALB menandainya sebagai sedang dikuras dan berhenti merutekan permintaan baru kepadanya, tetapi tetap mengizinkan permintaan yang sedang berlangsung hingga selesai. Penundaan pembatalan pendaftaran (default 300 detik, dapat dikonfigurasi dari 0–3600 detik) adalah waktu tunggu ALB sebelum menutup koneksi secara paksa. Untuk ECS dengan durasi permintaan singkat, tetapkan penundaan pembatalan pendaftaran yang lebih rendah (30–60 detik) agar deployment dan operasi scale-in berlangsung lebih cepat. Untuk koneksi yang berlangsung lama (WebSocket, unggahan file), pertahankan penundaan yang lebih tinggi.
# Set deregistration delay on target group to 60 seconds
aws elbv2 modify-target-group-attributes \
--target-group-arn 'arn:aws:elasticloadbalancing:...' \
--attributes 'Key=deregistration_delay.timeout_seconds,Value=60'Metrik Khusus untuk Penskalaan ECS
Selain CPU dan memori, publikasikan metrik CloudWatch khusus dari aplikasi Anda (kedalaman antrean, sesi aktif, KPI bisnis), lalu gunakan metrik tersebut untuk menggerakkan penskalaan. Misalnya, jika setiap tugas ECS dapat menangani 50 pesan antrean secara bersamaan, publikasikan kedalaman antrean SQS sebagai metrik khusus dan buat kebijakan pelacakan target dengan sasaran 50 pesan per tugas. Dengan demikian, penskalaan didorong langsung oleh logika bisnis, bukan bergantung pada metrik infrastruktur yang mungkin tidak berkorelasi dengan beban aplikasi.
aws application-autoscaling put-scaling-policy \
--policy-name 'QueueDepthScaling' \
--policy-type TargetTrackingScaling \
--target-tracking-scaling-policy-configuration '{
"CustomizedMetricSpecification": {
"MetricName": "QueueDepth",
"Namespace": "MyApp",
"Statistic": "Average"
},
"TargetValue": 50.0
}' \
--resource-id 'service/MyCluster/WorkerService' \
--scalable-dimension ecs:service:DesiredCount \
--service-namespace ecsPerlindungan Scale-In untuk Tugas
Serupa dengan EC2 Auto Scaling, ECS mendukung perlindungan scale-in tugas. Tugas yang sedang berjalan dapat menetapkan tanda perlindungan scale-in-nya sendiri melalui API ECS untuk mencegah penghentian selama scale-in ketika sedang memproses pekerjaan penting. Hal ini berguna untuk tugas ECS yang bertindak sebagai pekerja SQS—pekerja yang baru saja mengambil pekerjaan panjang dari antrean dapat melindungi dirinya sendiri, menyelesaikan pekerjaan tersebut, lalu menghapus perlindungan. Tanpa fitur ini, scale-in dapat menghentikan tugas yang sedang memproses pekerjaan sehingga menyebabkan duplikasi pekerjaan atau kehilangan data.
# From inside the ECS task container
curl -X PUT 'http://169.254.170.2/v3/tasks/scale-in-protection' \
-H 'Content-Type: application/json' \
-d '{"ProtectionEnabled": true, "ExpiresInMinutes": 60}'Metrik Penskalaan: CPU vs Memori vs ALB
Pilih metrik penskalaan dengan cermat. Penggunaan CPU adalah default dan cocok untuk beban kerja yang terikat komputasi. Penggunaan memori (ECSServiceAverageMemoryUtilization) berguna untuk aplikasi yang terikat memori, tetapi meningkatkan memori memerlukan penambahan tugas—jika tugas Anda dibatasi oleh memori per tugas, bukan oleh pemrosesan bersamaan, memperbaiki alokasi memori pada definisi tugas mungkin lebih baik. Jumlah permintaan ALB per target berkorelasi langsung dengan pengalaman pengguna dan merupakan metrik yang paling dapat ditindaklanjuti untuk API web—lakukan penskalaan berdasarkan tingkat permintaan aktual per tugas.
Pemutus Sirkuit Deployment ECS
Pemutus Sirkuit Deployment ECS secara otomatis mendeteksi deployment yang gagal dan melakukan rollback ke versi stabil terakhir. Tanpanya, deployment yang bermasalah (kontainer yang gagal dalam pemeriksaan kesehatan) akan membuat ECS terus mencoba meluncurkan tugas baru tanpa batas. Dengan pemutus sirkuit diaktifkan, jika persentase tertentu dari tugas yang baru diluncurkan gagal dalam pemeriksaan kesehatan selama jendela deteksi, ECS menandai deployment sebagai FAILED dan secara otomatis melakukan rollback ke revisi definisi tugas sebelumnya. Hal ini mencegah penurunan kualitas layanan berkepanjangan akibat deployment yang bermasalah.
aws ecs create-service \
--cluster 'MyAppCluster' \
--service-name 'MyAppService' \
--task-definition 'myapp-task:5' \
--desired-count 3 \
--deployment-configuration '{
"deploymentCircuitBreaker": {
"enable": true,
"rollback": true
},
"minimumHealthyPercent": 100,
"maximumPercent": 200
}'Arsitektur Menyeluruh: ECS + ALB + Penskalaan Otomatis
Arsitektur API web berbasis kontainer yang siap produksi: Route 53 menerjemahkan domain ke nama DNS ALB; ALB menghentikan HTTPS (sertifikat ACM), menerapkan aturan WAF, dan merutekan permintaan ke grup target layanan ECS; tugas Fargate di subnet privat pada 3 AZ menangani permintaan; Penskalaan Otomatis Layanan ECS dengan pelacakan target berdasarkan jumlah permintaan ALB per target menyesuaikan jumlah tugas dari 2 hingga 50; tugas terhubung ke RDS Aurora dan ElastiCache di subnet privat. Semua log dikirim ke CloudWatch Logs; metrik menggerakkan dasbor dan alarm CloudWatch.
Pemeriksaan Singkat
Uji pemahaman Anda tentang konsep AWS Solutions Architect (SAA-C03) dari pelajaran ini.
Rangkuman Pelajaran
Dalam pelajaran ini Anda mempelajari bahwa: Penskalaan Otomatis Layanan ECS menggunakan Application Auto Scaling dengan pelacakan target (CPU, permintaan ALB, atau metrik khusus) untuk menyesuaikan jumlah tugas di antara batas minimum dan maksimum yang dikonfigurasi; perutean berbasis jalur ALB memungkinkan satu load balancer melayani beberapa layanan mikro ECS dengan merutekan jalur URL ke grup target yang berbeda; dan Pemutus Sirkuit Deployment secara otomatis melakukan rollback terhadap deployment yang gagal sebelum menyebabkan penurunan kualitas layanan berkepanjangan. Modul ECS dan kontainer ini selesai—selanjutnya kita akan mempelajari Amazon EKS untuk Kubernetes di AWS.
Belajar AWS Solutions Architect dengan tutor AI — gratis
Tulis dan jalankan kode asli di browser kamu, dapatkan bantuan instan dari tutor AI 24/7, dan lanjutkan di mana kamu tinggalkan di web atau aplikasi.
- Kursus
- 30
- Pelajaran
- 120
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Penskalaan Otomatis Layanan ECS dan Penyeimbangan Beban” gratis?
Ya — teks lengkap “Penskalaan Otomatis Layanan ECS dan Penyeimbangan Beban” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus AWS Solutions Architect, upgrade ke CoddyKit PRO. Kursus AWS Solutions Architect mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Penskalaan Otomatis Layanan ECS dan Penyeimbangan Beban”?
Hubungkan ALB ke layanan ECS untuk perutean berdasarkan jalur, lalu konfigurasikan penskalaan otomatis layanan agar merespons metrik CPU atau metrik CloudWatch khusus. Kamu berlatih AWS Solutions Architect dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai AWS Solutions Architect?
Tidak diperlukan pengalaman sebelumnya. AWS Solutions Architect di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 4 dari 4.
Berapa lama pelajaran “Penskalaan Otomatis Layanan ECS dan Penyeimbangan Beban” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran AWS Solutions Architect ini?
Ya. Setiap pelajaran AWS Solutions Architect menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Klaster ECS, Definisi Tugas, dan Layanan
- Jenis Peluncuran EC2 vs Fargate
- ECR: Menyimpan dan Mengambil Citra Kontainer
- Penskalaan Otomatis Layanan ECS dan Penyeimbangan Beban