All Products
Search
Document Center

Auto Scaling:Evolusi layanan web menjadi arsitektur elastis dan highly available

Last Updated:Aug 19, 2026

Saat bisnis Anda berkembang, beban pada layanan web monolitik meningkat, yang dapat mengurangi stabilitas sistem. Untuk mengatasi hal ini, Anda dapat mengubah arsitektur monolitik menjadi arsitektur elastis dan highly available dengan menggunakan scaling group untuk melakukan scale-out server dan mendistribusikan beban. Pendekatan ini meningkatkan stabilitas sistem dan kecepatan respons.

Mengapa menggunakan arsitektur elastis dan highly available?

Masalah pada arsitektur monolitik

Pada arsitektur monolitik khas, semua resource ditempatkan pada satu Instance ECS. Pengguna mengakses layanan pada server tunggal ini secara langsung melalui nama domain atau alamat IP. Arsitektur ini memiliki dua masalah utama:

  • Single point of failure: Jika layanan gagal, seluruh bisnis terganggu. Hal ini sangat berdampak pada pengalaman pengguna dan dapat menyebabkan kehilangan pelanggan.

  • Bottleneck performa: Saat traffic meningkat, arsitektur monolitik dapat mencapai batas performa, menghambat ekspansi bisnis. Lonjakan traffic mendadak dapat dengan mudah memperlambat waktu respons layanan.

Fitur arsitektur highly available

Pada arsitektur elastis dan highly available, load balancer mengarahkan permintaan pengguna ke layanan bisnis yang berjalan pada instans dalam kluster. Arsitektur ini memiliki fitur utama berikut:

  • Tidak ada single point of failure (high availability): Menggunakan beberapa server untuk mendistribusikan beban, meningkatkan kapasitas layanan, dan mencegah gangguan akibat kegagalan server tunggal.

  • Skalabilitas elastis: Anda dapat menggunakan scaling group untuk mengelola kluster layanan dan mengubah jumlah server hanya dengan satu klik untuk scale-out cepat. Anda juga dapat menyiapkan kebijakan skalabilitas otomatis untuk menyesuaikan resource berdasarkan beban aplikasi.

Cara berevolusi ke arsitektur highly available

Seperti ditunjukkan pada gambar, evolusi dari arsitektur monolitik di sebelah kiri ke arsitektur elastis dan highly available melibatkan dua fase.

  • Fase 1: Pisahkan penyimpanan data dari logika bisnis

    Arsitektur elastis dan highly available mereplikasi seluruh Instance ECS. Oleh karena itu, Anda harus memisahkan penyimpanan data dan logika bisnis Instance ECS Anda (dan layanan di dalamnya). Ini juga dikenal sebagai membuatnya tanpa status, dan mencegah isu konsistensi data saat Anda melakukan scale-out dengan menambahkan lebih banyak instans.

    Sebagai contoh, saat mereplikasi Instance ECS, Anda harus memastikan bahwa database tidak disalin, sehingga mencegah kluster menggunakan beberapa sumber data berbeda. Dengan memisahkan penyimpanan data dari Instance ECS, Anda memastikan semua instans berbagi sumber data yang sama, menjaga konsistensi data.

    Jika Anda menghadapi salah satu situasi umum berikut, Anda perlu mengevaluasi dampak potensial terhadap bisnis Anda dan menyesuaikan arsitektur Anda sesuai kebutuhan.

    Situasi umum yang perlu diwaspadai

    Situasi 1: Layanan stateful pada instans

    Jika Instance ECS Anda berisi layanan stateful seperti database, mereplikasi instans ini untuk scale-out akan menghasilkan beberapa sumber data dalam kluster Anda, menyebabkan inkonsistensi data. Pisahkan layanan stateful seperti MySQL atau Redis ke deployment-nya sendiri.

    Anda juga dapat memigrasikan database MySQL atau Redis yang dikelola sendiri langsung ke ApsaraDB RDS. Dibandingkan database yang dikelola sendiri, ApsaraDB RDS lebih aman, andal, dan lebih mudah dipelihara. Untuk informasi tentang migrasi database yang dikelola sendiri ke cloud, lihat Migrasi database yang dikelola sendiri ke database cloud.

    Situasi 2: Layanan berbasis session

    Jika layanan bisnis Anda menggunakan session untuk mempertahankan status login pengguna, scaling layanan akan menyebabkan informasi login (informasi session) tidak konsisten di antara replika layanan. Hal ini dapat menyebabkan pengguna sering keluar secara tiba-tiba. Untuk mengatasi hal ini, deploy instance Redis terpisah untuk manajemen session terpusat.

    Situasi 3: Tugas terjadwal non-konkuren

    Jika bisnis Anda memiliki tugas terjadwal yang harus dijalankan hanya sekali sehari, scale-out akan menyebabkan beberapa server menjalankan tugas tersebut secara bersamaan. Anda mungkin perlu menyesuaikan logika pemrosesan tugas untuk menangani situasi ini.

  • Fase 2: Berevolusi ke arsitektur highly available

    Setelah memisahkan penyimpanan data dan logika bisnis pada Instance ECS, Anda dapat melakukan scale-out dengan membuat replika instans dan layanan bisnisnya.

    Migrasikan kluster layanan ke scaling group untuk memanfaatkan elastisitasnya guna replikasi cepat. Gunakan load balancer sebagai titik akses kluster layanan untuk mendistribusikan beban, memastikan stabilitas dan efisiensi sistem.

