Ana içeriğe geç

Feature Flag

Türkçe karşılığı
özellik bayrağı
Okunuşu
fiçır fleg

Günlük kullanımda çoğunlukla İngilizcesi tercih edilir.

Güncellendi 2 dk okuma

Bu sayfayı paylaşın

Bağlantıyı gönderin, tanımı bağlantısıyla birlikte alıntılayın ya da kendi sitenizde bir kart olarak gösterin.

https://softwaredictionary.org/tr/terimler/feature-flag

Kısaca

Feature flag, koddaki bir özelliği çalışma zamanında açıp kapatan bir anahtardır; ekipler kodu herkese aynı anda yayınlamadan dağıtabilir.

Feature flag nedir?

Feature toggle olarak da adlandırılan feature flag, bir işlevin etkin olup olmadığına karar veren koşullu bir kod kontrolüdür. Flag'in değeri bir yapılandırma dosyası, bir veritabanı ya da özel bir flag servisi gibi kodun dışından gelir; bu yüzden uygulama çalışırken değişebilir. Bu, kodu sunuculara koyan dağıtımı (deploy) ile bir özelliği kullanıcılara görünür kılan yayından (release) ayırır.

En basit haliyle flag, yeni kod yolunun etrafındaki bir if ifadesidir. Daha gelişmiş sistemler flag'leri her istekte hedefleme kurallarıyla değerlendirir; örneğin bir özelliği şirket içi çalışanlar, tek bir ülkedeki kullanıcılar ya da hesapların rastgele %5'i için açar ve bu payı zamanla artırır. Özellik hatalara yol açarsa erişimi olan herkes onu saniyeler içinde kapatabilir; bu da çoğu zaman rollback'ten daha hızlı ve güvenlidir.

Ekipler flag'leri kademeli yayınlar, beta programları, riskli bağımlılıklar için kill switch'ler ve A/B testleri için kullanır; flag'ler ayrıca trunk-based development'ı uygulanabilir kılar, çünkü bitmemiş işler bir flag'in arkasında gizlenerek ana branch'e birleştirilebilir. Flag'i, yeni kablolanmış bir evdeki ışık düğmeleri gibi düşünün: elektrikçi tüm kabloları önceden döşer, hangi odaları aydınlatacağınıza siz sonra karar verirsiniz. Başlıca maliyet karmaşıklıktır; bu yüzden bir özellik tamamen yayına alındığında eski flag'ler kaldırılmalı, yoksa teknik borç olarak birikirler.

Feature flag'ler sıklıkla canary deployment'lar ve ortam değişkenleriyle karıştırılır. Canary deployment, trafiğin bir kısmını altyapı düzeyinde uygulamanın tamamının yeni bir sürümüne yönlendirir; feature flag ise çalışan tek bir sürümün içindeki bireysel özellikleri, çoğu zaman kullanıcı bazında açıp kapatır. Ortam değişkeni genellikle başlangıçta bir kez okunur ve her istek için aynıdır; flag ise canlı olarak değiştirilebilir ve farklı kullanıcılara farklı yanıtlar verebilir.

Önemli noktalar

  • Feature flag, yeni bir dağıtım yapmadan işlevi çalışma zamanında açıp kapatır.
  • Kodu dağıtmayı, bir özelliği kullanıcılara yayınlamaktan ayırır.
  • Hedefleme kuralları bir özelliği belirli kullanıcılar, gruplar ya da trafiğin bir yüzdesi için etkinleştirebilir.
  • Yeni bir özellik canlıda hatalı davrandığında flag bir kill switch görevi de görür.
  • Eskimiş flag'ler karmaşıklık ekler ve tam yayından sonra kaldırılmalıdır.

Örnek

Yeni bir ödeme akışını bir flag'in arkasına gizlemekjavascript
// The flag values come from a flag service or config, not from the code
const flags = await loadFlags({ userId: user.id, country: user.country });

if (flags.isEnabled("new-checkout")) {
  renderNewCheckout(cart); // only users the flag targets see this
} else {
  renderLegacyCheckout(cart); // everyone else keeps the current flow
}

Sık sorulan sorular

Feature flag ile feature branch arasındaki fark nedir?

Feature branch, bitmemiş işi birleştirilene kadar ayrı bir Git branch'inde tutar. Feature flag ise bitmemiş kodun ana branch'e birleştirilip dağıtılmasına, kapalı kalmasına izin verir; bu da uzun ömürlü branch'lerden ve zahmetli birleştirmelerden kaçınmayı sağlar.

Feature flag'ler teknik borç mudur?

Bir özellik tamamen yayına alındıktan sonra kodda kaldıklarında teknik borca dönüşürler. Birçok ekip her sürüm flag'ine bir sahip ve bir son kullanma tarihi atar, ardından yayın tamamlandığında flag'i ve eski kod yolunu siler.

Feature flag'ler A/B testi için kullanılabilir mi?

Evet. Bir flag kullanıcıları bir özelliğin farklı varyantlarına atayabilir ve bir analitik sistemi her grubun nasıl davrandığını karşılaştırır. A/B testi, kademeli yayınlar, kill switch'ler ve beta erişimiyle birlikte feature flag'lerin kullanım alanlarından biridir.

İlgili sayfalar

Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin

Daha fazla

Ayarlar