05.02.2026

Feature Flag Nedir? Canlıda Riski Azaltmanın ve Hızlı Denemenin Pratik Yolu

Yeni özelliği deploy etmeden aç/kapat: güvenli yayın, A/B test ve hızlı geri dönüş için feature flag rehberi.

Feature Flag Nedir?

Feature flag (feature toggle), yeni bir özelliği kodda hazır tutup, davranışını konfigürasyonla açıp kapatmanızı sağlayan tekniktir. Böylece sürüm çıkarmadan:

  • Özelliği kademeli açabilir,
  • Sorun çıkarsa anında kapatabilir,
  • Farklı kullanıcı gruplarında deneyebilir,
  • Geliştirme ile yayınlama süreçlerini birbirinden ayırabilirsiniz.

Kısa özet: Deploy ≠ Release. Deploy edersiniz, release’i flag ile yönetirsiniz.


Ne Zaman İşe Yarar?

1) Kademeli Yayın (Progressive Rollout)

Yeni arama algoritmanızı önce trafiğin %1’inde açın. CPU artışı, hata oranı, kullanıcı davranışı iyi gidiyorsa %10 → %50 → %100.

2) Riskli Refactor ve Büyük Değişimler

Örneğin “sepet hesaplama” mantığını baştan yazdınız. Eski ve yeni implementasyonu paralel tutup flag ile yönetin. Kritik anlarda geri dönüş tek tık olur.

3) A/B Test ve Deneyler

Kullanıcıları gruplara ayırıp (A: eski checkout, B: yeni checkout) dönüşüm farkını ölçebilirsiniz.

4) Operasyonel Kontrol

Bir entegrasyon (ör. kargo sağlayıcısı) sık sık time-out oluyorsa ilgili entegrasyonu flag ile geçici kapatıp alternatif akışa düşebilirsiniz.


Basit Bir Örnek

Örnek senaryo: “Ödeme sayfasında yeni kampanya kutusu” eklediniz.

if (flag("new_promo_box").isEnabledFor(user)) {
  renderNewPromoBox()
} else {
  renderOldPromoText()
}

Buradaki kritik nokta: Flag kontrolü hızlı, güvenilir ve tercihen cache’lenebilir olmalı.


Flag Türleri (Pratik Sınıflandırma)

  • Release flags: Yeni özelliği kademeli açmak için. Genelde kısa ömürlü.
  • Experiment flags: A/B test ve ölçüm için. Analitik ile birlikte düşünülmeli.
  • Ops flags: Acil durum butonu gibi; riskli entegrasyonu devre dışı bırakma.
  • Permission flags: Yetkilendirme/rol bazlı erişim (dikkat: tek başına güvenlik çözümü değildir).

En Sık Yapılan Hatalar

  1. Flag mezarlığı: Açıldıktan sonra koddan kaldırılmayan flag’ler. Zamanla karmaşa ve teknik borç üretir.
  2. Güvenlik yanılgısı: “Flag kapalıysa kimse erişemez.” Yanlış. Backend tarafında yetkilendirme ayrıca yapılmalı.
  3. Flag bağımlılık cehennemi: Bir flag diğerine bağlı, test matrisi patlar. Basit tutun.
  4. Tutarsızlık: Aynı kullanıcı bir sayfada açık, diğerinde kapalı görür. Kullanıcı “bucketing” deterministik olmalı.

Sağlam Bir Uygulama İçin Mini Kontrol Listesi

  • Deterministik kullanıcı segmenti: userId hash’i ile % oranlı rollout.
  • Kill switch: Operasyon ekibinin hızlı kapatma yetkisi.
  • Varsayılan davranış: Flag servisi düşerse ne olacak? (Fail-open / fail-closed)
  • Telemetri: Flag açıkken hata oranı, latency ve KPI’ları ayrı izleyin.
  • Son kullanma tarihi: Her flag’e “remove-by date” koyun, PR checklist’e ekleyin.

Sonuç

Feature flag’ler doğru kullanıldığında hem ürün ekiplerine daha hızlı deneme alanı açar, hem de mühendislik tarafında canlı riski ciddi ölçüde düşürür. Ana kural basit: Flag eklemek kolay, kaldırmak disiplin ister.