Migrasi cepat ke arsitektur highly available

Ikhtisar solusi

Jika Anda telah memisahkan penyimpanan data dari logika bisnis Anda (membuatnya tanpa status), Anda dapat mengikuti langkah-langkah berikut untuk segera memigrasikan layanan Anda dari arsitektur monolitik ke arsitektur elastis dan highly available menggunakan scaling group.

  1. Deploy website demo (siapkan sebuah instans). Solusi ini mensimulasikan instans layanan web demo tanpa status untuk menunjukkan proses migrasi. Anda juga dapat menggunakan instans yang sudah ada.

  2. Buat image instans yang berisi layanan bisnis. Image ini akan digunakan untuk meluncurkan instans dalam kluster Anda, secara otomatis menjalankan layanan bisnis saat startup.

  3. Buat scaling group untuk mengelola kluster layanan. Anda akan menggunakan scaling group ini untuk mereplikasi instans dengan cepat (scale-out).

  4. Siapkan titik akses terpadu untuk kluster. Asosiasikan load balancer untuk membuat titik akses terpadu.

  5. Lakukan scale-out instans (verifikasi). Replikasi instans dengan cepat dan akses load balancer untuk memverifikasi bahwa kluster berfungsi dengan benar.

1. Deploy website demo

Pertama, Anda memerlukan instans aplikasi yang merepresentasikan lingkungan produksi Anda. Instans ini akan digunakan untuk replikasi dan deployment otomatis.

Tutorial ini menyediakan layanan website demo yang dapat Anda gunakan untuk mengalami proses migrasi. Klik Deploy Demo Service untuk menyiapkan layanan demo.

Layanan website demo ini mencakup paket layanan web, lingkungan runtime-nya, dan skrip startup. Instans ini telah dibuat tanpa status dengan memisahkan penyimpanan datanya dari logika bisnisnya.
Jika instans layanan bisnis Anda sudah tanpa status dan memiliki komponen yang diperlukan (paket perangkat lunak, lingkungan, skrip startup), Anda dapat menggunakan instans layanan aktual Anda untuk langkah migrasi berikutnya.

Deployment layanan demo

Seperti ditunjukkan pada gambar di sebelah kanan, Instance ECS dalam arsitektur demo ini berisi layanan web yang terhubung ke database. Mengakses alamat layanan akan menampilkan alamat IP server saat ini dan string yang diambil dari database. Perintah startup telah dikonfigurasi untuk layanan ini, sehingga berjalan otomatis saat Instance ECS dimulai.

Fitur Deploy Demo Service menggunakan Resource Orchestration Service (ROS). Menggunakan fitur ini akan membuat Virtual Private Cloud (VPC) dan vSwitch, Instance ECS dengan layanan demo, serta Instance ApsaraDB RDS for MySQL di Akun Alibaba Cloud Anda.

