DevOps ve Yazılım Kalitesi

Özellik Bayrakları ile Kademeli Yayın: Yeni Özelliği Riski Bölerek Açmak

InsureHub Ekibi
17 Ağustos 2026

Yeni bir özelliği tüm kullanıcılara aynı anda açmak, bir binanın tüm ışıklarını tek bir şalterle yakmaya benzer: Bir sorun varsa her yer aynı anda karanlıkta kalır. Özellik bayrakları ise her odaya ayrı bir anahtar takmak gibidir. Kod canlı ortamda bulunur ama hangi kullanıcıların onu göreceğine ayrıca karar verilir. Bu yöntem, dağıtım ile yayını birbirinden ayırır.

Dağıtım ve yayın neden ayrılmalı?

Geleneksel yaklaşımda kod canlı ortama çıktığı anda özellik de kullanıcılara açılır. Bu, iki farklı riski aynı ana sıkıştırır: teknik risk (kod doğru çalışıyor mu?) ve ürün riski (kullanıcılar bu değişikliği nasıl karşılayacak?). Özellik bayraklarıyla kod önce kapalı olarak dağıtılır, teknik olarak sorunsuz olduğu doğrulanır, ardından kullanıcılara kademeli olarak açılır. Bir sorun çıktığında yeni bir sürüm yayınlamaya gerek kalmadan bayrak kapatılır.

Bayrak türleri

Yayın bayrakları

Geliştirmesi süren ya da yeni tamamlanan bir özelliği kontrollü açmak için kullanılır. Kısa ömürlüdür; özellik herkese açıldıktan sonra kaldırılmalıdır.

Operasyon bayrakları

Sistemin bir bölümünü acil durumda devre dışı bırakmak için kullanılır. Örneğin bir sigorta şirketinin servisi sorun yaşadığında, o şirketin teklif sorgusunu geçici olarak kapatmak bu türden bir bayrakla yapılabilir. Uzun ömürlü olabilirler.

Yetki ve paket bayrakları

Belirli modüllerin yalnızca ilgili aboneliğe sahip acentelerde görünmesini sağlar. Bunlar ürünün kalıcı bir parçasıdır ve yayın bayraklarından ayrı yönetilmelidir.

Kademeli açılış planı

Yeni bir özelliğin açılışı için örnek bir plan şu aşamalardan oluşabilir:

  1. İç ekip: Özellik önce yazılım ekibinin ve destek ekibinin test hesaplarında açılır.
  2. Gönüllü pilot acenteler: Yeni özelliği denemek isteyen ve geri bildirim vermeye hazır sınırlı sayıda acente.
  3. Kullanıcıların bir bölümü: Rastgele seçilmiş bir grup; hata oranları ve kullanım verileri karşılaştırılır.
  4. Tüm kullanıcılar: Ölçümler olumlu ve geri bildirimler ele alınmışsa özellik herkese açılır.
  5. Temizlik: Bayrak ve eski kod yolu koddan kaldırılır.

Her aşama arasında belirli bir izleme süresi ve ilerleme kriteri tanımlamak, kararları sezgiden çıkarır.

Bir örnek: yeni teklif karşılaştırma görünümü

Ekip, teklif sonuçlarını daha kolay karşılaştırmayı sağlayan yeni bir görünüm geliştirmiş olsun. Bu görünüm kasko teklifleri için tasarlanmış; trafik ve DASK akışlarının sonuç ekranları ise kendi yapılarıyla aynen kalacak. Bayrak, yalnızca kasko sonuç ekranını etkileyecek şekilde tanımlanır. Pilot aşamada bazı kullanıcılar teminat ayrıntılarının ilk ekranda görünmesini istediklerini belirtir. Ekip bu geri bildirimi uygular, sonra açılışı genişletir. Bu süre boyunca diğer kullanıcılar mevcut görünümle çalışmaya kesintisiz devam eder.

Bayrak borcu: görünmeyen maliyet

