Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Saat tim DevOps beralih ke metodologi Agile yang berfokus pada pengiriman fitur berkelanjutan, kebutuhan untuk mengontrol bagaimana mereka tersedia bagi pengguna menjadi semakin penting. Bendera fitur adalah solusi yang bagus untuk membatasi akses pengguna ke fitur baru, baik untuk tujuan pemasaran atau untuk pengujian dalam produksi.
Memisahkan penyebaran dan paparan
Dengan bendera fitur, tim dapat memilih apakah serangkaian fitur tertentu terlihat dalam pengalaman pengguna dan/atau dipanggil dalam fungsionalitas. Fitur baru dapat dibangun dan disebarkan sebagai bagian dari proses pengembangan biasa tanpa memiliki fitur tersebut yang tersedia untuk akses luas. Penyebaran fitur dipisahkan dengan mudah dari paparannya.
Bendera menyediakan kontrol runtime ke pengguna individual
Bendera juga memberikan kontrol terperinci hingga ke masing-masing pengguna. Ketika saatnya untuk mengaktifkan fitur, baik untuk satu pengguna, grup kecil, atau semua orang, tim cukup mengubah bendera fitur untuk menyalakannya tanpa harus menyebarkan ulang.
Cakupan bendera fitur akan bervariasi berdasarkan sifat fitur dan audiens. Dalam beberapa kasus, bendera fitur akan secara otomatis mengaktifkan fungsionalitas untuk semua orang. Dalam kasus lain, fitur akan diaktifkan berdasarkan pengguna demi pengguna. Teams juga dapat menggunakan bendera fitur untuk memungkinkan pengguna ikut serta mengaktifkan fitur, jika mereka menginginkannya. Benar-benar tidak ada batasan cara bendera fitur diterapkan.
Mendukung umpan balik dan eksperimen awal
Bendera fitur adalah cara yang bagus untuk mendukung eksperimen awal. Beberapa fitur dapat memiliki tepi kasar sejak dini, yang mungkin hanya menarik bagi pengadopsi paling awal. Mencoba mendorong fitur-fitur yang tidak cukup siap ke audiens yang lebih luas dapat menghasilkan ketidakpuasan. Tetapi manfaat mengumpulkan umpan balik dari pengguna yang bersedia untuk menangani fitur yang sedang berlangsung sangat berharga.
Sakelar nonaktif cepat
Terkadang sangat membantu untuk dapat mematikan sesuatu. Misalnya, fitur baru tidak berfungsi seperti yang dimaksudkan, dan ada efek samping yang menyebabkan masalah di tempat lain. Anda dapat menggunakan bendera fitur untuk menonaktifkan fungsionalitas baru dengan cepat untuk kembali ke perilaku tepercaya tanpa harus menyebarkan ulang. Meskipun bendera fitur sering dipikirkan dalam hal fitur antarmuka pengguna, bendera fitur juga dapat dengan mudah digunakan untuk perubahan arsitektur atau infrastruktur.
Tahap standar
Microsoft menggunakan proses peluncuran standar untuk mengaktifkan bendera fitur. Ada dua konsep terpisah: tingkatan adalah untuk penyebaran, dan tahapannya adalah untuk bendera fitur. Pelajari selengkapnya tentang tingkatan dan tahapan.
Tahapannya adalah tentang pengungkapan atau paparan. Misalnya, tahap pertama bisa untuk akun tim dan akun pribadi anggota. Sebagian besar pengguna tidak akan melihat sesuatu yang baru karena satu-satunya tempat bendera diaktifkan adalah untuk tahap pertama ini. Ini memungkinkan tim untuk sepenuhnya menggunakan dan bereksperimen dengannya. Setelah tim berhenti, pilih pelanggan akan dapat memilihnya melalui tahap kedua bendera fitur.
Ikut serta
Ini adalah praktik yang baik untuk memungkinkan pengguna ikut serta dalam fitur bendera saat memungkinkan. Misalnya, tim dapat mengekspos panel pratinjau yang terkait dengan preferensi atau pengaturan pengguna.
Menggunakan bendera dengan telemetri
Bendera fitur menyediakan cara untuk mengekspos pembaruan secara bertahap. Namun, tim harus terus memantau metrik yang tepat untuk mengukur kesiapan untuk paparan yang lebih luas. Metrik ini harus mencakup perilaku penggunaan, serta dampak pembaruan pada kesehatan sistem. Penting untuk menghindari perangkap dengan asumsi semuanya baik-baik saja hanya karena tampaknya tidak ada hal buruk yang terjadi.
Contoh bendera fitur
Pertimbangkan contoh di bawah ini. Tim menambahkan beberapa tombol di sini untuk Cherry-pick dan Kembali di UI permintaan pull. Ini disebarkan menggunakan bendera fitur.
Menentukan bendera fitur
Fitur pertama yang diekspos adalah tombol Kembalikan . Solusi ini menggunakan file XML untuk menentukan semua bendera fitur. Ada satu file per layanan dalam hal ini, yang membuat insentif untuk menghapus bendera lama untuk mencegah bagian menjadi sangat panjang. Tim akan menghapus bendera lama karena ada motivasi alami untuk mengontrol ukuran file tersebut.
<?xml version="1.0" encoding="utf-8"?>
<!--
In this group we should register Azure DevOps specific features and sets their states.
-->
<ServicingStepGroup name="AzureDevOpsFeatureAvailability" … >
<Steps>
<!-- Feature Availability -->
<ServicingStep name="Register features" stepPerformer="FeatureAvailability" … >
<StepData>
<!--specifying owner to allow implicit removal of features -->
<Features owner="AzureDevOps">
<!-- Begin TFVC/Git -->
<Feature name="SourceControl.Revert" description="Source control revert features" />
Kerangka kerja server umum mendorong penggunaan kembali dan ekonomi skala di seluruh tim. Idealnya, proyek akan memiliki infrastruktur sehingga pengembang cukup menentukan bendera di toko pusat dan memiliki infrastruktur lainnya yang ditangani untuk mereka.
Memeriksa bendera fitur saat runtime
Bendera fitur yang digunakan di sini bernama SourceControl.Revert. Berikut adalah TypeScript aktual dari halaman tersebut yang mengilustrasikan panggilan untuk pemeriksaan ketersediaan fitur.
private addRevertButton(): void {
if (FeatureAvailability.isFeatureEnabled(Flags.SourceControlRevert)) {
this._calloutButtons.unshift(
<button onClick={ () => Dialogs.revertPullRequest(
this.props.repositoryContext,
this.props.pullRequest.pullRequestContract(),
this.props.pullRequest.branchStatusContract().sourceBranchStatus,
this.props.pullRequest.branchStatusContract().targetBranchStatus)
}
>
{VCResources.PullRequest_Revert_Button}
</button>
);
}
}
Contoh di atas menggambarkan penggunaan dalam TypeScript, tetapi dapat dengan mudah diakses menggunakan C#. Kode memeriksa untuk melihat apakah fitur diaktifkan dan, jika demikian, merender tombol untuk menyediakan fungsionalitas. Jika bendera tidak diaktifkan, maka tombol dilewati.
Mengontrol bendera fitur
Platform bendera fitur yang baik akan menyediakan beberapa cara untuk mengelola apakah bendera tertentu diatur. Biasanya, ada skenario penggunaan untuk bendera yang akan dikontrol melalui PowerShell dan antarmuka web. Untuk PowerShell, semua yang benar-benar perlu diekspos adalah cara untuk mendapatkan dan mengatur status bendera fitur, bersama dengan parameter opsional untuk hal-hal seperti pengidentifikasi akun pengguna tertentu, jika berlaku.
Mengontrol bendera fitur melalui antarmuka pengguna web
Contoh berikut menggunakan UI web yang diekspos untuk produk ini oleh tim. Perhatikan bendera fitur untuk SourceControl.Revert. Ada dua akun pribadi yang tercantum di sini: hallux dan buckh-westeur. Negara diatur untuk hallux, yang kebetulan berada di North Central, dan dibersihkan untuk akun lain di Eropa Barat.
Sifat bendera fitur akan mendorong cara fitur diekspos. Dalam beberapa kasus, paparan akan mengikuti model tingkat dan tahap. Di orang lain, pengguna dapat ikut serta melalui UI konfigurasi, atau bahkan dengan mengirim email kepada tim untuk akses.
Pertimbangan untuk bendera fitur
Sebagian besar bendera fitur dapat dihentikan setelah fitur diluncurkan untuk semua orang. Pada saat itu, tim dapat menghapus semua referensi ke bendera dalam kode dan konfigurasi. Ini adalah praktik yang baik untuk menyertakan tinjauan bendera fitur, seperti di awal setiap sprint.
Pada saat yang sama, mungkin ada sekumpulan bendera fitur yang bertahan karena berbagai alasan. Misalnya, tim mungkin ingin menyimpan bendera fitur yang mencabangkan sesuatu yang tidak struktural untuk jangka waktu tertentu setelah layanan produksi sepenuhnya beralih. Namun, perlu diingat bahwa codepath potensial ini dapat diaktifkan kembali di masa mendatang selama penghapusan bendera fitur secara eksplisit, sehingga perlu diuji dan dipertahankan sampai opsi dihapus.
Bendera fitur dan strategi percabangan
Bendera fitur memungkinkan tim pengembangan untuk menyertakan fitur yang tidak lengkap tanpa main memengaruhi orang lain. Selama codepath diisolasi di belakang bendera fitur, umumnya aman untuk membangun dan menerbitkan kode tersebut tanpa efek samping yang memengaruhi penggunaan normal. Tetapi jika ada kasus di mana fitur memerlukan dependensi, seperti saat mengekspos titik akhir REST, tim harus mempertimbangkan bagaimana dependensi tersebut dapat membuat pekerjaan keamanan atau pemeliharaan bahkan tanpa fitur terekspos.
Bendera fitur untuk mengurangi risiko
Terkadang fitur baru berpotensi memperkenalkan perubahan yang merusak atau mengganggu. Misalnya, produk mungkin mengalami transformasi dari skema database yang luas ke yang panjang. Dalam skenario itu, pengembang harus membuat cabang fitur untuk waktu yang singkat. Mereka kemudian membuat perubahan yang tidak stabil pada cabang dan menyimpan fitur di belakang bendera. Praktik populer adalah bagi tim untuk kemudian menggabungkan perubahan hingga main segera setelah mereka tidak menyebabkan bahaya apa pun. Ini tidak akan layak tanpa kemampuan untuk menjaga fitur yang belum selesai tersembunyi di belakang bendera fitur.
Bendera fitur membantu bekerja di utama
Jika Anda mengikuti praktik akal sehat yang dibahas dalam fase Kembangkan , bekerja main adalah cara yang baik untuk mengencangkan siklus DevOps. Ketika dikombinasikan dengan bendera fitur, pengembang dapat dengan cepat menggabungkan fitur upstram dan mendorongnya melalui gauntlet pengujian. Kode kualitas dapat dengan cepat diterbitkan untuk pengujian dalam produksi. Setelah beberapa sprint, pengembang akan mengenali manfaat bendera fitur dan menggunakannya secara proaktif.
Cara memutuskan apakah akan menggunakan bendera fitur
Tim fitur memiliki keputusan apakah mereka memerlukan bendera fitur atau tidak untuk perubahan tertentu. Tidak setiap perubahan memerlukannya, jadi itu adalah panggilan penilaian untuk pengembang ketika mereka memilih membuat perubahan tertentu. Dalam kasus fitur Kembalikan yang dibahas sebelumnya, penting untuk menggunakan bendera fitur untuk mengontrol paparan. Memungkinkan tim memiliki keputusan utama tentang area fitur mereka adalah bagian dari mengaktifkan otonomi dalam organisasi DevOps yang efektif.
Bangun vs. beli
Meskipun dimungkinkan untuk membangun infrastruktur bendera fitur Anda sendiri, mengadopsi platform seperti LaunchDarkly atau Split umumnya direkomendasikan. Lebih baik berinvestasi dalam membangun fitur alih-alih membangun kembali fungsionalitas bendera fitur.
Langkah selanjutnya
Pelajari selengkapnya tentang menggunakan bendera fitur di aplikasi ASP.NET Core.