Merancang arsitektur yang selalu tersedia: multi-AZ tanpa single point of failure, perbedaan load balancer L4 dan L7, hingga auto-scaling yang menyesuaikan kapasitas berdasarkan beban, lengkap dengan contoh perintah CLI AWS.

Di episode 5 kita membangun VPC dengan subnet di beberapa AZ, lalu di episode 6 kita mengisinya dengan VM. Namun satu VM yang menangani semua traffic adalah titik rawan: jika ia mati, aplikasi ikut mati. Episode 8 ini menjawab dua pertanyaan besar arsitektur cloud: bagaimana membagikan beban ke banyak mesin, dan bagaimana jumlah mesin itu menyesuaikan diri dengan beban.
Kita akan mulai dari konsep high availability dan no single point of failure, lalu membandingkan load balancer L4 dan L7, memetakan layanan masing-masing provider, dan menutup dengan auto-scaling lengkap contoh CLI AWS.
Sebelum menyentuh tooling, pahami tiga istilah yang menentukan desain arsitektur:
Prinsip dasar mencapai ketiganya adalah redundansi lintas AZ. Karena AZ adalah gedung data center yang terpisah fisiknya, menempatkan mesin di minimal dua AZ berarti jika listrik atau jaringan satu gedung padam, gedung lain tetap melayani. Inilah alasan kenapa di episode 5 kita selalu menempatkan subnet di beberapa AZ, bukan satu.
Note
Ukur kesepakatan ketersediaan dengan angka: target uptime 99.9 persen berarti downtime maksimal sekitar 43 menit per bulan; 99.99 persen hanya sekitar 4,3 menit. Semakin tinggi angka sembilan, semakin mahal biaya arsitekturnya. Pilih target yang sesuai dengan bisnis, jangan otomatis mengejar yang tertinggi.
Load balancer adalah "pintu masuk tunggal" yang menerima traffic lalu mendistribusikannya ke banyak server. Namun ia bisa bekerja pada dua lapisan yang berbeda:
/api ke service A, /assets ke service B), membaca header dan cookies, memutus koneksi TLS, serta melakukan health check berbasis HTTP.| Aspek | L4 (transport) | L7 (application) |
|---|---|---|
| Bekerja pada | TCP/UDP | HTTP/HTTPS |
| Dasar routing | IP + port | Path, header, host |
| Fitur khas | Latensi terendah | Path routing, SSL termination, health check HTTP |
| Contoh layanan | NLB, Azure Load Balancer | ALB, GCP HTTP(S) LB, Azure Application Gateway |
Tip
Analoginya seperti resepsionis gedung. Resepsionis L4 hanya tahu "semua pengunjung naik ke lantai sesuai nomor tujuan". Resepsionis L7 tahu lebih dalam: pengunjung ke lantai 3 yang butuh bagian HR diarahkan ke meja A, yang butuh bagian keuangan ke meja B. Keduanya sah — pilih sesuai seberapa banyak "kecerdasan" routing yang kalian butuhkan.
Konsep sama, nama berbeda. Peta lengkapnya:
| Kebutuhan | AWS | GCP | Azure |
|---|---|---|---|
| HTTP/HTTPS (L7) | Application Load Balancer | HTTP(S) Load Balancing | Application Gateway |
| TCP/UDP (L4) | Network Load Balancer | TCP/UDP Load Balancing | Load Balancer |
| Internal | ALB atau NLB internal | Internal Load Balancing | Internal Load Balancer |
Yang patut diperhatikan: karena load balancer adalah pintu masuk tunggal, ia sendiri sebaiknya direplikasi. Di cloud, load balancer biasanya dijalankan sebagai layanan terkelola yang redundan secara internal oleh provider — kalian tidak perlu membangun HA untuk load balancer itu sendiri, hanya memastikan konfigurasinya menyebar ke beberapa AZ.
Redundansi menangani kegagalan, tapi belum menangani lonjakan. Auto-scaling memecahkan masalah itu: jumlah mesin menyesuaikan beban secara otomatis.
Important
Auto-scaling mengurangi kapasitas saat beban turun, tapi menurunkan kapasitas adalah operasi yang berisiko. Pastikan scale-in tidak pernah mematikan instance yang sedang memproses request penting — gunakan health check yang berbasis aplikasi (misalnya cek HTTP pada endpoint khusus), bukan sekadar "proses hidup". Dan selalu pasang asuransi: jangan biarkan minimum terlalu kecil sehingga satu instance menanggung seluruh traffic.
Bayangkan restoran yang menambah koki saat jam makan siang dan melepasnya saat sepi — dengan tiga aturan sederhana: minimal dua koki selalu ada, maksimal sepuluh koki, dan tambah satu koki jika antrian pembeli di atas batas tertentu. Itulah persis cara kerja auto-scaling.
Langkah pertama adalah membuat launch template — cetakan konfigurasi untuk setiap instance baru. Perintah aws ec2 create-launch-template menyimpan cetakan itu di cloud:
aws ec2 create-launch-template \
--launch-template-name web-template \
--launch-template-data '{
"ImageId": "ami-0abcdef1234567890",
"InstanceType": "t3.medium",
"KeyName": "lab-key",
"SecurityGroupIds": ["sg-0abc123"]
}'Lalu bentuk Auto Scaling Group yang memakai template tersebut dan menyebar ke beberapa subnet di AZ berbeda — dilakukan lewat aws autoscaling create-auto-scaling-group:
aws autoscaling create-auto-scaling-group \
--auto-scaling-group-name web-asg \
--launch-template "LaunchTemplateName=web-template" \
--min-size 2 --max-size 10 --desired-capacity 3 \
--vpc-zone-identifier "subnet-0aaa,subnet-0bbb" \
--health-check-type ELBTerakhir, pasang kebijakan scaling berbasis target: biarkan cloud menjaga rata-rata CPU di sekitar 60 persen, menambah atau mengurangi instance otomatis:
aws autoscaling put-scaling-policy \
--auto-scaling-group-name web-asg \
--policy-name cpu-target \
--policy-type TargetTrackingScaling \
--target-tracking-configuration '{
"PredefinedMetricSpecification": { "PredefinedMetricType": "ASGAverageCPUUtilization" },
"TargetValue": 60
}'Jika target dirasa terlalu agresif atau terlalu longgar, cukup ubah satu angka:
{
"PredefinedMetricType": "ASGAverageCPUUtilization",
"TargetValue": 60, # [!code --]
"TargetValue": 75 # [!code ++]
}Tip
Kombinasikan dua strategi: target tracking untuk lonjakan tak terduga, dan scheduled scaling untuk lonjakan yang bisa diprediksi. Menaikkan kapasitas sebelum jam sibuk mencegah "efek dingin" — instance baru butuh beberapa menit untuk siap menerima traffic, dan jika scale-out baru dimulai saat beban sudah naik, pengguna sudah terlanjur merasakan lambatnya respons.
Pada episode 8 ini, kita telah merancang arsitektur yang tangguh: high availability lewat redundansi lintas AZ, tidak ada single point of failure, load balancer L4 dan L7 yang membagi traffic dengan cerdas, serta auto-scaling yang menyesuaikan jumlah mesin dengan beban. Kalian juga sudah melihat contoh nyata membuat launch template, Auto Scaling Group, dan kebijakan scaling lewat AWS CLI.
Kunci yang harus dibawa pulang:
Aplikasi kalian sekarang sudah bisa tumbuh dan bertahan. Namun database yang mengikutinya belum: men-scalable aplikasi tanpa database yang andal sama saja menambah pintu masuk tanpa memperkuat gudang. Episode 9 berikutnya membahas Relational Managed Databases (RDBMS) — managed versus self-hosted, high availability multi-AZ dengan failover otomatis, hingga SQL terdistribusi cloud-native seperti Aurora dan Spanner.