'Özellik Bayrağı Geçişi' nedir ve ne zaman kullanılır (veya kullanılmaz)?


17

Hakkında bazı sorular var feature flag toggles, örneğin:

Sorular :

  • Aslında (DevOps bağlamında) "özellik bayrağı geçişi" nedir?
  • Neden kullanılıyorlar?

3
Referans bilgisi, doğrudan bir cevap değil - martinfowler.com/articles/feature-toggles.html
Ken Mugrage

1
Downvote-açıklamaları hakkında "sormayı" yaygın olarak kabul edilmediğini biliyorum. Ama kim bu soruyu anonim olarak indirdiyse, sadece bu tür inişlerin değersiz olduğunu bilin, çünkü bu inişler ucuzdur (downvoter bunu yapmak için -1 kaybetmez). Cevapların anonim iniş çıkışları farklı ... ancak böyle bir intikamcı iz bırakıyor ...
Pierre.Vriens

2
Ve bu gerçekten iyi cevapları hak eden harika bir soru olduğunda, birisinin neden bu sorunun "çok geniş" nedeniyle kapatılması gerektiğini hissettiğini bilmek isterim.
Evgeny

Merci @Evgeny, aynı sayfada olduğumuza benziyor ... ama 1 yakın oyun geri çekildiğini fark ettiniz mi? Muhtemelen en son düzenlemem yüzünden.
Pierre.Vriens

Yanıtlar:


13

Https://martinfowler.com/articles/feature-toggles.html içeriğini tekrar etmeden , bu özellik bayrak geçişinin ne olduğu konusunda inanılmaz bir derinlemesine açıklamadır. Sadece DevOps yönlerine odaklanacağım.

Göre DevOps Raporu 2014 Devlet PuppetLabs tarafından hazırlanan, BT performansını ölçmek için dört ana ölçütleri vardır:

  • Değişiklikler için teslim süresi
  • Serbest bırakma sıklığı
  • Hizmeti geri yükleme zamanı
  • Başarısızlık oranını değiştir

Bunlar ayrıca genel olarak kurumsal performansa katkıda bulunur. Yani, BT'niz bu metriklerde harika bir performans gösteriyorsa, sonuç olarak daha fazla $$$ elde edersiniz.

Sürekli Teslim bu metrikler tarafından etkinleştirilir ve Jez Humble'ın Sürekli Teslim: Derleme, Test ve Dağıtım Otomasyonu ile Güvenilir Yazılım Sürümleri kitabında ayrıntılı olarak açıklanmıştır .

Bağlamında Sürekli Delivery , ayıran önemli bir fark yoktur Sürekli Dağıtım . Ve bu özelliklerin (müşterilere) ne zaman piyasaya sürüleceğidir .

Değişikliklerin daha küçük boyutta tutulması ve yarı pişmiş özelliklerin devre dışı bırakılmış bir özellik bayrağıyla üretim sistemlerine dağıtılması (kopyalama kodu) , değişikliklerin sağlama süresini kısaltır .

Nihayet özellikler bittiğinde, bir sürüm yapmak iş için bırakılmış bir karardır. Belki de yeni bir özelliğin bir sürümünün bir pazarlama ile hizalanması veya mobil uygulamadaki bir özellik gibi işletmenin başka bir bölümünde yayınlanması gerekir.

Özellikler, müşteri tabanının yalnızca bir bölümüne veya belirli kişilere veya hatta genel kullanılabilirliğe (GA) yönelik A / B deneyimleri kullanılarak yayınlanabilir. GA'ya yayınlama genellikle yalnızca özelliğin beklendiği gibi çalıştığından emin olduktan sonra yapılır. Bunun aslında salım frekansının daha yüksek olmasını etkilediği söylenebilir.

Serbest bırakma ve konuşlandırmanın bu şekilde ayrıştırılması, özellik bayrağı değiştirilmeden neredeyse imkansızdır.

Doğal olarak, bir özelliği kapatmak için herhangi bir dağıtım gerekmediğinde , hizmeti geri yükleme süresi önemli ölçüde azalır.

