Apakah yang dimaksud dengan 'Toggle Fitur Bendera' dan kapan menggunakannya (atau tidak)?

17

Ada beberapa pertanyaan tentang feature flag toggles, seperti:

Pertanyaan :

  • Apa yang sebenarnya merupakan "fitur flag toggle" (dalam konteks DevOps)?
  • Mengapa mereka digunakan?
Pierre.Vriens
sumber
3
Info referensi, bukan jawaban langsung - martinfowler.com/articles/feature-toggles.html
Ken Mugrage
1
Saya tahu "bertanya" tentang penjelasan downvote tidak umum diterima. Tetapi siapa pun yang menurunkan pertanyaan ini secara anonim, ketahuilah bahwa bagi saya downvotes semacam itu tidak ada gunanya, karena downvotes ini murah (downvoter tidak kehilangan -1 untuk melakukannya). Downvotes anonim dari jawaban berbeda namun ... downvoter seperti itu tidak meninggalkan jejak ...
Pierre.Vriens
2
Dan saya benar-benar ingin tahu mengapa seseorang merasa pertanyaan ini harus ditutup karena "terlalu luas", padahal ini sebenarnya adalah pertanyaan besar yang pantas mendapatkan jawaban yang baik.
Evgeny
Merci @Evgeny, sepertinya kita ada di halaman yang sama ... tetapi apakah Anda memperhatikan bahwa 1 suara dekat telah ditarik? Mungkin karena saya edit terbaru.
Pierre.Vriens

Jawaban:

13

Tanpa mengulangi konten https://martinfowler.com/articles/feature-toggles.html , karena ini merupakan penjelasan mendalam yang luar biasa tentang apa fitur toggle flag fitur. Saya hanya akan fokus pada aspek DevOps.

Menurut Laporan State of DevOps 2014 yang disiapkan oleh PuppetLabs, ada empat metrik utama untuk mengukur kinerja TI:

  • Pimpin waktu untuk perubahan
  • Frekuensi rilis
  • Saatnya memulihkan layanan
  • Ubah tingkat kegagalan

Ini juga berkontribusi terhadap kinerja organisasi secara keseluruhan. Jadi itu berarti bahwa jika TI Anda bekerja sangat baik pada metrik ini, garis bawah Anda mendapat lebih banyak $$$.

Pengiriman Kontinu diaktifkan oleh metrik ini, dan telah dijelaskan secara mendalam dalam buku Pengiriman Berkelanjutan: Perangkat Lunak yang Andal Rilis melalui Build, Test, dan Deployment Automation oleh Jez Humble.

Dalam konteks Pengiriman Berkelanjutan , ada perbedaan penting yang membedakannya dari Penggunaan Berkelanjutan . Dan itu adalah keputusan kapan harus melakukan pelepasan fitur (kepada pelanggan).

Menjaga perubahan dalam ukuran yang lebih kecil, dan menggunakan (menyalin kode) fitur setengah matang ke sistem produksi dengan flag fitur toggle off memungkinkan untuk mempersingkat waktu tunggu untuk perubahan .

Ketika fitur akhirnya selesai, melakukan rilis adalah keputusan yang tersisa untuk bisnis. Mungkin rilis fitur baru perlu disejajarkan dengan beberapa pemasaran, atau rilis di bagian lain dari bisnis seperti fitur di aplikasi seluler.

Fitur dapat dirilis menggunakan pengalaman A / B hanya untuk sebagian dari basis pelanggan, atau untuk orang-orang tertentu, atau bahkan langsung ke ketersediaan umum (GA). Meskipun melepaskan ke GA sering dilakukan hanya setelah ada cukup kepastian bahwa fitur tersebut berfungsi seperti yang diharapkan. Orang mungkin berpendapat bahwa ini berlaku mempengaruhi frekuensi rilis menjadi lebih tinggi.

Decoupling dari rilis dan penyebaran ini hampir mustahil untuk dicapai tanpa fitur flag toggle.

Tentu bila tidak ada penyebaran yang diperlukan untuk beralih fitur off , maka untuk memulihkan layanan diturunkan secara substansial.

