Feature flag (özellik bayrağı): yayını koddan ayıran anahtar
Sözlük

Feature flag (özellik bayrağı): yayını koddan ayıran anahtar

Hazırlayan: Mindset Institute EditörlüğüGüncellendi: 3 dk okuma

Feature flag'in kodu yeniden dağıtmadan özellik açıp kapatmayı nasıl sağladığını, türlerini, kademeli yayını ve temizlik riskini örnekle öğrenin.

Feature flag nedir?

Feature flag (özellik bayrağı ya da feature toggle), bir özelliğin canlıda açık mı kapalı mı olacağını koddan bağımsız bir ayarla belirleyen tekniktir. Kod içinde yeni davranış bir koşula bağlanır; bu koşulun değeri kod yeniden dağıtılmadan, bir yönetim panelinden ya da yapılandırmadan değiştirilir.

Bu sayede ayrı kararlar birbirinden ayrılır: kodun canlıya alınması (deploy) ve özelliğin kullanıcıya açılması (release). Özellik hazır olmasa bile kod kapalı bir bayrak arkasında canlıya gidebilir; açma kararı ürün ya da iş tarafının zamanlamasına bırakılır.

Nasıl çalışır?

Uygulama, bir özelliğe ulaşmadan önce bayrağın değerini değerlendirir. Değerlendirme çoğu zaman şu girdilere bakar: kullanıcı kimliği, kullanıcının grubu ya da planı, ülke, uygulama sürümü, ortam. Kurallar "şu kullanıcılar için açık", "kullanıcıların belirli bir kesiti için açık" ya da "herkes için kapalı" gibi ifadelerden oluşur.

Bayrak değerleri bir yapılandırma servisinden ya da özel bir bayrak yönetim platformundan alınır ve genellikle bellekte önbelleğe alınır; böylece her istekte ağ çağrısı yapılmaz. Bir değişiklik yapıldığında yeni değer kısa sürede tüm örneklere yayılır. Bayrak servisi ulaşılamadığında ne olacağını belirleyen varsayılan değer de tasarımın parçasıdır.

Bayrak türleri

  • Yayın bayrağı: Yarım kalmış ya da kademeli açılacak özelliği saklar. Ömrü kısadır.
  • Deney bayrağı: Kullanıcıları gruplara ayırıp farklı sürümleri karşılaştırmak için kullanılır (A/B testi).
  • İşletim bayrağı (kill switch): Üretimde sorun çıkan bir bileşeni hızla devre dışı bırakır. Ömrü uzun olabilir.
  • Yetki bayrağı: Belirli planlardaki ya da rollerdeki kullanıcılara özellik açar; ürünün kalıcı bir parçasıdır.

Bu ayrım önemlidir çünkü her türün ömrü, sahibi ve temizlik beklentisi farklıdır.

Örnek senaryo

Örneğin bir e-ticaret ekibi yeni bir ödeme adımı geliştiriyor. Kod, kapalı bir bayrak arkasında canlıya alınır. İlk olarak yalnızca şirket çalışanlarına açılır, ardından küçük bir kullanıcı kesitine, dönüşüm ve hata göstergeleri izlenerek kademeli olarak artırılır. Ödeme hatası oranı yükselirse ekip bayrağı kapatır; geri alma için yeni bir dağıtım beklenmez.

Sonuç olumluysa bayrak tamamen açılır ve bir sonraki sürümde bayrağın kendisi ve eski kod yolu koddan silinir.

Canary ve blue-green dağıtımdan farkı

Canary yayınında yeni sürümün tamamı bazı sunuculara ya da trafiğin bir kısmına verilir; kararı altyapı seviyesinde trafik yönlendirme verir. Blue-green dağıtımda eski ve yeni ortam yan yana tutulur, trafik topluca bir ortamdan diğerine geçirilir.

Feature flag ise uygulama içindeki bir özelliği, kullanıcı ya da bağlam bazında yönetir. Yani aynı sürüm herkese dağıtılmış olsa bile özellik yalnızca seçilen kitleye görünür. Bu yöntemler birbirinin alternatifi olmak zorunda değildir; riskli bir değişikliği önce canary ile, ardından özellik bayrağıyla kademeli açmak yaygın bir birleşimdir.

Sık yapılan hatalar

En sık sorun temizlik borcudur: görevini bitiren bayraklar koddan silinmez, zamanla kodda hangi yolun gerçekten çalıştığı belirsizleşir. Her bayrağa sahip, amaç ve bitiş tarihi atamak bu riski azaltır.

Diğer hatalar: çok sayıda bayrağın birbirine bağımlı hale gelmesi ve olası tüm kombinasyonların test edilememesi; bayrak servisi çöktüğünde güvenli olmayan varsayılan değerlerin kullanılması; hassas özelliklerin yalnızca istemci tarafında bayrakla gizlenmesi, yetkilendirmenin sunucuda yapılmaması; deney bayraklarında yeterli veri toplanmadan sonuç çıkarılması.

Mindset programlarında bu konu

Mindset kataloğundaki Feature Flag ile Sürüm ve Deney Yönetimi eğitimi anahtar türleri ve tasarım ilkeleri, altyapı, hedefleme ve kademeli açma, deney yönetimi ve yaşam döngüsü konularını işler. Feature Flag ile Kademeli Yayın ve Ürün Deneyleri eğitimi risk, test ve temizlik disiplinini de içerir. Dağıtım Stratejileri eğitimi blue-green, canary ve feature flag yaklaşımını birlikte ele alır.

İlgili Mindset programı

Feature Flag ile Sürüm ve Deney Yönetimi

Sık sorulanlar

Sık sorulan sorular

Feature flag ile feature toggle aynı şey mi?

Evet, günlük kullanımda aynı kavram için kullanılan farklı adlardır. Feature flag, feature toggle, feature switch ve özellik bayrağı bir özelliği koddan bağımsız olarak açıp kapatan mekanizmayı anlatır. Ekipten ekibe tercih edilen terim değişir.

Feature flag A/B testi için de kullanılır mı?

Evet. Deney bayrağı kullanıcıları rastgele gruplara ayırır ve her gruba farklı bir sürüm gösterir. Ancak bayrak yalnızca gruplamayı yapar; sonucun istatistiksel olarak yorumlanması, hangi sürümün kazandığına karar verilmesi için ayrıca ölçüm ve analiz altyapısı gerekir.

Feature flag performansı etkiler mi?

Değerlendirme genellikle bellekteki önbellekten yapıldığı için maliyeti çok düşüktür. Sorun, her istekte uzak bir servise gidildiğinde ya da gereksiz çok bayrak değerlendirildiğinde ortaya çıkar. İyi tasarımda değerler önbelleğe alınır ve servis erişilemezse güvenli bir varsayılan kullanılır.

Bayrakları ne zaman silmeliyim?

Yayın ve deney bayrakları, özellik herkese tamamen açıldığında ya da deney sonuçlandığında silinmelidir. Bayrağı ve eski kod yolunu birlikte kaldırmak gerekir. Kill switch ve yetki bayrakları ise kalıcı olabilir, ancak bunların da açık bir sahibi olmalıdır.

Feature Flag Nedir? Özellik Bayrağı Nasıl Kullanılır