Ikuti langkah-langkah berikut untuk mendeploy instans layanan demo:

  1. Klik tombol Deploy Demo Service untuk menuju halaman One-click Deployment.

  2. Ikuti petunjuk di layar untuk memilih Region dan Zone.

  3. Pada bagian konfigurasi instans, pilih Instance Type dan atur Instance Password.

    Anda dapat memilih konfigurasi terendah, seperti instance burstable, untuk menghemat biaya dalam tutorial ini. Tipe instans yang tersedia bervariasi berdasarkan region dan zona ketersediaan. Lihat opsi yang ditampilkan di halaman.
  4. Pilih RDS Instance Type dan atur RDS Database Password.

  5. Setelah mengonfirmasi biaya, klik Deploy Now dan tunggu hingga resource dibuat.

    Anda dapat memantau progres pada tab Specific Resources. Resource yang perlu diperhatikan, berurutan berdasarkan pembuatan, adalah security group, VPC, vSwitch, Instance ECS, dan Instance ApsaraDB RDS.
  6. Pada tab View Outputs, temukan tautan untuk WebUrl.

    Anda dapat mengunjungi tautan ini di browser beberapa kali. Setiap kali, Anda akan melihat alamat IP yang sama, mengonfirmasi bahwa Anda mengakses Instance ECS yang sama.

2. Buat image instans

Untuk memastikan instans baru memiliki layanan bisnis dan skrip startup, buat custom image dari instans yang telah disiapkan. Instans berikutnya akan menggunakan ini sebagai image dasar, sehingga layanan bisnis Anda akan berjalan otomatis saat instans diluncurkan.

  1. Buka Konsol ECS dan beralih ke region tempat Anda menyiapkan instans di Langkah 1.

  2. Temukan Instance ECS yang disiapkan di Langkah 1. Pada kolom Actions di sebelah kanan, pilih Disks and Images > Create Custom Image.

  3. Pada dialog Create Custom Image, masukkan nama image untuk memudahkan identifikasi, lalu klik OK. Tunggu hingga pembuatan image selesai. Anda dapat memeriksa progres dengan mengklik Instances & Images > Image pada panel navigasi kiri Konsol ECS.

3. Buat scaling group

