Feature flag'ler (feature toggle), kod deploy'u ile feature release'i ayırmanızı sağlayan güçlü bir yazılım geliştirme pratiğidir. Yeni özellikleri kontrollü olarak yayınlayabilir, A/B test yapabilir ve sorun durumunda anında geri alabilirsiniz.
Feature Flag Nedir?
Kod içinde belirli özellikleri açıp kapatmanıza yarayan koşullu mantık yapılarıdır.
if (featureFlags.isEnabled("new-checkout")) {
showNewCheckout()
} else {
showOldCheckout()
}
Kullanım Senaryoları
- Gradual Rollout: %1 → %10 → %50 → %100
- Beta Testing: Seçili kullanıcılara erken erişim
- A/B Testing: İki varyant karşılaştırma
- Kill Switch: Sorunlu feature'ı anında kapatma
- Trunk-based Development: Incomplete code deploy
Flag Türleri
- Release Flags: Yeni özellik yayını
- Experiment Flags: A/B testleri
- Ops Flags: Operasyonel kontroller
- Permission Flags: Kullanıcı bazlı erişim
Targeting Seçenekleri
- User ID bazlı
- Email domain
- Coğrafi konum
- Device type
- User segments
- Percentage rollout
Popüler Araçlar
- LaunchDarkly: Enterprise lider
- Statsig: A/B test odaklı
- Flagsmith: Açık kaynak
- Split: Feature experimentation
- ConfigCat: Basit ve uygun fiyatlı
Best Practices
- Flag'leri temizleyin (technical debt)
- Naming convention belirleyin
- Fallback değerler tanımlayın
- Flag durumlarını logla
- Owner atayın
Feature flag'ler, modern CI/CD pipeline'larının vazgeçilmez parçasıdır. Riski azaltır, deployment güvenini artırır.