Saat memperbarui fungsi di Function Compute, kode dan konfigurasi baru akan langsung menimpa versi LATEST, sehingga semua pemanggilan berikutnya dijalankan terhadap versi yang diperbarui tersebut. Merilis perubahan langsung ke seluruh traffic berisiko tinggi di lingkungan produksi.
Plugin komunitas @serverless-cd/fc-canary memungkinkan Anda melakukan canary release dengan mengarahkan hanya persentase tertentu dari traffic ke versi baru sebelum dipromosikan sepenuhnya.
Cara kerja
Function Compute menggunakan alias untuk memisahkan penerapan (deployment) dari rilis. Di lingkungan produksi, alias diarahkan ke versi tertentu yang telah dipublikasikan. Saat menerapkan kode baru, versi LATEST diperbarui, tetapi alias tetap mengarah ke versi stabil sebelumnya. Traffic terus mengalir ke versi lama hingga Anda secara eksplisit memperbarui alias tersebut.
Plugin fc-canary mengotomatiskan proses ini:
Memublikasikan versi baru berdasarkan kode dan konfigurasi
LATESTsaat ini.Memperbarui alias untuk membagi traffic antara versi stabil sebelumnya dan versi yang baru dipublikasikan. Jika alias belum ada, plugin akan membuatnya secara otomatis.
Dengan mengarahkan hanya sebagian kecil traffic ke versi baru, Anda dapat memantau error atau penurunan performa sebelum menyelesaikan rilis sepenuhnya.
Prasyarat
Anda telah menginstal Serverless Devs dan mengonfigurasi kredensial Alibaba Cloud Anda.
Anda telah menerapkan fungsi ke Function Compute.
Anda telah menginstal plugin
@serverless-cd/fc-canarydalam konfigurasi pipeline Anda.
Parameter
Tabel berikut menjelaskan parameter yang didukung oleh plugin fc-canary.
| Parameter | Type | Required | Description |
|---|---|---|---|
serviceName | String | Yes (FC 2.0) | Nama layanan Function Compute 2.0 yang berisi fungsi target. |
functionName | String | Yes (FC 3.0) | Nama fungsi. Digunakan di Function Compute 3.0, yang menghapus pengelompokan tingkat layanan. |
aliasName | String | Yes | Nama alias yang akan dibuat atau diperbarui. Contohnya, prod. |
regionId | String | Yes | ID Wilayah tempat fungsi diterapkan. Contohnya, cn-hangzhou. |
canaryPercent | Number | Yes | Persentase traffic yang diarahkan ke versi baru. Nilai valid: 0 hingga 100. |
Penggunaan
Function Compute 2.0
Di Function Compute 2.0, alias dikonfigurasi pada tingkat layanan. Contoh berikut memperbarui alias untuk suatu layanan dan mengarahkan 50% traffic ke versi baru:
- plugin: @serverless-cd/fc-canary
inputs:
serviceName: web-framework-kzbp
aliasName: prod
regionId: cn-hangzhou
canaryPercent: 50Function Compute 3.0
Di Function Compute 3.0, pengelompokan tingkat layanan dihapus. Gunakan parameter functionName sebagai ganti serviceName:
- plugin: @serverless-cd/fc-canary
inputs:
functionName: my-function
aliasName: prod
regionId: cn-hangzhou
canaryPercent: 10Selesaikan rilis
Setelah memverifikasi bahwa versi baru berfungsi sesuai harapan, perbarui canaryPercent menjadi 100 atau arahkan alias sepenuhnya ke versi baru untuk menyelesaikan rilis.