Özellik bayrakları güçlüdür ama birikirse kodu karmaşıklaştırır. Her bayrak, kodda iki farklı yol demektir; on bayrak, test edilmesi gereken çok sayıda kombinasyon anlamına gelir. Bayrak borcunu kontrol altında tutmak için:

  • Her yayın bayrağına bir sahip ve bir kaldırma tarihi atayın.
  • Tüm kullanıcılara uzun süredir açık olan bayrakları düzenli olarak listeleyin.
  • Bayrak kaldırma işini, özellik geliştirmenin bir parçası olarak planlayın.
  • İç içe geçmiş bayraklardan, yani bir bayrağın başka bir bayrağa bağlı olmasından kaçının.

Test ve gözlem

Bayraklı kod, hem açık hem kapalı durum için test edilmelidir. Yayın hattında her iki durumun da otomatik testlerden geçmesi, kapatma anahtarının gerçekten güvenli olduğunu garanti eder. Ayrıca metrik ve loglarda bayrak durumunun kaydedilmesi, bir hata oranı artışının yeni özellikle ilişkili olup olmadığını hızla anlamayı sağlar.

Acenteler açısından

Kademeli yayının acente kullanıcısına yansıması, yeniliklerin günlük işi kesintiye uğratmadan gelmesidir. Ayrıca pilot programlara katılmak isteyen acenteler, yeni özelliklerin kendi iş akışlarına göre şekillenmesine katkıda bulunabilir. CRM ekranlarında ya da teklif programında bir değişiklik geldiğinde, bunun tüm acentelere birden değil, önce dar bir grupta denendikten sonra açılması beklenen bir uygulamadır.

Hedefleme kuralları: kime açılacak?

Bir bayrağın kimin için açık olacağı, farklı ölçütlerle belirlenebilir. Doğru ölçüt, yayının amacına göre seçilir:

  • Acente bazında: Pilot programa katılan acentelerin tüm kullanıcıları yeni özelliği görür. Ekip içi tutarlılık sağlar; aynı acentede bir çalışanın görüp diğerinin görmemesi karışıklık yaratmaz.
  • Kullanıcı rolü bazında: Özellik önce yönetici rolündeki kullanıcılara açılır, ekiplerine tanıtmaları için zaman tanınır.
  • Kanal bazında: Özellik önce web panelinde, ardından mobil uygulamada açılır.
  • Yüzdelik dilim: Kullanıcıların rastgele ama sabit bir bölümü seçilir; aynı kullanıcı her oturumda aynı deneyimi yaşar.

Bayrakları kim değiştirebilir?

Bayrak değiştirmek, kod yayınlamak kadar etkili bir işlemdir; bir bayrağın yanlışlıkla açılması, hazır olmayan bir özelliği tüm kullanıcılara gösterebilir. Bu nedenle bayrak yönetim ekranına erişim yetkiyle sınırlanmalı, her değişiklik kimin, ne zaman ve neden yaptığıyla birlikte kayıt altına alınmalıdır. Kritik bayraklarda ikinci bir onay istenmesi de değerlendirilebilir. Bu kayıtlar, bir sorun incelenirken "o sırada hangi bayraklar değişti?" sorusuna da hızlı yanıt verir.

Bayrak değişikliklerinin yayın takvimiyle birlikte görünür olması da faydalıdır. Ekip, gün içinde hangi kod sürümünün yayına alındığını ve hangi bayrakların açılıp kapatıldığını tek bir zaman çizelgesinde gördüğünde, kullanıcıdan gelen bir şikâyeti doğru değişiklikle ilişkilendirmek çok daha kolaylaşır. Bu görünürlük, özellikle aynı gün içinde birden fazla kademeli açılışın sürdüğü yoğun dönemlerde hata ayıklama süresini belirgin biçimde kısaltır.

Sonuç

Özellik bayrakları, yeni bir özelliğin riskini küçük parçalara böler. Dağıtımı yayından ayırmak, kademeli açılış planı uygulamak ve bayrak borcunu düzenli temizlemek; hem yeniliğin hızını hem de kullanıcı deneyiminin istikrarını korur.