Dan dengan menggunakan flag fitur yang merilis fitur ke sepotong kecil basis pelanggan, metrik tingkat kegagalan perubahan dapat ditingkatkan secara signifikan juga.


Jadi mekanisme sederhana yang disebut fitur flag toggle memungkinkan kinerja TI yang jauh lebih baik, dan pada gilirannya meningkatkan kinerja organisasi secara keseluruhan.

Contoh yang bagus tentang bagaimana hal ini dilakukan di perusahaan nyata dapat ditemukan di Flickr (di pos publik paling awal tentang subjek), dan di Etsy . Tetapi banyak orang lain telah mengadopsi praktik ini dan membicarakannya secara panjang lebar, misalnya budaya rekayasa terkenal di video Spotify .

Etsy memamerkan alat internal mereka untuk mengelola bendera fitur , yang disebut Catapult, dalam banyak presentasi yang ditemukan di seluruh web. Dan Intuit merilis alat open-source bernama Wasabi yang membantu mengelola flag fitur.

Evgeny
sumber
Merci untuk jawaban yang menarik / rumit ini ... Hanya 2 hal: artikel yang ditautkan adalah tentang "Fitur toggles", bukan "Feature Flag Toggles" (seperti yang Anda tulis dalam paragraf pertama). Apakah Anda setuju bahwa itu sinonim? Kalau tidak apa bedanya? Juga: apa itu "percobaan A / B" (A = Setelah dan B = Sebelum? Mungkin tidak ...).
Pierre.Vriens
1
Saya setuju ini sinonim. Saya hanya lebih suka mencoba dan memperjelas nama, sehingga tidak ada ambiguitas. Saya pikir "apa itu eksperimen a / b" adalah pertanyaannya sendiri ... tetapi jawaban singkatnya adalah dua variasi yang diukur satu sama lain, seperti di tautan "Etsy memamerkan". Atau dijelaskan di en.wikipedia.org/wiki/A/B_testing
Evgeny
OK, itu adalah sentuhan akhir yang saya tunggu / harapkan, jadi "terima".
Pierre.Vriens
@ Pierre.Vriens "Juga: apa itu" percobaan A / B "(A = Setelah dan B = Sebelum?" - Anda mungkin dapat menanyakan hal itu di situs DevOps SE yang super keren ini;)
Dan Cornilescu
1

Ken Mugrage memposting komentar menarik di bawah pertanyaan saya, dengan tautan ke penjelasan yang menerangi " Fitur toggle ", dengan ringkasannya seperti ini:

Matikan fitur adalah teknik yang ampuh, memungkinkan tim untuk memodifikasi perilaku sistem tanpa mengubah kode. Mereka masuk ke dalam berbagai kategori penggunaan, dan penting untuk memperhitungkan pengkategorian itu ketika mengimplementasikan dan mengelola toggle. Matikan memperkenalkan kompleksitas. Kita dapat menjaga kompleksitas itu dengan menggunakan praktik implementasi toggle pintar dan alat yang sesuai untuk mengelola konfigurasi toggle kita, tetapi kita juga harus bertujuan membatasi jumlah toggle dalam sistem kita.

Ringkasan di atas tidak hanya membantu untuk memahami tentang apa ini, tetapi juga berisi beberapa contoh yang menjelaskan mengapa mereka digunakan . Dan setelah mencernanya sedikit lebih jauh, tampaknya "Fitur Toggles" dan "Fitur Flag Toggles" cukup mirip satu sama lain.

Tapi, solusi (jawaban) untuk masalah (pertanyaan), mengubah masalah ... orang mungkin mengajukan pertanyaan terkait seperti:

  • Apa pro / kontra tentang penggunaannya? Ini adalah konsep yang kuat, tetapi juga yang menakutkan jika tidak digunakan dengan bijak (dan diamankan dengan tepat) ...
  • Apa yang bisa menjadi beberapa contoh (yang baik dan buruk) di mana mereka digunakan? Saya dapat memikirkan beberapa dari mereka, beberapa dari mereka saya telah menggunakan sendiri beberapa waktu yang lalu (dari sebelum DevOps bahkan ada satu hal).
Pierre.Vriens
sumber