Fitur Penerbitan Aplikasi Auto Scaling memungkinkan penyebaran aplikasi secara berkelanjutan ke Instance ECS dalam grup penskalaan. Fitur ini terintegrasi dengan kait siklus hidup untuk secara otomatis menerbitkan aplikasi saat skala keluar dan melakukan shutdown yang mulus saat skala-masuk.
Ikhtisar
Penerbitan aplikasi mengemas file sumber dan skrip start/stop menjadi deployment artifact, lalu menyebarkannya ke instans grup penskalaan melalui proses rilis terstandarisasi.
Jenis artefak penerapan yang didukung
Pilih jenis artefak penerapan berdasarkan lokasi penyimpanan file sumber aplikasi Anda:
|
Type |
Description |
Scenarios |
|
OSS file |
File aplikasi, seperti paket JAR atau ZIP, disimpan di OSS. Selama rilis, sistem secara otomatis mengunduh file tersebut dan mengeksekusi skripnya. |
Penerapan aplikasi tradisional, seperti aplikasi Java. |
|
ECS image |
Aplikasi telah dipra-instal dalam citra ECS. Selama rilis, sistem mengganti disk sistem instans. |
Aplikasi yang memerlukan startup cepat atau memiliki lingkungan kompleks. |
|
Docker image |
Gambar aplikasi disimpan di Container Registry (ACR). Selama rilis, sistem secara otomatis menarik gambar tersebut dan menjalankan kontainer. |
Penerapan aplikasi berbasis kontainer. |
|
Command execution only |
Tidak ada file sumber yang ditentukan. Hanya skrip shell yang dieksekusi. |
Penerapan berbasis skrip fleksibel atau penerapan yang menggunakan sumber pihak ketiga. |
Kemampuan rilis
-
Release mode: Mendukung full release (ke semua instans) dan canary release (ke subset instans yang dipilih secara manual untuk validasi).
-
Batch control: Tentukan batch rilis dengan jeda yang dapat dikonfigurasi di antara batch untuk mengurangi risiko penerapan.
-
Integrasi Auto Scaling:
-
Automatic publishing on scale-out: Instans baru yang ditambahkan selama skala keluar secara otomatis menerapkan versi aplikasi terbaru, memastikan konsistensi versi.
-
Graceful shutdown on scale-in: Sebelum menghapus instans selama skala-masuk, sistem mengeksekusi skrip stop untuk memastikan proses bisnis selesai sebelum terminasi.
-
Batasan
-
Instance operating system: Fitur ini hanya mendukung Instance ECS berbasis Linux.
-
Scripting language: Hanya skrip shell yang didukung untuk skrip start dan stop.
-
Deployment flow: Mengikuti prinsip stop-before-start. Sistem mengeksekusi skrip stop untuk mematikan versi sebelumnya sebelum menjalankan skrip start.
-
Data risk: Saat Anda menggunakan tipe penerapan ECS image, sistem akan mengganti disk sistem instans. Anda harus melakukan backup data sebelum melanjutkan.
Buat artefak penerapan
Masuk ke Auto Scaling console.
Di panel navigasi kiri, klik Scaling Groups.
Di bilah navigasi atas, pilih wilayah tempat Auto Scaling diaktifkan.
-
Klik Scaling Group ID untuk membuka halaman detail grup penskalaan. Pilih .
-
Pilih dan konfigurasikan jenis artefak penerapan sesuai kasus penggunaan Anda.
OSS file
Gunakan tipe ini ketika paket aplikasi Anda (JAR, WAR, atau ZIP) disimpan di OSS. Selama rilis, sistem mengunduh file ke direktori kerja yang ditentukan, menjalankan skrip stop, lalu menjalankan skrip start.
-
Configuration items:
-
OSS Information: Pilih OSS Region dan OSS Bucket. Di bidang OSS file, masukkan path file di bucket, misalnya
apps/sample-spring-1.0-SNAPSHOT.jar. -
Download over internal network: Aktifkan opsi ini jika Instance ECS dan bucket OSS berada di wilayah yang sama untuk meningkatkan kecepatan unduhan.
-
-
Contoh skrip start/stop:
Skrip startup aplikasi:
start_application() { set -e yum install -y maven-3.5.4 java -jar ./sample-spring-1.0-SNAPSHOT.jar & } start_applicationSkrip penghentian aplikasi:
PentingJika tidak diperlukan operasi stop, biarkan skrip stop kosong. Sistem akan melewatkannya selama penerapan.
### Hentikan aplikasi (jika ada) stop_application() { PID=$(ps -ef | grep "sample-spring-1.0-SNAPSHOT.jar" | grep -v "grep" | awk '{print $2}') if [ -n "$PID" ]; then kill -9 $PID fi } stop_application
ECS image
Gunakan tipe ini untuk aplikasi dengan lingkungan kompleks atau persyaratan waktu startup ketat. Selama rilis, sistem mengganti disk sistem instans dengan citra yang ditentukan.
Saat Anda memilih tipe artefak penerapan ECS image, klik Add dan pilih citra dari wilayah yang sama dengan grup penskalaan Anda.
-
Configuration items:
-
Region: Pilih wilayah yang sama dengan grup penskalaan.
-
Image ID: Pilih gambar kustom yang berisi aplikasi yang telah diterapkan dan berada di wilayah yang sama dengan grup penskalaan.
-
PentingTipe artefak penerapan ECS image tidak mendukung skrip start/stop aplikasi. Untuk menjalankan aplikasi secara otomatis, konfigurasikan aplikasi agar berjalan saat boot atau konfigurasikan kait siklus hidup secara manual.
Docker image
Gunakan tipe ini untuk aplikasi berbasis kontainer. Selama rilis, sistem menarik gambar dari ACR, menjalankan skrip stop untuk menghapus kontainer sebelumnya (jika ada), lalu menjalankan skrip start untuk meluncurkan kontainer baru.
PentingFitur ini hanya mendukung gambar Docker dari instance Edisi Perusahaan Container Registry (ACR) . Untuk menerapkan gambar dari instance Edisi Personal ACR atau repositori gambar pihak ketiga, gunakan tipe penerapan command execution only.
-
Configuration items:
-
Docker Image Information: Atur parameter seperti Container Registry Region, Container Registry Instance ID, Namespace, Repository Name, dan Image Tag.
-
Pull over internal network: Pastikan repositori gambar dan Instance ECS berada di VPC yang sama. Konfigurasikan kontrol akses untuk VPC.
-
-
Skrip start/stop:
Application startup script:
Penting-
Docker harus diinstal pada instans target.
-
Sistem secara otomatis menarik gambar Docker sebelum eksekusi skrip. Jangan sertakan perintah tarik gambar dalam skrip.
### Selama rilis, gambar Docker secara otomatis ditarik ke Instance ECS. Anda dapat langsung menjalankan kontainer. ### Jalankan kontainer versi saat ini. ### Ganti <image_name> dengan alamat gambar aktual. start_application() { image_name="<image_name>" container_name="my-container" docker run -d -p 8080:8080 --name ${container_name} ${image_name} } start_applicationSkrip stop aplikasi:
PentingJika tidak diperlukan operasi stop, biarkan skrip stop kosong. Sistem akan melewatkannya selama penerapan.
stop_application() { # Cari kontainer berdasarkan namanya dan hapus jika ada. container_name="my-container" container_id=$(docker ps -aq -f name=${container_name}) if [ -n "$container_id" ]; then docker rm -f $container_id fi } stop_application -
Command only
Gunakan tipe ini ketika tidak diperlukan file sumber — hanya skrip shell yang dijalankan, seperti menarik kode dari sumber pihak ketiga. Sistem menjalankan skrip stop, lalu skrip start.
-
Configuration items: Anda tidak perlu mengonfigurasi sumber penerapan. Anda hanya perlu menentukan Working Directory.
-
Contoh skrip start/stop (menarik gambar publik):
Skrip Mulai Aplikasi:
### Jalankan versi aplikasi saat ini. start_application() { repo="<repo>" image="<image>" container_name="my-container" docker login --username=${username} --password=${password} $repo docker pull $image docker run -d -p 8080:8080 --name $container_name $image } start_applicationSkrip penghentian aplikasi:
PentingJika tidak diperlukan operasi stop, biarkan skrip stop kosong. Sistem akan melewatkannya selama penerapan.
### Hentikan kontainer (jika ada). stop_application() { # Cari kontainer berdasarkan namanya dan hapus jika ada. container_name="my-container" container_id=$(docker ps -aq -f name=${container_name}) if [ -n "$container_id" ]; then docker rm -f $container_id fi } stop_application
-
-
Setelah menyelesaikan konfigurasi, klik Create and Publish atau Create Only.
Mengklik Create and Publish akan mengarahkan Anda ke halaman konfigurasi Deployment Release.
Terbitkan artefak penerapan
-
Di tab App Release, pilih .
-
Pilih Deployment Artifact ID dari artefak penerapan yang ingin Anda terbitkan.
-
Konfigurasikan kebijakan rilis:
-
Release Mode:
-
Full release: Menyebarkan aplikasi ke semua instans dalam grup.
-
Canary Release: Menyebarkan aplikasi ke instans tertentu yang dipilih secara manual untuk validasi.
-
-
Batch Policy: Atur jumlah Execution Batch (misalnya, 2) dan pilih Batch Mode (No Pause, Pause After First Batch, atau Pause After Each Batch).
-
Scaling Scenarios: Biarkan automatic publishing on scale-out dan graceful shutdown on scale-in tetap diaktifkan.
-
Automatic publishing on scale-out: Jika diaktifkan, sistem akan menerapkan aplikasi ke Instance ECS baru yang ditambahkan selama skala keluar. Kait siklus hidup skala keluar dikonfigurasi secara otomatis.
-
Graceful shutdown on scale-in: Jika diaktifkan, sistem akan mengeksekusi skrip stop pada Instance ECS sebelum penghapusan selama skala-masuk. Kait siklus hidup skala-masuk dikonfigurasi secara otomatis.
-
-
-
Klik OK untuk memulai rilis. Anda dapat mengklik Details dalam daftar untuk melihat status eksekusi dan log output.
Praktik terbaik produksi
Ikuti praktik terbaik berikut untuk menjaga stabilitas lingkungan produksi Anda:
-
Kurangi risiko rilis:
-
Gunakan Canary Release untuk memverifikasi versi baru pada sejumlah kecil instans terlebih dahulu.
-
Untuk rilis penuh, aktifkan batch releases dan pilih Suspend First Batch. Verifikasi batch pertama sebelum melanjutkan ke batch berikutnya.
-
-
Jamin kelangsungan bisnis: Aktifkan graceful shutdown on scale-in dan sertakan skrip stop yang menunggu permintaan yang sedang berjalan selesai serta menutup koneksi sebelum terminasi.
-
Jamin konsistensi versi: Aktifkan automatic publishing on scale-out untuk mencegah instans baru menjalankan versi aplikasi yang kedaluwarsa.
FAQ
-
Dukungan Windows
Tidak. Hanya Instance ECS berbasis Linux yang didukung.
-
Penskalaan selama rilis
Ya. Penerbitan aplikasi tidak memblokir aktivitas penskalaan.
-
Log dan hasil rilis
Buka daftar Deployment Release dan klik Execution ID untuk melihat status eksekusi dan log output skrip untuk setiap instans.
-
Dampak kegagalan penerapan
Jika skrip gagal, instans tersebut akan menampilkan status Failed. Dengan batch release dan opsi Suspend Each Batch atau Suspend First Batch, batch berikutnya tidak akan diproses, sehingga membatasi cakupan dampak. Gunakan Canary Release pada sejumlah kecil instans untuk verifikasi terlebih dahulu.
-
Direktori eksekusi skrip
Skrip dieksekusi di Working Directory yang ditentukan saat membuat artefak penerapan.