Vebende Akademi - feature-flag-system-kurulumu
Uzmanla Konuşun
Blog
MAKALE

Feature Flag System Kurulumu: Adım Adım Mühendis Rehberi

Özellik bayrakları (feature flags) ile kontrollü sürüm yönetimi, hızlı deneyler ve güvenli rollout stratejileri oluşturma rehberi. Tasarım, mimari, operasyon ve en iyi uygulamalar.

Feature Flag System Kurulumu: Adım Adım Mühendis Rehberi

Özellik bayrakları (feature flags) ile kontrollü sürüm yönetimi, hızlı deneyler ve güvenli rollout stratejileri oluşturma rehberi. Tasarım, mimari, operasyon ve en iyi uygulamalar.

1. Giriş

Feature flag (özellik bayrağı) uygulamaları, yazılım geliştirme süreçlerinde yeni özelliklerin kontrollü bir şekilde açılıp kapatılmasını sağlayan bir tekniktir. Yazılımın yaşam döngüsünde kodu üretime göndermeyi işlevsel olarak aktif etmekten ayırır; böylece risk azaltılır, A/B testleri kolaylaşır, hızlı geri alma (rollback) mümkün olur ve ekipler bağımsız olarak release yapabilir.

Günümüzde mikroservis mimarileri, CI/CD otomasyonu ve müşteri odaklı hızlı deneme kültürü sayesinde feature flag kullanımının önemi arttı. Feature flag sistemleri yalnızca bir "anahtar" mekanizması değil; doğru tasarlandığında güvenlik, gözlemlenebilirlik, performans optimizasyonu ve organizasyonel hız sağlayan kritik bir platform haline gelir.

Bu neden konuşuluyor?

  • Hızlı teslimat (continuous delivery) ve risk yönetimi ihtiyacı.
  • Canlı ortamda kontrollü denemeler, A/B testleri ve gradual rollout gereksinimi.
  • Microservice ve distributed sistemlerde özelliklerin bağımsız istenen zamanda aktive edilmesi ihtiyacı.

Kimler için önemli?

Yazılım mühendisleri, platform ve DevOps ekipleri, ürün yöneticileri, SRE ve QA ekipleri için önemli bir uygulamadır.

Hangi problemleri çözüyor?

Feature flag'ler; deploy ile release sürecini ayırır, hızlı geri alma, canary release, kullanıcı segmentine göre açma/kapama, güvenli deney yapma ve acil durum müdahalelerini kolaylaştırır.

2. Kavramsal Temeller

Feature flag sistemini sağlam temeller üzerine kurmak için temel kavramları açıklayalım.

Kavramlar

  • Feature Flag: Bir özelliğin davranışını runtime'da değiştiren kontrol noktası (boolean, multivariate, percentage rollout vb.).
  • Client-side vs Server-side Flag: Bayrak uygulaması uygulama tarafında (UI/JS) veya sunucu tarafında (API/service) eval edilir.
  • Flag Targeting: Hangi kullanıcı, grup veya koşullar altında flag'in aktif olacağını belirleyen kurallar.
  • Percentage Rollout / Gradual Release: Yeni özelliği %1, %5, %25... şeklinde kademeli olarak açma stratejisi.

Mimari

Feature flag sistemi tipik olarak şunları içerir: yönetim paneli (UI), merkezi flag store (DB/feature store), SDK'lar (server & client), evaluation engine ve distribüe cache/edge (client-side cache veya CDN). Kurumlara göre ek bileşenler olarak audit log, segmentasyon servisi ve experiment platformu entegre edilir.

Terminoloji

  • Flag Key: Bayrakların tekil tanımlayıcısı.
  • Variation: Bayrak altında sunulan farklı davranış seçenekleri (ör. A/B, renk tema, farklı algoritma versiyonları).
  • Evaluation Context: Bayrak değerlendirme sırasında kullanılan parametreler (kullanıcıId, geo, role, device).

Bileşenler

Bir feature flag platformunda tipik olarak yönetim UI'sı, API, SDK'lar (backend & frontend), persistans (DB), dağıtılmış cache, event stream (audit/metrics) ve observability entegrasyonları yer alır.