Menggunakan scaling group untuk mengelola kluster layanan Anda adalah inti dari arsitektur elastis dan highly available. Anda dapat menggunakan scaling group untuk mereplikasi instans dengan cepat. Ikuti langkah-langkah berikut untuk membuat dan mengaktifkan scaling group:

  1. Buka halaman Scaling Groups.

    1. Masuk ke Konsol Auto Scaling.

      Jika ini pertama kalinya Anda menggunakan Auto Scaling, ikuti petunjuk di layar untuk memberikan izin yang diperlukan. Untuk informasi lebih lanjut, lihat Service-linked roles.

    2. Pada panel navigasi kiri, klik Scaling Groups.

    3. Pada bilah navigasi atas, pilih region tempat Auto Scaling diaktifkan.

  2. Buat scaling group.

    1. Pada halaman Scaling Groups, klik Create untuk membuka halaman Create.

    2. Lengkapi konfigurasi berikut pada halaman. Anda dapat mempertahankan nilai default untuk pengaturan yang tidak disebutkan dalam tabel.

      Parameter

      Deskripsi

      Scaling Group Name

      Masukkan nama sesuai petunjuk. Dalam contoh ini, nama tersebut adalah ess-demo.

      Type

      Pilih ECS.

      Instance Configuration Source

      Pilih Select Existing Instance.

      Select Existing Instance

      Pilih Instance ECS yang disiapkan di Langkah 1.

      Minimum Number of Instances

      Jumlah minimum instans dalam scaling group. Jika jumlah instans turun di bawah nilai ini, event scale-out otomatis akan dipicu. Dalam contoh ini, minimumnya adalah 0.

      Maximum Number of Instances

      Jumlah maksimum instans dalam scaling group. Jika jumlah instans melebihi nilai ini, event scale-in otomatis akan dipicu. Dalam contoh ini, maksimumnya adalah 10.

      VPC dan vSwitch

      Pengaturan ini diisi otomatis berdasarkan Instance ECS yang Anda pilih.

      Penting

      Kami menyarankan Anda membuat dan memilih vSwitch di beberapa zona ketersediaan. Hal ini membantu mencegah kegagalan scaling akibat stok instans yang tidak mencukupi di satu zona ketersediaan. Untuk membuat vSwitch, lihat Create a vSwitch.

      Show Advanced Settings > Enable Expected Number of Instances

      Pilih untuk mengaktifkan fitur ini. Setelah diaktifkan, Anda dapat melakukan scale-in atau scale-out secara otomatis dengan mengatur jumlah instans yang diharapkan.

      Show Advanced Settings > Expected Number of Instances

      Masukkan 0 untuk membuat scaling group kosong pada awalnya.

      Show Advanced Settings > Instance Health Check

      Pilih Instance Status Check dan Load Balancer Health Check. Saat diaktifkan, sistem menggunakan hasil pemeriksaan kesehatan untuk memastikan semua instans dalam scaling group dan layanan bisnisnya berjalan dengan benar. Jika suatu layanan menjadi tidak sehat, instans tersebut akan segera diganti dengan instans baru.

    3. Klik Create dan tunggu hingga scaling group dibuat.

  3. Ubah image instans dalam konfigurasi penskalaan.

    Saat Anda membuat scaling group dengan memilih instans yang ada, konfigurasi penskalaan dibuat berdasarkan image asli instans tersebut. Image asli dari instans yang dibuat di Langkah 1 tidak mencakup paket aplikasi yang dideploy kemudian. Oleh karena itu, Anda perlu memperbarui image dasar dalam konfigurasi penskalaan ke image baru yang dibuat di Langkah 2.
    1. Pada halaman Scaling Groups, temukan scaling group yang baru saja Anda buat. Pada kolom Actions, klik View Details untuk menuju halaman detail scaling group.

    2. Pada tab Instance Configuration Source > Scaling Configurations, temukan satu-satunya konfigurasi penskalaan dan klik Edit Image pada kolom Actions.

    3. Pada dialog Edit Image, pilih User-Defined Image. Ikuti petunjuk untuk memilih image yang Anda buat di Langkah 2. Klik OK untuk menyelesaikan modifikasi.

  4. Aktifkan scaling group.

    Pada halaman Scaling Groups, klik tombol Enable di pojok kanan atas untuk mengaktifkan scaling group.

4. Siapkan titik akses terpadu

Saat melakukan scaling dari satu instans menjadi banyak, Anda memerlukan titik akses terpadu untuk kluster. Untuk melakukannya, buat dan asosiasikan load balancer dengan scaling group Anda. Hal ini memungkinkan permintaan pengguna didistribusikan secara otomatis ke Instance ECS dalam kluster, menyeimbangkan beban dan memaksimalkan pemanfaatan resource. Contoh ini menggunakan Application Load Balancer (ALB). Ikuti langkah-langkah berikut:

4.1 Buat load balancer

  1. Masuk ke Konsol ALB.

  2. Pada halaman Instance, klik Create Application Load Balancer.

  3. Pada halaman pembelian Application Load Balancer (Pay-As-You-Go), ikuti petunjuk di layar untuk membuat ALB.

    Contoh ini menggunakan konfigurasi berikut. Anda dapat mempertahankan nilai default untuk pengaturan yang tidak disebutkan.

    Parameter

    Deskripsi

    Region

    Pilih wilayah yang sama dengan instance dari Langkah 1.

    Network Type

    Pilih Internet.

    VPC

    Pilih VPC dari instans yang disiapkan di Langkah 1.

    Zone

    Pilih minimal dua. Jika zona ketersediaan yang dipilih tidak memiliki vSwitch, ikuti petunjuk di layar untuk membuatnya. Untuk petunjuk cara membuat vSwitch, lihat Create a vSwitch.

4.2 Buat server group

Server group ini akan diasosiasikan dengan scaling group. Instans yang dibuat oleh scaling group akan secara otomatis ditambahkan ke server group ini untuk menyediakan layanan melalui load balancer.

  1. Di Konsol Application Load Balancer (ALB), pilih region.

  2. Pada panel navigasi kiri, klik Server Group untuk menuju halaman Server Groups. Klik Create Server Group dan ikuti petunjuk di layar untuk membuat server group.

    Contoh ini menggunakan konfigurasi berikut. Anda dapat mempertahankan nilai default untuk pengaturan yang tidak disebutkan.

    Parameter

    Deskripsi

    Server Group Type

    Pilih Server Type.

    Server group name

    Masukkan nama sesuai petunjuk. Contoh ini menggunakan ess-test-server-group.

    VPC

    Pilih VPC dari instans yang disiapkan di Langkah 1.