Ve özellikleri müşteri tabanının küçük bir dilimine bırakan özellik bayraklarını kullanarak, değişiklik başarısızlık oranı metriği de önemli ölçüde geliştirilebilir.


Bu nedenle özellik bayrağı geçişi adı verilen basit bir mekanizma daha iyi BT performansı sağlar ve genel olarak kurumsal performansı geliştirir.

Bunun gerçek şirketlerde nasıl yapıldığına dair harika bir örnek Flickr'da (konuyla ilgili en eski kamu yayınlarında) ve Etsy'de bulunabilir . Ancak birçoğu uygulamayı benimsedi ve uzunca konuştu, örneğin Spotify videolarındaki ünlü mühendislik kültürü .

Etsy , Web'de bulunan birden fazla sunumda Catapult adlı özellik bayraklarını yönetmek için dahili araçlarını gösteriyor . Intuit , özellik bayraklarını yönetmeye yardımcı olan Wasabi adlı açık kaynaklı bir araç yayınladı .


Bu ilginç / ayrıntılı cevap için Merci ... Sadece 2 şey olsa da: bağlantılı makale "Özellik Bayrağı Geçişler" değil, "Özellik Geçişler" hakkındadır (ilk paragrafınızda yazdığınız gibi). Eş anlamlı olduklarını kabul eder misiniz? Değilse fark nedir? Ayrıca: "A / B deneyleri" nedir (A = Sonra ve B = Önce? Muhtemelen hayır ...).
Pierre.Vriens

1
Bunların eş anlamlı olduğunu kabul ediyorum. Sadece isim konusunda açık olmayı tercih ediyorum, bu yüzden belirsizlik yok. "A / b deneyi nedir" nin kendi başına bir soru olduğunu düşünüyorum ... ama kısa cevap, "Etsy gösteriş" bağlantısında olduğu gibi birbiriyle ölçülen iki varyasyon olmasıdır. Veya en.wikipedia.org/wiki/A/B_testing
Evgeny

Tamam, beklediğim / umduğum son dokunuş, bu yüzden "kabul et".
Pierre.Vriens

@ Pierre.Vriens: A / B denemeleri "Ayrıca nelerdir ""(A = sonra ve B = önce mi?" - muhtemelen sorabilirsiniz bu süper serin DevOps SE sitesinde;)
Dan Cornilescu

1

Ken Mugrage sorumun altında ilginç bir yorum yayınladı, " Özellik değiştirir " in aydınlatıcı bir açıklamasıyla , bunun bir özeti şöyle:

Özellik geçişleri, ekiplerin kod değiştirmeden sistem davranışını değiştirmesine izin veren güçlü bir tekniktir. Çeşitli kullanım kategorilerine girerler ve geçişleri uygularken ve yönetirken bu kategoriyi dikkate almak önemlidir. Geçişler karmaşıklığı getirir. Geçiş yapılandırmamızı yönetmek için akıllı geçiş uygulama uygulamalarını ve uygun araçları kullanarak bu karmaşıklığı kontrol altında tutabiliriz, ancak sistemimizdeki geçiş sayısını sınırlamayı da hedeflemeliyiz.

Yukarıdaki özet, bunun ne hakkında olduğunu anlamaya yardımcı olmakla kalmaz, aynı zamanda neden kullanıldıklarını açıklayan bazı örnekler de içerir . Ve biraz daha sindirdikten sonra, "Özellik Geçişleri" ve "Özellik Bayrağı Geçişleri" birbirlerinin eş anlamlısı gibi görünüyor.

Ancak, soruna (soru) çözüm (cevap), sorunu değiştirir ... kişi aşağıdaki gibi sorular sorabilir:

  • Bunları kullanmanın artıları / eksileri nelerdir? Bu güçlü bir kavram, ancak akıllıca kullanılmadığında (ve uygun şekilde sabitlendiğinde) korkutucu bir kavram ...
  • Kullanıldıkları bazı örnekler (iyi ve kötü olanlar) ne olabilir? Bunlardan birkaçını düşünebilirim, bazıları oldukça uzun bir süre önce kendimi kullandım (DevOps'tan önce bir şeydi).
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.