3. Nasıl Çalışır?

Teknik mimariyi, veri akışını ve çalışma mantığını adım adım anlatalım.

Sistem Mimarisi

Basit bir kurulum üç ana katmana sahiptir: yönetim katmanı (UI & API), dağıtım katmanı (SDK & client integration) ve storage/stream katmanı (DB + event bus). Operasyonel olarak, flag değişiklikleri API üzerinden yapılır, persist edilir ve client'lara push veya pull mekanizmaları ile iletilir.

Bileşenler

  • Management UI / API: Product/engineering ekiplerinin flag oluşturduğu, hedefleme ve rollout ayarlarını yaptığı arayüz.
  • SDKs: Backend (Java, .NET, Go, Python) ve frontend (JS/TS, mobile) SDK'lar flag evaluation ve cache yönetimi için kullanılır.
  • Store: Flag konfigürasyonlarının merkezi saklandığı veri deposu (Postgres, Redis, CosmosDB vb.).
  • Delivery Mechanism: Push (stream / websocket) veya pull (periodic polling) ile client'lara güncelleme dağıtımı.

Veri Akışı

  1. Product/engineer Management UI üzerinden yeni flag veya değişiklik oluşturur.
  2. API bu değişikliği persist eder ve event bus (Kafka/Redis Streams) üzerinden bir değişiklik eventi yayınlar.
  3. SDK'lar push destekliyse bu event path ile client'lara itilir; yoksa client'lar belirli aralıklarla API'den pull yapar.
  4. Client runtime'da evaluation context'e göre flag'i değerlendirir ve ilgili davranışı seçer.
  5. Metric & audit pipeline'ı, flag kullanımını, experiment sonuçlarını ve değişiklik geçmişini kaydeder.

Çalışma Mantığı (Örnek Senaryo)

Yeni bir arama algoritmasını A/B testi ile açmak istiyoruz: Management UI'da flag oluşturulur — "search_v2_experiment". Targeting kullanıcı segmentine göre ayarlanır: %10 rastgele kullanıcıya. Flag aktif kullanıcılar için arama servisinin V2 algoritmasını döndürecek şekilde değerlendirilir. Metricler (conversion, latency) gerçek zamanlı toplanır. KPI'lar olumluysa rollout kademeli artırılır; olumsuzsa bayrak geri kapatılır.

4. Gerçek Dünya KULLANIMLARI

Feature flag'ler büyük ölçekli şirketlerde farklı amaçlarla yaygın kullanılır. Aşağıda örnekler ve kullanım biçimleri yer alıyor.

Netflix

Global feature rollout, canary ve A/B testleri için feature management platformları kullanır; izleme ve metric feedback loop'ları ile hızlı karar alır.

Uber

Coğrafi segmentasyon, surge pricing denemeleri ve sürücü uygulaması özellikleri için granular flag'ler uygular; rollback süreçleri otomatikleştirilmiştir.

Amazon

Checkout ve ödeme akışlarında riskli değişiklikleri küçük kitlelere açar; fraud detection deneyleri flags ile yürütülür.

OpenAI / Diğer ML Üretimleri

Model versiyonları, decoding stratejileri ve güvenlik filtrelerinin runtime controlü için feature flag mekanizmaları kullanılır.

Stripe

Ödeme akışlarında yeni özelliklerin gradual rollout'u ve ödeme tarafındaki A/B testleri flag tabanlı olarak yürütülür.

5. AVANTAJLAR VE SINIRLAMALAR

Avantajlar

  • Risk azaltma: Değişiklikleri canlıda küçük kitleye açıp sorun görüldüğünde hızlıca kapatabilirsiniz.
  • Hız: Deploy ve release süreçlerini ayırarak ekiplerin bağımsız ilerlemesini sağlar.
  • Deney & Validasyon: A/B testleri, canary rollout ve experimentler ile ürün kararlarını veri odaklı alabilirsiniz.

Dezavantajlar

  • Operasyonel karmaşıklık: Çok sayıda flag yönetimi, teknik borç ve