4.3 Konfigurasi listener

Buat listener HTTP untuk meneruskan permintaan dari protokol HTTP. Saat instance load balancer menerima permintaan HTTP, permintaan tersebut dapat diteruskan ke Instance ECS dalam server group.

  1. Di Konsol Application Load Balancer (ALB), pilih region.

  2. Pada panel navigasi kiri, klik Instance. Temukan load balancer yang dibuat di Langkah 4.1 dan klik Create Listener pada kolom Actions. Ikuti petunjuk di layar untuk membuat listener.

    Contoh ini menggunakan konfigurasi berikut. Anda dapat mempertahankan nilai default untuk pengaturan yang tidak disebutkan.

    Parameter

    Deskripsi

    Select listener protocol

    Pilih HTTP.

    Listener port

    Port tempat load balancer menyediakan layanan. Layanan demo menggunakan port 80, artinya listener akan menangani permintaan ke port 80 load balancer.

    Select server group

    Pilih server group yang dibuat di Langkah 4.2.

4.4 Asosiasikan load balancer

  1. Pada halaman Scaling Groups, temukan scaling group yang Anda buat di Langkah 3. Pada kolom Actions, klik View Details untuk menuju halaman detail scaling group.

  2. Pada tab Basic Information, temukan Associated ALB/NLB Server Groups. Klik Add Associated ALB/NLB Server Group. Pada dialog yang muncul, klik Add Server Group dan ikuti petunjuk untuk mengasosiasikan server group yang dibuat di Langkah 4.2. Setelah dikonfigurasi, klik OK untuk menyelesaikan asosiasi.

    Penting

    Nomor port dalam konfigurasi ini harus merupakan port tempat layanan bisnis Anda menyediakan layanan. Layanan demo dalam contoh ini menggunakan port 80.

5. Scale-out dan verifikasi

Setelah mengonfigurasi scaling group dan mengasosiasikannya dengan load balancer, Anda dapat melakukan scale-out instans untuk memverifikasi bahwa kluster berfungsi dengan benar.

  1. Picu event scale-out untuk scaling group, dan scaling group akan secara otomatis membuat instans.

    Anda dapat memicu event scale-out dengan memodifikasi Desired Capacity untuk scaling group. Ikuti langkah-langkah berikut:

    1. Pada halaman Scaling Groups, temukan scaling group yang baru saja Anda buat. Pada kolom Actions, klik View Details untuk menuju halaman detail scaling group.

    2. Pada tab Basic Information, temukan Instance Scaling Overview dan klik image. Pada dialog Edit Instance Scaling Overview, ubah Expected Number of Instances dari 0 menjadi 3 (artinya kluster memerlukan 3 Instance ECS untuk menyediakan layanan). Klik OK untuk menerapkan perubahan.

    3. Tunggu hingga instans dibuat. Tiga Instance ECS akan dibuat dalam scaling group. Anda dapat memeriksa status pembuatan pada tab Instances.

  2. Akses alamat load balancer untuk memverifikasi bahwa permintaan diarahkan ke instans baru.

    1. Buka Konsol Application Load Balancer (ALB).

    2. Temukan load balancer yang dibuat di Langkah 4.1. Di bawah DNS Name, temukan URL akses.

    3. Kunjungi URL ini beberapa kali. Anda seharusnya melihat alamat IP yang berbeda, yang mengonfirmasi bahwa Anda dapat mengakses server berbeda melalui load balancer.

6. (Opsional) Bersihkan resource

