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 monolitikPada 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:
| Fitur arsitektur highly availablePada 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:
|
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.
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.
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.
Buat image instans yang berisi layanan bisnis. Image ini akan digunakan untuk meluncurkan instans dalam kluster Anda, secara otomatis menjalankan layanan bisnis saat startup.
Buat scaling group untuk mengelola kluster layanan. Anda akan menggunakan scaling group ini untuk mereplikasi instans dengan cepat (scale-out).
Siapkan titik akses terpadu untuk kluster. Asosiasikan load balancer untuk membuat titik akses terpadu.
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.
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.
Buka Konsol ECS dan beralih ke region tempat Anda menyiapkan instans di Langkah 1.
Temukan Instance ECS yang disiapkan di Langkah 1. Pada kolom Actions di sebelah kanan, pilih .
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 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:
Buka halaman Scaling Groups.
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.
Pada panel navigasi kiri, klik Scaling Groups.
Pada bilah navigasi atas, pilih region tempat Auto Scaling diaktifkan.
Buat scaling group.
Pada halaman Scaling Groups, klik Create untuk membuka halaman Create.
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.
PentingKami 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.
Pilih untuk mengaktifkan fitur ini. Setelah diaktifkan, Anda dapat melakukan scale-in atau scale-out secara otomatis dengan mengatur jumlah instans yang diharapkan.
Masukkan 0 untuk membuat scaling group kosong pada awalnya.
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.
Klik Create dan tunggu hingga scaling group dibuat.
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.
Pada halaman Scaling Groups, temukan scaling group yang baru saja Anda buat. Pada kolom Actions, klik View Details untuk menuju halaman detail scaling group.
Pada tab , temukan satu-satunya konfigurasi penskalaan dan klik Edit Image pada kolom Actions.
Pada dialog Edit Image, pilih User-Defined Image. Ikuti petunjuk untuk memilih image yang Anda buat di Langkah 2. Klik OK untuk menyelesaikan modifikasi.
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
Masuk ke Konsol ALB.
Pada halaman Instance, klik Create Application Load Balancer.
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.
Di Konsol Application Load Balancer (ALB), pilih region.
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.
Di Konsol Application Load Balancer (ALB), pilih region.
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
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.
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.
PentingNomor 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.
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:
Pada halaman Scaling Groups, temukan scaling group yang baru saja Anda buat. Pada kolom Actions, klik View Details untuk menuju halaman detail scaling group.
Pada tab Basic Information, temukan Instance Scaling Overview dan klik
. 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.Tunggu hingga instans dibuat. Tiga Instance ECS akan dibuat dalam scaling group. Anda dapat memeriksa status pembuatan pada tab Instances.
Akses alamat load balancer untuk memverifikasi bahwa permintaan diarahkan ke instans baru.
Temukan load balancer yang dibuat di Langkah 4.1. Di bawah DNS Name, temukan URL akses.
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.
Lepaskan load balancer yang dibuat di Langkah 4.1. Untuk informasi lebih lanjut, lihat Release an ALB instance.
Hapus scaling group yang dibuat di Langkah 3. Untuk informasi lebih lanjut, lihat Delete a scaling group.
Hapus server group yang dibuat di Langkah 4.2. Untuk informasi lebih lanjut, lihat Create and manage server groups.
Hapus custom image yang dibuat di Langkah 2. Untuk informasi lebih lanjut, lihat Delete a custom image.
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.
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
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.