# Feature Flag

Adres: https://softwaredictionary.org/tr/terimler/feature-flag
Kategori: DevOps ve Bulut
Son güncelleme: 2026-09-30
Türkçe karşılığı: özellik bayrağı
Okunuşu: fiçır fleg

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 gizlemek

```javascript
// 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.

---

Software Dictionary: https://softwaredictionary.org/tr · https://softwaredictionary.org/tr/llms.txt