Jika Anda tidak lagi memerlukan kluster, Anda dapat mengikuti proses ini untuk membersihkan resource.

  1. Lepaskan load balancer yang dibuat di Langkah 4.1. Untuk informasi lebih lanjut, lihat Release an ALB instance.

  2. Hapus scaling group yang dibuat di Langkah 3. Untuk informasi lebih lanjut, lihat Delete a scaling group.

  3. Hapus server group yang dibuat di Langkah 4.2. Untuk informasi lebih lanjut, lihat Create and manage server groups.

  4. Hapus custom image yang dibuat di Langkah 2. Untuk informasi lebih lanjut, lihat Delete a custom image.

  5. Hapus vSwitches yang Anda buat di Langkah 3 dan Langkah 4.1. Untuk informasi lebih lanjut, lihat Create and manage a VPC dan Delete a vSwitch.

  6. Bersihkan layanan demo yang dideploy di Langkah 1. Jika Anda mendeploy layanan demo dari Langkah 1, Anda dapat menghapus stack ROS-nya. Saat menghapus stack, pilih Release Resources sebagai Deletion Method untuk membersihkan resource yang dibuat oleh layanan demo. Untuk informasi lebih lanjut, lihat Delete a stack.

Langkah selanjutnya

Sebelum go live

Untuk memastikan solusi elastis dan highly available ini berjalan stabil di lingkungan produksi, kami menyarankan Anda menyelesaikan tindakan berikut sebelum go live:

  • Perbaiki konfigurasi scaling group

    • Terapkan disaster recovery multi-zona: Anda dapat mengonfigurasi vSwitches di beberapa zona ketersediaan untuk scaling group Anda dan menetapkan Multi-zone Scaling Policy. Hal ini memungkinkan scaling group membuat instans di beberapa zona ketersediaan dan mendistribusikan instans layanan secara merata di antara mereka, meningkatkan tingkat keberhasilan scaling dan kemampuan disaster recovery kluster. Untuk informasi lebih lanjut, lihat Scaling policies.

    • Pilih beberapa tipe instans: Event scale-out dapat gagal jika satu tipe instans kehabisan stok. Anda dapat memilih beberapa tipe instans untuk meningkatkan tingkat keberhasilan scaling. Untuk informasi lebih lanjut, lihat Create a scaling configuration (ECS instances).

  • Lakukan pengujian menyeluruh

    Jika Anda berencana menggunakan solusi elastis dan highly available ini di lingkungan produksi, kami menyarankan Anda melakukan pengujian setelah menyiapkan kluster. Hal ini memastikan layanan Anda berfungsi dengan benar saat direplikasi dan memungkinkan Anda melakukan uji stres pada kluster untuk memperkirakan kebutuhan resource Anda.

Gunakan nama domain untuk akses

Perbarui rekaman DNS

Jika sebelumnya Anda menggunakan nama domain untuk mengakses Instance ECS Anda, Anda dapat memperbarui rekaman DNS domain Anda untuk mengarah ke load balancer Anda. Dengan cara ini, saat pengguna mengakses domain, permintaan mereka akan diarahkan melalui load balancer ke kluster layanan Anda. Untuk informasi lebih lanjut, lihat Configure CNAME resolution for an ALB instance.

Penting

Setelah Anda memperbarui DNS, propagasi memerlukan waktu. Jangan segera mengubah alamat IP layanan asli atau menghentikan instans asli. Biarkan Instance ECS asli tetap berjalan untuk sementara waktu. Pantau lalu lintas masuknya dan hentikan hanya setelah traffic turun ke nol.

Hal ini menghindari gangguan layanan bagi pengguna yang cache DNS lokalnya masih mengarah ke alamat IP asli.

Dukungan protokol HTTPS

Contoh ini menggunakan HTTP. Untuk mengaktifkan HTTPS untuk domain kluster Anda, konfigurasikan listener HTTPS untuk load balancer. Untuk informasi lebih lanjut, lihat Add an HTTPS listener.

Gunakan fitur Auto Scaling

  • Rancang strategi scaling: Tutorial ini tidak mencakup perancangan strategi scaling otomatis. Anda dapat menyiapkan scaling otomatis untuk scaling group Anda nanti untuk mengoptimalkan biaya. Untuk mempelajari cara merancang strategi scaling, lihat Supported scaling strategies.

  • Fitur lanjutan: Jika Anda memiliki kebutuhan lebih lanjut untuk scaling group Anda, seperti meningkatkan tingkat keberhasilan scaling atau mengurangi biaya lebih jauh, lihat Advanced features.