Tombol fitur App Lifecycle Manager memungkinkan Anda mengontrol ketersediaan dan perilaku fitur dalam aplikasi, tanpa memerlukan deployment kode baru atau perubahan infrastruktur.
Anda dapat menggunakan flag dengan dua cara utama:
- Terintegrasi: Gabungkan pengelolaan flag dengan deployment aplikasi Anda yang dikelola oleh App Lifecycle Manager.
- Mandiri: Gunakan sistem penandaan yang andal secara independen, meskipun infrastruktur aplikasi Anda dikelola di tempat lain, dengan memodelkan komponen sistem Anda sebagai Unit App Lifecycle Manager.
Tombol fitur terintegrasi dengan konsep inti App Lifecycle Manager seperti unit dan peluncuran. Dengan begitu, Anda dapat mengelola konfigurasi flag bersama infrastruktur aplikasi (pendekatan terintegrasi).
Tinjau ringkasan App Lifecycle Manager utama jika Anda belum memahami Unit atau Peluncuran App Lifecycle Manager.
Mengapa menggunakan tombol fitur App Lifecycle Manager?
Saat Anda menerapkan tombol fitur dengan App Lifecycle Manager, hal ini memberikan beberapa manfaat untuk siklus proses pengembangan dan operasi SaaS Anda:
- Memisahkan rilis fitur dari deployment kode: Kirim kode baru ke produksi dengan fitur yang dinonaktifkan secara default. Aktifkan fitur untuk pengguna tertentu atau deploy secara bertahap saat siap, sehingga mengurangi risiko yang terkait dengan deployment besar.
- Meningkatkan keamanan, kecepatan, dan keandalan:
- Menguji fitur dalam produksi dengan audiens terbatas (rilis terbatas).
- Lakukan peluncuran bertahap menggunakan kemampuan App Lifecycle Manager Rollout, sehingga meminimalkan dampak potensi masalah.
- Mengaktifkan daftar yang diizinkan dan penyesuaian tenant: Mengaktifkan atau menonaktifkan fitur untuk unit yang dapat mewakili tenant, layanan, atau lingkungan.
- Menyederhanakan rollback: Saat Anda menonaktifkan tombol fitur, prosesnya sering kali jauh lebih cepat dan tidak terlalu mengganggu dibandingkan men-deploy versi aplikasi sebelumnya. Alur kerja ini memungkinkan Anda menonaktifkan fitur yang bermasalah tanpa melakukan roll back biner.
- Pengelolaan konfigurasi flag terpadu: Kelola definisi tombol fitur dan gunakan untuk mengonfigurasi peluncuran. Alur kerja ini memberikan keandalan operasional dengan memungkinkan Anda mengubah fungsi aplikasi dengan membuat peluncuran tombol fitur.
Cara kerja tombol fitur App Lifecycle Manager
Penggunaan tombol fitur di App Lifecycle Manager melibatkan dua aspek utama: bidang pengelolaan (menentukan dan men-deploy flag) dan bidang data (mengakses nilai flag dalam aplikasi Anda).
Penggunaan terintegrasi dengan App Lifecycle Manager
Jika Anda menggunakan App Lifecycle Manager untuk mengelola deployment aplikasi (misalnya, men-deploy infrastruktur menggunakan Blueprint Terraform):
- Tentukan flag: Buat resource tombol fitur dalam App Lifecycle Manager,
tentukan
Flag keyyang unik (misalnya,enable-new-dashboard) dan kaitkan dengan jenis unit. Flag Boolean didukung. - Perubahan flag penyediaan: Perubahan pada flag (pembuatan atau update) tidak akan aktif hingga Anda memulai peluncuran App Lifecycle Manager. Dengan begitu, Anda dapat menggunakan fitur seperti batch, pengawasan, dan pemeriksaan keamanan untuk deployment tanda. Peluncuran akan memperbarui konfigurasi flag yang terkait dengan unit yang ditargetkan.
- Mengakses flag di aplikasi: Kode aplikasi Anda, yang berjalan dalam
unit yang disediakan (misalnya, dalam container di Cloud Run atau
Google Kubernetes Engine), menggunakan OpenFeature SDK yang dikonfigurasi dengan penyedia
flagd. Penyedia ini terhubung ke endpoint layanansaasconfig.googleapis.com. Dengan menggunakan App Lifecycle Manager, masukkan ID unit yang diperlukan ke lingkungan aplikasi Anda, sehingga SDK dapat mengambil nilai flag yang benar untuk unit tertentu tersebut.
Integrasi mendalam ini memungkinkan Anda mengelola siklus proses fitur bersama dengan siklus proses infrastruktur. Untuk contoh praktis, lihat Panduan memulai men-deploy flag fitur.
Bidang pengelolaan
Anda berinteraksi dengan bidang pengelolaan untuk menentukan dan mengontrol flag Anda. Anda dapat menggunakan konsol Google Cloud , gcloud CLI, atau App Lifecycle Manager API untuk:
- Membuat atau memperbarui flag: Untuk menentukan flag, Anda menentukan
Flag key, mengaitkannya dengan jenis unit, serta menetapkan jenis dan nilai defaultnya. - Membuat peluncuran: Anda memulai peluncuran untuk mendistribusikan perubahan flag (pembuatan atau update) ke unit yang ditargetkan yang termasuk dalam jenis unit flag. Peluncuran memastikan perubahan diterapkan dengan aman dan andal sesuai dengan kebijakan yang Anda konfigurasi.
Bidang data
Kode aplikasi Anda berinteraksi dengan bidang data untuk menggunakan nilai flag:
- OpenFeature SDK: Integrasikan SDK OpenFeature yang netral terhadap vendor ke dalam aplikasi Anda.
- Penyedia
flagd: Konfigurasikan OpenFeature SDK untuk menggunakan penyediaflagd. - Konfigurasi: Arahkan penyedia
flagdke endpoint layanan tombol fitur App Lifecycle Manager:saasconfig.googleapis.com:443. - Penargetan: Berikan
provider_iduntuk mengidentifikasi konfigurasi flag. Nilai ini biasanya sesuai dengan nama resource lengkap unit App Lifecycle Manager (misalnya,projects/PROJECT_ID/locations/LOCATION/featureFlagsConfigs/UNIT_ID). - Autentikasi: Penyedia menggunakan Kredensial Default Aplikasi (ADC) untuk mengautentikasi permintaan ke endpoint layanan Google Cloud dengan aman. Akun layanan yang digunakan memerlukan peran Identity and Access Management
roles/saasconfig.viewer. - Evaluasi flag: Gunakan metode OpenFeature standar (
client.get_boolean_value(...)) dalam kode Anda untuk memeriksa nilai flag. Penyedia menangani pengambilan konfigurasi terbaru yang di-deploy dari layanan.
App Lifecycle Manager menyediakan implementasi referensi dan contoh untuk berintegrasi dengan bidang data:
Jenis nilai tombol fitur
Tombol fitur App Lifecycle Manager mendukung lebih dari sekadar evaluasi boolean aktif/nonaktif standar. Anda dapat menentukan flag dengan nilai STRING, INTEGER, atau DOUBLE untuk mengontrol variabel operasional yang kompleks seperti batas runtime, parameter tema, atau batas konfigurasi.
Tidak seperti flag boolean, Anda harus menentukan flag non-boolean secara eksplisit selama pembuatan untuk menentukan semesta kemungkinan jenis nilai yang ditampilkan.
Flag string
Flag string meneruskan ID konfigurasi langsung ke klien yang terhubung.
gcloud beta app-lifecycle-manager flags create "feature-mode" \
--key="feature-mode" \
--flag-value-type=STRING \
--location="global" \
--unit-kind="UNIT_KIND_ID" \
--variants='[{"id": "standard", "stringValue": "STANDARD"}, {"id": "advanced", "stringValue": "ADVANCED"}]' \
--evaluation-spec='{"defaultTarget": "standard"}'
Flag bilangan bulat
Flag bilangan bulat mengatur batas numerik yang tepat dan batas payload.
gcloud beta app-lifecycle-manager flags create "max-retry-count" \
--key="max-retry-count" \
--flag-value-type=INTEGER \
--location="global" \
--unit-kind="UNIT_KIND_ID" \
--variants='[{"id": "low", "integerValue": 3}, {"id": "high", "integerValue": 10}]' \
--evaluation-spec='{"defaultTarget": "low"}'
Tanda ganda
Flag ganda memberikan nilai presisi tinggi yang digunakan untuk nilai minimum probabilitas atau parameter float.
gcloud beta app-lifecycle-manager flags create "sampling-rate" \
--key="sampling-rate" \
--flag-value-type=DOUBLE \
--location="global" \
--unit-kind="demo-test-unitkind" \
--variants='[{"id": "minimal", "doubleValue": 0.01}, {"id": "full", "doubleValue": 1.0}]' \
--evaluation-spec='{"defaultTarget": "minimal"}'
Menyediakan tombol fitur menggunakan peluncuran
App Lifecycle Manager memastikan perubahan atau update yang aman dalam skala besar dengan menggunakan peluncuran untuk menyediakan update tombol fitur.
Tanpa peluncuran bertahap, perubahan konfigurasi flag kecil (misalnya, mengaktifkan fitur untuk 1% pengguna) akan langsung diterapkan di semua instance aplikasi. Jika fitur ini menyebabkan regresi, masalah dapat terjadi secara bersamaan di seluruh infrastruktur Anda. Penyebaran global ini secara signifikan meningkatkan risiko dampak layanan yang meluas.
Peluncuran App Lifecycle Manager mengurangi risiko ini dengan memungkinkan distribusi perubahan flag yang bertahap dan terkontrol, sehingga membatasi potensi cakupan masalah yang tidak terduga.
Set tombol fitur
Set tombol fitur mengelompokkan beberapa tombol fitur dan memungkinkan Anda mengelolanya sebagai satu resource logis. Hal ini berguna untuk merilis fitur yang memerlukan koordinasi beberapa flag.
Pelajari set tanda lebih lanjut.
Manifes
Manifes memungkinkan Anda menentukan dan mengelola tombol fitur menggunakan file JSON. Anda dapat mengirim definisi ini ke App Lifecycle Manager API, atau mengambil konfigurasi yang ada untuk membuat pengakses yang aman dari jenis untuk aplikasi Anda.
Pelajari manifes lebih lanjut.
Penargetan kompleks
Anda dapat menggunakan Common Expression Language (CEL) untuk membuat aturan penargetan yang canggih berdasarkan atribut pengguna atau permintaan untuk mengontrol secara tepat pengguna mana yang melihat fitur mana.
Pelajari penargetan kompleks lebih lanjut.
Arsitektur multi-tenant
Anda dapat menggunakan deployment multi-tenant dengan App Lifecycle Manager jika Anda menargetkan flag ke unit atau grup unit tertentu (menggunakan label, atau tenant). Anda juga dapat menerapkan peluncuran bertahap di seluruh fleet tenant Anda.
Pelajari lebih lanjut arsitektur multi-tenant.
Mengalokasikan tombol fitur
Tentukan alokasi (seperti eksperimental atau dasar pengukuran) dan gunakan pemisahan traffic untuk melakukan pengujian, atau peluncuran acak.
Pelajari lebih lanjut alokasi tombol fitur.
Langkah berikutnya
- Coba panduan memulai Men-deploy tombol fitur untuk mengintegrasikan flag dengan deployment yang dikelola App Lifecycle Manager.
- Tinjau ringkasan App Lifecycle Manager utama jika Anda baru menggunakan platform ini.