{"id":1006,"date":"2026-09-29T14:24:47","date_gmt":"2026-09-29T14:24:47","guid":{"rendered":"https:\/\/www.vps.tc\/blog\/?p=1006"},"modified":"2026-09-29T09:50:13","modified_gmt":"2026-09-29T09:50:13","slug":"feature-flag-nedir-guvenli-yayina-alma-rehberi","status":"publish","type":"post","link":"https:\/\/www.vps.tc\/blog\/tr\/feature-flag-nedir-guvenli-yayina-alma-rehberi\/","title":{"rendered":"Feature Flag Nedir? G\u00fcvenli Yay\u0131na Alma Rehberi"},"content":{"rendered":"<div class=\"aiw-summary\" id=\"aiw-ozet\">\n<p class=\"aiw-summary-title\">H\u0131zl\u0131 \u00d6zet &#8211; Feature Flag<\/p>\n<p>Feature flag, bir \u00f6zelli\u011fin kod deploy edilmeden hedef kullan\u0131c\u0131ya a\u00e7\u0131l\u0131p kapat\u0131lmas\u0131n\u0131 sa\u011flar. G\u00fcvenli kullan\u0131m i\u00e7in kademeli yay\u0131n, \u00f6l\u00e7\u00fcm, yetkilendirme ve temizleme plan\u0131 birlikte kurulmal\u0131d\u0131r.<\/p>\n<ul>\n<li><strong>Temel ayr\u0131m<\/strong> \u2014 Deployment kodu sunucuya ta\u015f\u0131r, feature flag ise bu kodun kimler i\u00e7in \u00e7al\u0131\u015faca\u011f\u0131n\u0131 belirler.<\/li>\n<li><strong>Kademeli yay\u0131n<\/strong> \u2014 \u00d6zelli\u011fi \u00f6nce k\u00fc\u00e7\u00fck bir kullan\u0131c\u0131 grubuna, metrikleri izleyerek daha geni\u015f kitlelere a\u00e7\u0131n.<\/li>\n<li><strong>G\u00fcvenli varsay\u0131lan<\/strong> \u2014 Flag servisi veya a\u011f ba\u011flant\u0131s\u0131 \u00e7al\u0131\u015fmad\u0131\u011f\u0131nda uygulanacak davran\u0131\u015f\u0131 \u00f6nceden tan\u0131mlay\u0131n.<\/li>\n<li><strong>Sunucu kontrol\u00fc<\/strong> \u2014 \u0130stemci taraf\u0131ndaki flag&#039;i yetkilendirme mekanizmas\u0131 olarak kullanmay\u0131n; izinleri API \u00fczerinde do\u011frulay\u0131n.<\/li>\n<li><strong>G\u00f6zlem<\/strong> \u2014 Hata oran\u0131, gecikme, kaynak kullan\u0131m\u0131 ve i\u015f metriklerini flag varyantlar\u0131yla birlikte izleyin.<\/li>\n<li><strong>Temizleme<\/strong> \u2014 Y\u00fczde 100 a\u00e7\u0131lan k\u0131sa \u00f6m\u00fcrl\u00fc flag&#039;leri koddan kald\u0131r\u0131n ve sahibi olmayan flag b\u0131rakmay\u0131n.<\/li>\n<\/ul>\n<\/div>\n<p class=\"aiw-lead\">Feature flag, bir yaz\u0131l\u0131m \u00f6zelli\u011fini kodu yeniden da\u011f\u0131tmadan belirli kullan\u0131c\u0131lar i\u00e7in a\u00e7\u0131p kapatmaya yarar. G\u00fcvenli yay\u0131n s\u00fcrecinde yeni kod \u00f6nce kapal\u0131 tutulur, ard\u0131ndan k\u00fc\u00e7\u00fck bir gruba a\u00e7\u0131l\u0131r ve hata metrikleri izlenerek geni\u015fletilir. Sorun g\u00f6r\u00fcl\u00fcrse \u00f6zellik kapat\u0131l\u0131r; veri migrasyonlar\u0131 ve yetkilendirme gibi konular ise ayr\u0131ca y\u00f6netilir.<\/p>\n<div class=\"aiw-toc\" style=\"border:1px solid #dbe3ea;border-radius:8px;padding:16px 20px;margin:0 0 28px\">\n<p class=\"aiw-toc-head\"><strong>\u0130\u00e7indekiler<\/strong><span class=\"aiw-toc-meta\"> \u00b7 11 dk okuma<\/span><\/p>\n<ol style=\"margin:10px 0 0;padding-left:22px\">\n<li><a href=\"#feature-flag-nedir-ve-ne-ise-yarar\">Feature flag nedir ve ne i\u015fe yarar?<\/a><\/li>\n<li><a href=\"#feature-flag-turleri-nelerdir\">Feature flag t\u00fcrleri nelerdir?<\/a><\/li>\n<li><a href=\"#guvenli-yayin-icin-flag-nasil-tasarlanir\">G\u00fcvenli yay\u0131n i\u00e7in flag nas\u0131l tasarlan\u0131r?<\/a><\/li>\n<li><a href=\"#flag-degerleri-kullaniciya-nasil-kademeli-acilir\">Flag de\u011ferleri kullan\u0131c\u0131ya nas\u0131l kademeli a\u00e7\u0131l\u0131r?<\/a><\/li>\n<li><a href=\"#feature-flag-yonetimi-icin-hangi-mimari-secilmeli\">Feature flag y\u00f6netimi i\u00e7in hangi mimari se\u00e7ilmeli?<\/a><\/li>\n<li><a href=\"#flag-guvenligi-ve-gozlemlenebilirlik-nasil-saglanir\">Flag g\u00fcvenli\u011fi ve g\u00f6zlemlenebilirlik nas\u0131l sa\u011flan\u0131r?<\/a><\/li>\n<li><a href=\"#eski-flagler-neden-teknik-borca-donusur\">Eski flag&#039;ler neden teknik borca d\u00f6n\u00fc\u015f\u00fcr?<\/a><\/li>\n<li><a href=\"#ci-cd-ve-testlerde-feature-flag-kullanimi\">CI\/CD ve testlerde feature flag kullan\u0131m\u0131<\/a><\/li>\n<li><a href=\"#bir-flag-productiona-alinmadan-once-ne-kontrol-edilmeli\">Bir flag production&#039;a al\u0131nmadan \u00f6nce ne kontrol edilmeli?<\/a><\/li>\n<li><a href=\"#flagi-productiona-almadan-once-sunlari-kontrol-edin\">Flag&#039;i Production&#039;a Almadan \u00d6nce \u015eunlar\u0131 Kontrol Edin<\/a><\/li>\n<li><a href=\"#sik-sorulan-sorular\">S\u0131k Sorulan Sorular<\/a><\/li>\n<\/ol>\n<\/div>\n<h2 id=\"feature-flag-nedir-ve-ne-ise-yarar\">Feature flag nedir ve ne i\u015fe yarar?<\/h2>\n<p>Feature flag, bir uygulama \u00f6zelli\u011finin kod yeniden da\u011f\u0131t\u0131lmadan a\u00e7\u0131l\u0131p kapat\u0131lmas\u0131n\u0131 sa\u011flayan yap\u0131land\u0131rma mekanizmas\u0131d\u0131r. Yeni bir \u00f6zelli\u011fi \u00f6nce yaln\u0131zca ekip \u00fcyelerine, belirli kullan\u0131c\u0131 gruplar\u0131na veya trafi\u011fin y\u00fczde 1&#8217;ine g\u00f6sterebilirsiniz. Sorun \u00e7\u0131karsa geri d\u00f6n\u00fc\u015f \u00e7o\u011fu zaman yeni bir deploy de\u011fil, kontroll\u00fc bir ayar de\u011fi\u015fikli\u011fidir.<\/p>\n<p>Bu yakla\u015f\u0131m, kodun production&#8217;a \u00e7\u0131kmas\u0131 ile \u00f6zelli\u011fin kullan\u0131c\u0131ya a\u00e7\u0131lmas\u0131n\u0131 birbirinden ay\u0131r\u0131r. \u0130kisi ayn\u0131 \u015fey de\u011fildir. Kod sunucuda bulunabilir, fakat ilgili davran\u0131\u015f bir flag arkas\u0131nda kapal\u0131 tutulabilir.<\/p>\n<h3>Feature flag ile deployment aras\u0131ndaki fark<\/h3>\n<p>Deployment, yeni kodun sunucuya y\u00fcklenmesidir. Feature flag ise bu kodun hangi ko\u015fullarda \u00e7al\u0131\u015faca\u011f\u0131n\u0131 belirler. Yay\u0131n riski b\u00f6ylece tek bir b\u00fcy\u00fck ana b\u0131rak\u0131lmaz; daha k\u00fc\u00e7\u00fck ve g\u00f6zlemlenebilir ad\u0131mlara b\u00f6l\u00fcn\u00fcr.<\/p>\n<table>\n<thead>\n<tr>\n<th>Kavram<\/th>\n<th>Ne de\u011fi\u015fir?<\/th>\n<th>Geri d\u00f6n\u00fc\u015f<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Deployment<\/td>\n<td>Sunucudaki uygulama kodu<\/td>\n<td>\u00d6nceki s\u00fcr\u00fcm veya yeni deploy<\/td>\n<\/tr>\n<tr>\n<td>Feature flag<\/td>\n<td>\u00d6zelli\u011fin \u00e7al\u0131\u015fma ko\u015fulu<\/td>\n<td>Flag de\u011ferinin de\u011fi\u015ftirilmesi<\/td>\n<\/tr>\n<tr>\n<td>Rollback<\/td>\n<td>\u00c7al\u0131\u015fan s\u00fcr\u00fcm<\/td>\n<td>\u00d6nceki uygulama s\u00fcr\u00fcm\u00fcne d\u00f6n\u00fc\u015f<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Feature flag, rollback&#8217;in yerine ge\u00e7mez. Veritaban\u0131 \u015femas\u0131 de\u011fi\u015ftiyse, veri migrasyonu geri al\u0131nam\u0131yorsa veya yeni kod t\u00fcm trafi\u011fi etkiliyorsa yaln\u0131zca flag kapatmak yeterli olmayabilir.<\/p>\n<p><strong>Ne yap\u0131lmal\u0131<\/strong> &#8211; Her flag i\u00e7in hangi \u00f6zelli\u011fi kontrol etti\u011fini, varsay\u0131lan de\u011ferini ve kald\u0131r\u0131laca\u011f\u0131 tarihi kay\u0131t alt\u0131na al\u0131n.<\/p>\n<h2 id=\"feature-flag-turleri-nelerdir\">Feature flag t\u00fcrleri nelerdir?<\/h2>\n<p>Her flag ayn\u0131 \u00f6mre veya ayn\u0131 risk profiline sahip de\u011fildir. K\u0131sa s\u00fcreli bir yay\u0131n kontrol\u00fc ile y\u0131llarca ya\u015fayacak bir abonelik yetkilendirmesini ayn\u0131 y\u00f6ntemle y\u00f6netmek, zamanla anla\u015f\u0131lmas\u0131 zor ko\u015fullar \u00fcretir.<\/p>\n<h3>Release flag<\/h3>\n<p>Hen\u00fcz tamamlanmam\u0131\u015f bir \u00f6zelli\u011fi production kodunda saklamak i\u00e7in kullan\u0131l\u0131r. Geli\u015ftirme s\u00fcrerken kapal\u0131 kal\u0131r, testler tamamland\u0131\u011f\u0131nda hedef kullan\u0131c\u0131 grubuna a\u00e7\u0131l\u0131r. Bu flag t\u00fcr\u00fcn\u00fcn \u00f6mr\u00fc k\u0131sa olmal\u0131d\u0131r; \u00f6zellik yay\u0131na \u00e7\u0131kt\u0131ktan sonra koddan ve flag kayd\u0131ndan temizlenir.<\/p>\n<h3>Experiment flag<\/h3>\n<p>Ayn\u0131 kullan\u0131c\u0131 grubuna farkl\u0131 davran\u0131\u015flar g\u00f6stermek ve \u00f6l\u00e7\u00fcm yapmak i\u00e7in kullan\u0131l\u0131r. A\/B testi buna \u00f6rnektir. Kullan\u0131c\u0131y\u0131 her istekte farkl\u0131 gruba d\u00fc\u015f\u00fcrmemek i\u00e7in kararl\u0131 bir de\u011ferlendirme anahtar\u0131 kullan\u0131lmal\u0131d\u0131r. Kullan\u0131c\u0131 kimli\u011fi veya anonim ziyaret\u00e7i i\u00e7in kal\u0131c\u0131 bir kimlik yoksa deney sonu\u00e7lar\u0131 anlam\u0131n\u0131 kaybedebilir.<\/p>\n<h3>Operational flag<\/h3>\n<p>Yo\u011fun trafik, \u00fc\u00e7\u00fcnc\u00fc taraf servis ar\u0131zas\u0131 veya kaynak t\u00fcketimi s\u0131ras\u0131nda pahal\u0131 bir \u00f6zelli\u011fi ge\u00e7ici olarak kapat\u0131r. Rapor d\u0131\u015fa aktarma, \u00f6neri motoru veya g\u00f6rsel i\u015fleme gibi i\u015flemler bu gruba girebilir. Operasyon ekibinin eri\u015febildi\u011fi, denetim kayd\u0131 tutan ve h\u0131zl\u0131 de\u011fi\u015ftirilebilen bir aray\u00fcz gerekir.<\/p>\n<h3>Permission flag<\/h3>\n<p>Bir \u00f6zelli\u011fi m\u00fc\u015fteri plan\u0131na, role veya tenant yap\u0131land\u0131rmas\u0131na g\u00f6re a\u00e7ar. Bu t\u00fcr flag&#8217;ler \u00e7o\u011fu zaman uzun \u00f6m\u00fcrl\u00fcd\u00fcr ve asl\u0131nda yetkilendirme sistemine yakla\u015f\u0131r. G\u00fcvenlik karar\u0131 yaln\u0131zca istemci taraf\u0131ndaki bir flag&#8217;e b\u0131rak\u0131lmamal\u0131d\u0131r; sunucu taraf\u0131nda kullan\u0131c\u0131 ve kaynak izinleri ayr\u0131ca do\u011frulanmal\u0131d\u0131r.<\/p>\n<h2 id=\"guvenli-yayin-icin-flag-nasil-tasarlanir\">G\u00fcvenli yay\u0131n i\u00e7in flag nas\u0131l tasarlan\u0131r?<\/h2>\n<p>\u0130yi bir flag, yaln\u0131zca <code>true<\/code> veya <code>false<\/code> de\u011feri de\u011fildir. En az\u0131ndan anahtar ad\u0131, sahibi, amac\u0131, olu\u015fturulma tarihi, hedefleme kurallar\u0131 ve kald\u0131r\u0131lma ko\u015fulu bulunmal\u0131d\u0131r.<\/p>\n<p>\u0130simlendirme davran\u0131\u015f\u0131 anlatmal\u0131d\u0131r. <code>new_ui<\/code> k\u0131sa g\u00f6r\u00fcn\u00fcr, fakat aylar sonra hangi ekran\u0131 ve hangi s\u00fcr\u00fcm\u00fc ifade etti\u011fi belirsizle\u015fir. <code>billing_invoice_pdf_v2<\/code> gibi bir ad, kapsam\u0131 daha a\u00e7\u0131k bi\u00e7imde ta\u015f\u0131r. Flag ad\u0131 de\u011fi\u015ftirilmeyecek bir API gibi d\u00fc\u015f\u00fcn\u00fclmelidir; ayn\u0131 anahtar\u0131n farkl\u0131 servislerde farkl\u0131 anlamlara gelmesi hata \u00fcretir.<\/p>\n<p>De\u011ferlendirme sonucunu uygulama i\u00e7inde merkezi bir katmandan ge\u00e7irin. Her controller veya frontend bile\u015feni kendi flag okuma mant\u0131\u011f\u0131n\u0131 yazarsa varsay\u0131lan de\u011ferler, \u00f6nbellek s\u00fcreleri ve hata davran\u0131\u015flar\u0131 birbirinden ayr\u0131l\u0131r.<\/p>\n<pre><code>if (flags.isEnabled(\"billing_invoice_pdf_v2\", userContext)) {\n    return renderNewInvoicePdf();\n}\n\nreturn renderLegacyInvoicePdf();<\/code><\/pre>\n<p>Bu \u00f6rnekte karar, PDF \u00fcretim kodunun i\u00e7ine da\u011f\u0131lm\u0131yor. <code>flags.isEnabled<\/code> katman\u0131 hedefleme, varsay\u0131lan de\u011fer ve sa\u011flay\u0131c\u0131 ileti\u015fimini tek yerde topluyor.<\/p>\n<p>Flag servisine eri\u015filemedi\u011finde ne olaca\u011f\u0131 \u00f6nceden belirlenmelidir. Kritik olmayan yeni bir arama \u00f6zelli\u011fi i\u00e7in <code>false<\/code> g\u00fcvenli varsay\u0131lan olabilir. Kimlik do\u011frulama veya \u00f6deme ak\u0131\u015f\u0131nda ise otomatik olarak kapatma karar\u0131 i\u015f mant\u0131\u011f\u0131na g\u00f6re ayr\u0131ca de\u011ferlendirilmelidir.<\/p>\n<p><strong>Ne yap\u0131lmal\u0131<\/strong> &#8211; Her flag i\u00e7in eri\u015fim hatas\u0131nda uygulanacak varsay\u0131lan davran\u0131\u015f\u0131 kod incelemesi s\u0131ras\u0131nda a\u00e7\u0131k\u00e7a belirtin.<\/p>\n<div class=\"aiw-callout aiw-callout-tip\">\n<p class=\"aiw-callout-label\">\u0130pucu<\/p>\n<p>\u0130lk uygulamada ayr\u0131 bir platform kurmak zorunda de\u011filsiniz. K\u00fc\u00e7\u00fck bir servis i\u00e7in s\u00fcr\u00fcmlenen bir JSON dosyas\u0131, a\u00e7\u0131k bir varsay\u0131lan de\u011fer ve son kullanma tarihi yeterli bir ba\u015flang\u0131\u00e7 olabilir.<\/p>\n<\/div>\n<h2 id=\"flag-degerleri-kullaniciya-nasil-kademeli-acilir\">Flag de\u011ferleri kullan\u0131c\u0131ya nas\u0131l kademeli a\u00e7\u0131l\u0131r?<\/h2>\n<p>En g\u00fcvenli yay\u0131n tek hamlede y\u00fczde 100&#8217;e \u00e7\u0131kmak de\u011fildir. \u00d6nce uygulama ekibi, ard\u0131ndan k\u00fc\u00e7\u00fck bir i\u00e7 kullan\u0131c\u0131 grubu, sonra d\u00fc\u015f\u00fck riskli bir m\u00fc\u015fteri segmenti ve son olarak t\u00fcm trafik se\u00e7ilebilir.<\/p>\n<ol>\n<li><strong>Kapal\u0131 ba\u015flat\u0131n:<\/strong> Yeni kod production&#8217;a \u00e7\u0131ksa bile flag varsay\u0131lan olarak devre d\u0131\u015f\u0131 olsun.<\/li>\n<li><strong>\u0130\u00e7 kullan\u0131c\u0131larla deneyin:<\/strong> Ekip hesaplar\u0131 ve test tenant&#8217;lar\u0131 ilk g\u00f6zlem noktas\u0131 olsun.<\/li>\n<li><strong>K\u00fc\u00e7\u00fck bir y\u00fczdede a\u00e7\u0131n:<\/strong> Trafi\u011fin veya kullan\u0131c\u0131lar\u0131n y\u00fczde 1&#8217;iyle ba\u015flay\u0131n; y\u00fczde burada rastgele ama kararl\u0131 bir da\u011f\u0131t\u0131m gerektirir.<\/li>\n<li><strong>Metrikleri izleyin:<\/strong> Hata oran\u0131, gecikme, kaynak kullan\u0131m\u0131 ve i\u015f metri\u011fini birlikte kontrol edin.<\/li>\n<li><strong>Aral\u0131klarla b\u00fcy\u00fct\u00fcn:<\/strong> Y\u00fczde 1, 5, 25, 50 ve 100 gibi kademeler aras\u0131nda g\u00f6zlem s\u00fcresi b\u0131rak\u0131n.<\/li>\n<li><strong>Geri d\u00f6n\u00fc\u015f ko\u015fulunu uygulay\u0131n:<\/strong> \u00d6nceden belirlenen e\u015fik a\u015f\u0131l\u0131rsa flag&#8217;i kapat\u0131n veya son g\u00fcvenli kademeye d\u00f6n\u00fcn.<\/li>\n<\/ol>\n<p>Y\u00fczde bazl\u0131 da\u011f\u0131t\u0131mda her istekte yeni bir rastgele say\u0131 \u00fcretmek yerine kullan\u0131c\u0131 veya tenant kimli\u011finden kararl\u0131 bir hash olu\u015fturmak daha tutarl\u0131 sonu\u00e7 verir. Aksi durumda ayn\u0131 kullan\u0131c\u0131 bir istekte yeni aray\u00fcz\u00fc, sonraki istekte eski aray\u00fcz\u00fc g\u00f6rebilir.<\/p>\n<pre><code>bucket = stableHash(user.id + \":billing_invoice_pdf_v2\") % 100\n\nif bucket &lt; rolloutPercentage:\n    enableFeature()<\/code><\/pre>\n<p>Bu yal\u0131n \u00f6rnek production i\u00e7in tek ba\u015f\u0131na yeterli bir g\u00fcvenlik katman\u0131 de\u011fildir; hash algoritmas\u0131, kimlik gizlili\u011fi, tenant s\u0131n\u0131rlar\u0131 ve flag de\u011fi\u015fikliklerinin denetim kayd\u0131 ayr\u0131ca ele al\u0131nmal\u0131d\u0131r.<\/p>\n<p>Flag de\u011ferlendirmesi sunucu taraf\u0131nda yap\u0131l\u0131yorsa istemciye yaln\u0131zca gerekli sonu\u00e7 g\u00f6nderilmelidir. T\u00fcm flag deposunu taray\u0131c\u0131ya vermek, gelecekteki \u00f6zellik isimlerini ve i\u015f kurallar\u0131n\u0131 a\u00e7\u0131\u011fa \u00e7\u0131karabilir.<\/p>\n<p><strong>Ne yap\u0131lmal\u0131<\/strong> &#8211; Kademeli yay\u0131na ba\u015flamadan \u00f6nce her y\u00fczde aral\u0131\u011f\u0131 i\u00e7in izlenecek metrikleri ve durdurma e\u015fi\u011fini yaz\u0131l\u0131 hale getirin.<\/p>\n<div class=\"aiw-callout aiw-callout-example\">\n<p class=\"aiw-callout-label\">\u00d6rnek<\/p>\n<p>Bir faturaland\u0131rma \u00f6zelli\u011fi \u00f6nce yaln\u0131zca i\u00e7 hesaplarda a\u00e7\u0131labilir. Hata oran\u0131 ve p95 gecikme normal kald\u0131\u011f\u0131nda y\u00fczde 1, y\u00fczde 10 ve y\u00fczde 50 kademeleriyle ilerlenir; \u00f6deme verisi etkilenirse flag kapat\u0131l\u0131r ve i\u015flem kay\u0131tlar\u0131 ayr\u0131ca incelenir.<\/p>\n<\/div>\n<h2 id=\"feature-flag-yonetimi-icin-hangi-mimari-secilmeli\">Feature flag y\u00f6netimi i\u00e7in hangi mimari se\u00e7ilmeli?<\/h2>\n<p>Flag de\u011ferleri sabit bir yap\u0131land\u0131rma dosyas\u0131nda, veritaban\u0131nda, \u00f6zel bir servis \u00fczerinde veya \u00fc\u00e7\u00fcnc\u00fc taraf bir platformda tutulabilir. Se\u00e7im; de\u011fi\u015fiklik h\u0131z\u0131na, ekip say\u0131s\u0131na, eri\u015fim denetimine ve servis kesintisine toleransa g\u00f6re yap\u0131lmal\u0131d\u0131r.<\/p>\n<table>\n<thead>\n<tr>\n<th>Yakla\u015f\u0131m<\/th>\n<th>G\u00fc\u00e7l\u00fc taraf\u0131<\/th>\n<th>S\u0131n\u0131r\u0131<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Yap\u0131land\u0131rma dosyas\u0131<\/td>\n<td>Basit, s\u00fcr\u00fcmlenebilir, d\u0131\u015f ba\u011f\u0131ml\u0131l\u0131\u011f\u0131 az<\/td>\n<td>De\u011fi\u015fiklik i\u00e7in \u00e7o\u011fu zaman deploy gerekir<\/td>\n<\/tr>\n<tr>\n<td>Veritaban\u0131<\/td>\n<td>Uygulama d\u0131\u015f\u0131 panel ve ayr\u0131nt\u0131l\u0131 hedefleme kurulabilir<\/td>\n<td>\u015eema, \u00f6nbellek ve ba\u011flant\u0131 hatalar\u0131 y\u00f6netilmelidir<\/td>\n<\/tr>\n<tr>\n<td>Flag servisi<\/td>\n<td>Kademeli yay\u0131n, denetim ve ekip eri\u015fimi daha d\u00fczenlidir<\/td>\n<td>Yeni bir a\u011f ba\u011f\u0131ml\u0131l\u0131\u011f\u0131 ve i\u015fletim y\u00fck\u00fc eklenir<\/td>\n<\/tr>\n<tr>\n<td>\u0130stemci taraf\u0131 ayar<\/td>\n<td>Aray\u00fcz denemeleri h\u0131zl\u0131 yap\u0131labilir<\/td>\n<td>G\u00fcvenlik ve yetkilendirme i\u00e7in g\u00fcvenilemez<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>OpenFeature dok\u00fcmantasyonu, flag de\u011ferlendirmesini uygulama kodundan ay\u0131rmak i\u00e7in sa\u011flay\u0131c\u0131 tabanl\u0131, vendor-neutral bir yakla\u015f\u0131m tan\u0131mlar. Bu modelde uygulama ayn\u0131 de\u011ferlendirme aray\u00fcz\u00fcn\u00fc kullan\u0131rken flag verisinin kayna\u011f\u0131 de\u011fi\u015febilir.<\/p>\n<p>Basit bir VPS \u00fczerinde \u00e7al\u0131\u015fan tek uygulama i\u00e7in \u00f6nce s\u00fcr\u00fcmlenen bir YAML veya JSON dosyas\u0131 yeterli olabilir. Ancak de\u011fi\u015fikli\u011fi deploy etmeden yapmak gerekiyorsa dosyan\u0131n yeniden y\u00fcklenmesi, atomik yaz\u0131lmas\u0131 ve ge\u00e7ersiz i\u00e7erikte son ge\u00e7erli yap\u0131land\u0131rmaya d\u00f6n\u00fclmesi gerekir.<\/p>\n<pre><code>features:\n  billing_invoice_pdf_v2:\n    enabled: false\n    rollout_percentage: 0\n    owner: billing-team\n    expires_at: 2026-12-31<\/code><\/pre>\n<p>Yap\u0131land\u0131rma dosyas\u0131n\u0131 uygulama s\u00fcrecinin \u00fczerinde do\u011frudan d\u00fczenlemek yerine ge\u00e7ici dosyaya yaz\u0131p atomik bi\u00e7imde yerine koymak daha g\u00fcvenlidir. Birden fazla uygulama \u00f6rne\u011fi varsa her \u00f6rne\u011fin ayn\u0131 flag de\u011ferini ne kadar s\u00fcrede g\u00f6rd\u00fc\u011f\u00fc ayr\u0131ca \u00f6l\u00e7\u00fclmelidir.<\/p>\n<p>Bir flag servisi kullan\u0131ld\u0131\u011f\u0131nda a\u011f gecikmesi ve servis eri\u015filemezli\u011fi hesaba kat\u0131l\u0131r. De\u011ferlendirme sonucunu k\u0131sa s\u00fcreli \u00f6nbelle\u011fe almak y\u00fck\u00fc azaltabilir; fakat kapatma karar\u0131n\u0131n t\u00fcm \u00f6rneklere ula\u015fmas\u0131 gecikebilir.<\/p>\n<h2 id=\"flag-guvenligi-ve-gozlemlenebilirlik-nasil-saglanir\">Flag g\u00fcvenli\u011fi ve g\u00f6zlemlenebilirlik nas\u0131l sa\u011flan\u0131r?<\/h2>\n<p>Bir flag&#8217;in a\u00e7\u0131lmas\u0131, kod de\u011fi\u015fikli\u011finden farkl\u0131 olarak \u00e7o\u011fu zaman do\u011frudan kullan\u0131c\u0131 davran\u0131\u015f\u0131n\u0131 de\u011fi\u015ftirir. Bu y\u00fczden flag de\u011fi\u015fiklikleri de production de\u011fi\u015fikli\u011fi gibi denetlenmelidir.<\/p>\n<ul>\n<li>De\u011fi\u015fikli\u011fi yapan kullan\u0131c\u0131y\u0131 kaydedin.<\/li>\n<li>Eski ve yeni de\u011feri audit log i\u00e7inde saklay\u0131n.<\/li>\n<li>De\u011fi\u015fikli\u011fin zaman\u0131n\u0131 UTC olarak tutun.<\/li>\n<li>Flag anahtar\u0131n\u0131 ve hedef kural\u0131n\u0131 loglay\u0131n.<\/li>\n<li>De\u011ferlendirme hatalar\u0131n\u0131 ayr\u0131 bir metrikte izleyin.<\/li>\n<li>Hassas kullan\u0131c\u0131 verilerini log sat\u0131r\u0131na koymay\u0131n.<\/li>\n<\/ul>\n<p>Her istekte t\u00fcm flag de\u011ferlerini loglamak g\u00fcr\u00fclt\u00fc ve maliyet \u00fcretir. Karar\u0131n uygulama metri\u011fine etkisini \u00f6l\u00e7mek daha kullan\u0131\u015fl\u0131d\u0131r. \u00d6rne\u011fin <code>invoice_pdf_generation_total{variant=\"v2\"}<\/code> ve <code>invoice_pdf_errors_total{variant=\"v2\"}<\/code> gibi d\u00fc\u015f\u00fck kardinaliteli etiketler kullan\u0131labilir; e-posta adresi veya ham kullan\u0131c\u0131 kimli\u011fi etiket yap\u0131lmamal\u0131d\u0131r.<\/p>\n<p>Flag de\u011fi\u015fiminden sonra 5xx oran\u0131, p95 veya p99 gecikme, CPU, bellek, veritaban\u0131 ba\u011flant\u0131 havuzu ve kuyruk uzunlu\u011fu takip edilmelidir. Yaln\u0131zca uygulama loglar\u0131n\u0131n temiz g\u00f6r\u00fcnmesi yeni davran\u0131\u015f\u0131n sa\u011fl\u0131kl\u0131 oldu\u011fu anlam\u0131na gelmez.<\/p>\n<p>\u00d6zellik flag&#8217;i bir g\u00fcvenlik kontrol\u00fc olarak kullan\u0131l\u0131yorsa, kapal\u0131 durumun ger\u00e7ekten yetkisiz eri\u015fimi engelledi\u011fi test edilmelidir. Frontend&#8217;de butonun gizlenmesi eri\u015fim kontrol\u00fc de\u011fildir; API endpoint&#8217;i her istekte sunucu taraf\u0131nda yetki do\u011frulamal\u0131d\u0131r.<\/p>\n<p><strong>Ne yap\u0131lmal\u0131<\/strong> &#8211; Flag de\u011fi\u015fimini, uygulama hatalar\u0131n\u0131 ve i\u015f metri\u011fini ayn\u0131 zaman \u00e7izelgesinde inceleyebilece\u011finiz bir dashboard olu\u015fturun.<\/p>\n<div class=\"aiw-callout aiw-callout-warn\">\n<p class=\"aiw-callout-label\">Dikkat<\/p>\n<p>\u0130stemci taraf\u0131nda butonu gizlemek eri\u015fim kontrol\u00fc de\u011fildir. API endpoint&#039;i, flag a\u00e7\u0131k g\u00f6r\u00fcnse bile her istekte kullan\u0131c\u0131 rol\u00fcn\u00fc ve kaynak sahipli\u011fini sunucu taraf\u0131nda do\u011frulamal\u0131d\u0131r.<\/p>\n<\/div>\n<h2 id=\"eski-flagler-neden-teknik-borca-donusur\">Eski flag&#8217;ler neden teknik borca d\u00f6n\u00fc\u015f\u00fcr?<\/h2>\n<p>Bir flag a\u00e7\u0131ld\u0131ktan sonra unutulursa kod iki ayr\u0131 davran\u0131\u015f\u0131 uzun s\u00fcre ta\u015f\u0131maya ba\u015flar. Test say\u0131s\u0131 artar, hangi dal\u0131n h\u00e2l\u00e2 gerekli oldu\u011fu belirsizle\u015fir ve yeni geli\u015ftirici eski ko\u015fulu kald\u0131rmaya \u00e7ekinir.<\/p>\n<p>GitLab&#8217;\u0131n geli\u015ftirme dok\u00fcmantasyonunda da flag ya\u015fam d\u00f6ng\u00fcs\u00fc, tan\u0131ml\u0131 flag t\u00fcr\u00fc, sahibi ve kald\u0131rma plan\u0131 ile birlikte ele al\u0131n\u0131r. Pratik ders basittir: flag olu\u015ftururken kald\u0131rma i\u015fini de planlay\u0131n.<\/p>\n<h3>Flag temizleme takvimi<\/h3>\n<ol>\n<li>Flag&#8217;i olu\u015ftururken son g\u00f6zden ge\u00e7irme tarihini belirleyin.<\/li>\n<li>Yay\u0131ndan sonra eski kod yolunun h\u00e2l\u00e2 kullan\u0131l\u0131p kullan\u0131lmad\u0131\u011f\u0131n\u0131 \u00f6l\u00e7\u00fcn.<\/li>\n<li>Flag y\u00fczde 100 a\u00e7\u0131k ve geri d\u00f6n\u00fc\u015f gerekmiyorsa eski dal\u0131 kald\u0131r\u0131n.<\/li>\n<li>Testleri, dok\u00fcmantasyonu ve yap\u0131land\u0131rma kayd\u0131n\u0131 g\u00fcncelleyin.<\/li>\n<li>Flag deposunda silme i\u015flemini denetim kayd\u0131yla tamamlay\u0131n.<\/li>\n<\/ol>\n<p>Uzun \u00f6m\u00fcrl\u00fc permission veya operational flag&#8217;ler i\u00e7in otomatik silme do\u011fru olmayabilir. Bu flag&#8217;lerde periyodik sahiplik kontrol\u00fc ve eri\u015fim g\u00f6zden ge\u00e7irmesi yap\u0131lmal\u0131d\u0131r. K\u0131sa \u00f6m\u00fcrl\u00fc release flag&#8217;leri ise statik analiz, pull request kontrol\u00fc veya son kullanma tarihi alarm\u0131yla izlenebilir.<\/p>\n<p><strong>Ne yap\u0131lmal\u0131<\/strong> &#8211; S\u00fcresi ge\u00e7en flag&#8217;leri listeleyen haftal\u0131k bir rapor \u00fcretin ve sahibi olmayan hi\u00e7bir flag&#8217;i a\u00e7\u0131k u\u00e7lu b\u0131rakmay\u0131n.<\/p>\n<div class=\"aiw-callout aiw-callout-field\">\n<p class=\"aiw-callout-label\">Sahadan not<\/p>\n<p>Gece \u00fc\u00e7te bir m\u00fc\u015fterinin \/var b\u00f6l\u00fcm\u00fc y\u00fczde 96 dolu alarm\u0131 verdi. `ncdu -x \/var` \u00e7\u0131kt\u0131s\u0131nda d\u00f6nen uygulaman\u0131n log dizinini buldum; `\/etc\/logrotate.d\/app` dosyas\u0131ndaki eksik kural\u0131 ekleyip `logrotate -d \/etc\/logrotate.d\/app` ile yap\u0131land\u0131rmay\u0131 do\u011frulad\u0131m. Sonraki kontrolde log dosyalar\u0131 g\u00fcnl\u00fck d\u00f6nd\u00fcr\u00fcl\u00fcyordu ve disk kullan\u0131m\u0131 normale indi.<\/p>\n<\/div>\n<h2 id=\"ci-cd-ve-testlerde-feature-flag-kullanimi\">CI\/CD ve testlerde feature flag kullan\u0131m\u0131<\/h2>\n<p>Flag arkas\u0131ndaki yeni kod yaln\u0131zca flag a\u00e7\u0131kken test ediliyorsa kapal\u0131 dal zamanla bozulabilir. Her iki davran\u0131\u015f i\u00e7in de birim ve entegrasyon testleri yaz\u0131lmal\u0131d\u0131r.<\/p>\n<pre><code>FEATURE_BILLING_INVOICE_PDF_V2=false pytest tests\/billing\nFEATURE_BILLING_INVOICE_PDF_V2=true pytest tests\/billing<\/code><\/pre>\n<p>Ortam de\u011fi\u015fkeniyle yap\u0131lan bu \u00f6rnek, k\u00fc\u00e7\u00fck servislerde h\u0131zl\u0131 bir ba\u015flang\u0131\u00e7 sa\u011flar. Production yap\u0131land\u0131rmas\u0131 i\u00e7in gizli bilgilerle flag de\u011ferlerini kar\u0131\u015ft\u0131rmay\u0131n; bir \u00f6zelli\u011fi a\u00e7mak i\u00e7in kullan\u0131lan ayar, API anahtar\u0131 veya veritaban\u0131 parolas\u0131 de\u011fildir.<\/p>\n<p>CI\/CD hatt\u0131nda flag de\u011fi\u015fikli\u011fini uygulama deploy&#8217;undan ayr\u0131 bir de\u011fi\u015fiklik olarak g\u00f6r\u00fcn\u00fcr k\u0131l\u0131n. Production a\u00e7\u0131l\u0131\u015f\u0131nda onay, iki ki\u015fili kontrol veya otomatik health check kullan\u0131labilir. Flag a\u00e7\u0131ld\u0131ktan sonra k\u0131sa bir g\u00f6zlem penceresi b\u0131rakmak, sonraki pipeline ad\u0131m\u0131n\u0131n hatay\u0131 b\u00fcy\u00fctmesini \u00f6nler.<\/p>\n<p>Veritaban\u0131 migrasyonlar\u0131 \u00f6zel dikkat ister. Yeni kod eski \u015femayla da \u00e7al\u0131\u015fabiliyorsa \u00f6nce geriye uyumlu \u015fema eklenir, ard\u0131ndan kod deploy edilir, flag a\u00e7\u0131l\u0131r ve eski kolon veya tablo en son kald\u0131r\u0131l\u0131r. Flag&#8217;i a\u00e7\u0131p migrasyonu sonra \u00e7al\u0131\u015ft\u0131rmak, \u00f6zellikle birden fazla uygulama \u00f6rne\u011finde kesintiye yol a\u00e7abilir.<\/p>\n<h2 id=\"bir-flag-productiona-alinmadan-once-ne-kontrol-edilmeli\">Bir flag production&#8217;a al\u0131nmadan \u00f6nce ne kontrol edilmeli?<\/h2>\n<p>Flag mekanizmas\u0131 yay\u0131n riskini azalt\u0131r; riski s\u0131f\u0131rlamaz. Uygulaman\u0131n yeni ve eski yollar\u0131 ayn\u0131 anda \u00e7al\u0131\u015f\u0131rken veri tutarl\u0131l\u0131\u011f\u0131, \u00f6nbellek davran\u0131\u015f\u0131, kuyruklar ve \u00fc\u00e7\u00fcnc\u00fc taraf API limitleri kontrol edilmelidir.<\/p>\n<p>\u00d6rne\u011fin yeni aray\u00fcz bir CDN \u00fczerinde \u00f6nbelle\u011fe al\u0131n\u0131yorsa, kullan\u0131c\u0131 segmentine g\u00f6re de\u011fi\u015fen i\u00e7eri\u011fin cache anahtarlar\u0131na do\u011fru yans\u0131d\u0131\u011f\u0131ndan emin olun. [<a href=\"https:\/\/www.vps.tc\/blog\/tr\/cdn-nedir-web-sitesini-nasil-hizlandirir\/\">CDN Nedir? Web Sitesini Nas\u0131l H\u0131zland\u0131r\u0131r?<\/a>] ba\u015fl\u0131\u011f\u0131ndaki \u00f6nbellek davran\u0131\u015f\u0131 bilgileri bu noktada do\u011frudan i\u015fe yarar. Sunucu taraf\u0131nda ise [<a href=\"https:\/\/www.vps.tc\/blog\/tr\/ubuntu-nginx-kurulumu-ilk-yapilandirma\/\">Ubuntu&#8217;da Nginx Kurulumu ve \u0130lk Yap\u0131land\u0131rma<\/a>] rehberindeki yap\u0131land\u0131rma do\u011frulama al\u0131\u015fkanl\u0131\u011f\u0131, flag&#8217;den ba\u011f\u0131ms\u0131z olarak g\u00fcvenli bir kontrol katman\u0131d\u0131r.<\/p>\n<p>Yay\u0131n s\u0131ras\u0131nda bir VPS snapshot&#8217;\u0131 almak h\u0131zl\u0131 bir geri d\u00f6n\u00fc\u015f se\u00e7ene\u011fi sunabilir; fakat snapshot uygulama veritaban\u0131 tutarl\u0131l\u0131\u011f\u0131n\u0131 ve flag de\u011fi\u015fikli\u011finin kendisini tek ba\u015f\u0131na garanti etmez. [<a href=\"https:\/\/www.vps.tc\/blog\/tr\/vps-snapshot-nedir-anlik-yedekleme-rehberi\/\">VPS Snapshot Nedir? Anl\u0131k Yedekleme Rehberi<\/a>] i\u00e7indeki s\u0131n\u0131rlar dikkate al\u0131nmal\u0131d\u0131r. Kod s\u00fcr\u00fcm\u00fcn\u00fc y\u00f6netmek i\u00e7in de [<a href=\"https:\/\/www.vps.tc\/blog\/tr\/git-nedir-surum-kontrolu-nasil-calisir\/\">Git Nedir? S\u00fcr\u00fcm Kontrol\u00fc Nas\u0131l \u00c7al\u0131\u015f\u0131r?<\/a>] ile flag tan\u0131mlar\u0131n\u0131 ve kald\u0131rma de\u011fi\u015fikliklerini birlikte izlemek daha sa\u011fl\u0131kl\u0131d\u0131r.<\/p>\n<p><strong>Ne yap\u0131lmal\u0131<\/strong> &#8211; Flag&#8217;i a\u00e7madan \u00f6nce eski kod yolu, yeni kod yolu, veri migrasyonu ve geri d\u00f6n\u00fc\u015f plan\u0131n\u0131 ayn\u0131 test ortam\u0131nda deneyin.<\/p>\n<h2 id=\"flagi-productiona-almadan-once-sunlari-kontrol-edin\">Flag&#039;i Production&#039;a Almadan \u00d6nce \u015eunlar\u0131 Kontrol Edin<\/h2>\n<ul class=\"aiw-checklist\">\n<li>Flag&#039;in amac\u0131n\u0131, sahibini ve kald\u0131r\u0131lma tarihini yaz\u0131n.<\/li>\n<li>Kapal\u0131 ve a\u00e7\u0131k davran\u0131\u015f i\u00e7in ayr\u0131 testler olu\u015fturun.<\/li>\n<li>A\u011f veya flag servisi hatas\u0131nda kullan\u0131lacak varsay\u0131lan\u0131 belirleyin.<\/li>\n<li>Kademeli yay\u0131n y\u00fczdelerini ve durdurma e\u015fiklerini tan\u0131mlay\u0131n.<\/li>\n<li>Flag de\u011fi\u015fiklikleri i\u00e7in audit log ve eri\u015fim yetkisi kurun.<\/li>\n<li>\u0130stemci taraf\u0131 kontrollerini sunucu taraf\u0131 yetkilendirmeyle destekleyin.<\/li>\n<li>Y\u00fczde 100 a\u00e7\u0131lan k\u0131sa \u00f6m\u00fcrl\u00fc flag&#039;leri koddan ve yap\u0131land\u0131rmadan kald\u0131r\u0131n.<\/li>\n<\/ul>\n<div class=\"aiw-cta\">\n<p>Bir sonraki yay\u0131n\u0131n\u0131z i\u00e7in tek bir k\u00fc\u00e7\u00fck flag se\u00e7in; \u00f6nce kapal\u0131 davran\u0131\u015f\u0131, sonra y\u00fczde 1&#039;lik da\u011f\u0131t\u0131m\u0131 ve geri d\u00f6n\u00fc\u015f e\u015fi\u011fini test edin. Bir ay sonra h\u00e2l\u00e2 sahibi ve kald\u0131rma tarihi olmayan flag kal\u0131p kalmad\u0131\u011f\u0131na bak\u0131n.<\/p>\n<p class=\"aiw-cta-action\"><a href=\"https:\/\/www.vps.tc\/tr\/vps\">VPS paketlerini inceleyin<\/a><\/p>\n<\/div>\n<h2 id=\"sik-sorulan-sorular\">S\u0131k Sorulan Sorular<\/h2>\n<div class=\"aiw-faq\">\n<details class=\"aiw-faq-item\" open>\n<summary>Feature flag ile feature toggle ayn\u0131 \u015fey mi?<\/summary>\n<p>G\u00fcnl\u00fck kullan\u0131mda feature flag ve feature toggle \u00e7o\u011fu zaman ayn\u0131 mekanizmay\u0131 ifade eder: Bir \u00f6zelli\u011fin \u00e7al\u0131\u015fma durumunu kod deploy&#039;undan ba\u011f\u0131ms\u0131z de\u011fi\u015ftirmek. Baz\u0131 ekipler toggle kelimesini \u00f6zellikle k\u0131sa \u00f6m\u00fcrl\u00fc release kontrol\u00fc i\u00e7in, flag kelimesini ise deney, operasyon veya yetki kurallar\u0131 i\u00e7in kullan\u0131r. Bu ayr\u0131m evrensel bir standart de\u011fildir; ekip i\u00e7inde terim ve ya\u015fam d\u00f6ng\u00fcs\u00fc netle\u015ftirilmelidir.<\/p>\n<\/details>\n<details class=\"aiw-faq-item\">\n<summary>Feature flag g\u00fcvenli\u011fi art\u0131r\u0131r m\u0131?<\/summary>\n<p>Tek ba\u015f\u0131na art\u0131rmaz. Feature flag, yeni kodun kademeli a\u00e7\u0131lmas\u0131n\u0131 ve sorunlu davran\u0131\u015f\u0131n h\u0131zl\u0131 kapat\u0131lmas\u0131n\u0131 sa\u011flayarak yay\u0131n riskini azaltabilir. Ancak yetkilendirme, gizli bilgi korumas\u0131 ve API g\u00fcvenli\u011fi flag&#039;e b\u0131rak\u0131lmamal\u0131d\u0131r. \u0130stemci taraf\u0131ndaki bir de\u011feri de\u011fi\u015ftiren kullan\u0131c\u0131, sunucu taraf\u0131nda ayr\u0131ca kontrol yoksa normalde g\u00f6rmemesi gereken endpoint&#039;e eri\u015febilir.<\/p>\n<\/details>\n<details class=\"aiw-faq-item\">\n<summary>Feature flag nas\u0131l uygulan\u0131r?<\/summary>\n<p>\u00d6nce merkezi bir de\u011ferlendirme katman\u0131 olu\u015fturulur; bu katman flag anahtar\u0131n\u0131, kullan\u0131c\u0131 veya tenant ba\u011flam\u0131n\u0131 ve varsay\u0131lan davran\u0131\u015f\u0131 al\u0131r. De\u011ferler dosya, veritaban\u0131 veya flag servisi \u00fczerinden okunabilir. Ard\u0131ndan \u00f6zellik kapal\u0131yken ve a\u00e7\u0131kken test yaz\u0131l\u0131r, k\u00fc\u00e7\u00fck bir grupta yay\u0131n yap\u0131l\u0131r, metrikler izlenir ve e\u015fikler sa\u011flan\u0131rsa da\u011f\u0131t\u0131m geni\u015fletilir.<\/p>\n<\/details>\n<details class=\"aiw-faq-item\">\n<summary>Feature flag production ortam\u0131nda nas\u0131l test edilir?<\/summary>\n<p>\u00d6zellik \u00f6nce i\u00e7 kullan\u0131c\u0131 veya test tenant&#039;lar\u0131 i\u00e7in a\u00e7\u0131l\u0131r. Hata oran\u0131, gecikme, CPU, bellek, veritaban\u0131 ba\u011flant\u0131lar\u0131 ve i\u015f metrikleri eski davran\u0131\u015fla kar\u015f\u0131la\u015ft\u0131r\u0131l\u0131r. Yeni ve eski kod yolunun ayn\u0131 veri ko\u015fullar\u0131nda \u00e7al\u0131\u015ft\u0131\u011f\u0131 do\u011frulan\u0131r. Kademeli art\u0131\u015f s\u0131ras\u0131nda beklenmeyen bir e\u015fik a\u015f\u0131l\u0131rsa flag kapat\u0131l\u0131r ve olay kayd\u0131 olu\u015fturulur.<\/p>\n<\/details>\n<details class=\"aiw-faq-item\">\n<summary>Feature flag ne zaman kald\u0131r\u0131lmal\u0131?<\/summary>\n<p>K\u0131sa \u00f6m\u00fcrl\u00fc release flag&#039;i, \u00f6zellik t\u00fcm hedef kullan\u0131c\u0131lar i\u00e7in kararl\u0131 \u00e7al\u0131\u015ft\u0131ktan ve geri d\u00f6n\u00fc\u015f gereksinimi ortadan kalkt\u0131ktan sonra kald\u0131r\u0131lmal\u0131d\u0131r. Kod dal\u0131, testler, yap\u0131land\u0131rma kayd\u0131 ve dok\u00fcmantasyon birlikte temizlenir. Permission veya operational flag&#039;ler uzun s\u00fcre ya\u015fayabilir; bunlarda otomatik silme yerine sahiplik, eri\u015fim ve i\u015f gereksinimi periyodik olarak g\u00f6zden ge\u00e7irilir.<\/p>\n<\/details>\n<details class=\"aiw-faq-item\">\n<summary>Feature flag servisi \u00e7\u00f6kerse uygulama ne olur?<\/summary>\n<p>Bu davran\u0131\u015f tasar\u0131ma ba\u011fl\u0131d\u0131r ve \u00f6nceden belirlenmelidir. Flag de\u011ferleri k\u0131sa s\u00fcreli \u00f6nbellekten okunabilir veya her anahtar i\u00e7in g\u00fcvenli bir varsay\u0131lan kullan\u0131labilir. Kritik olmayan yeni bir \u00f6zellik genellikle kapal\u0131 kalacak \u015fekilde tasarlan\u0131r. \u00d6deme ve kimlik do\u011frulama gibi ak\u0131\u015flarda ise otomatik kapatma ya da a\u00e7\u0131k tutma karar\u0131, i\u015f ve g\u00fcvenlik gereksinimleriyle birlikte test edilmelidir.<\/p>\n<\/details>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Feature flag, yeni \u00f6zellikleri kodu yeniden da\u011f\u0131tmadan kontroll\u00fc bi\u00e7imde a\u00e7\u0131p kapatman\u0131z\u0131 sa\u011flar. Kademeli yay\u0131n, test ve geri d\u00f6n\u00fc\u015f plan\u0131n\u0131 do\u011fru kurun.<\/p>\n","protected":false},"author":2,"featured_media":1004,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[873],"tags":[],"class_list":["post-1006","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-teknoloji"],"lang":"tr","translations":{"tr":1006,"en":1007},"pll_sync_post":[],"_links":{"self":[{"href":"https:\/\/www.vps.tc\/blog\/wp-json\/wp\/v2\/posts\/1006","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.vps.tc\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.vps.tc\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.vps.tc\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.vps.tc\/blog\/wp-json\/wp\/v2\/comments?post=1006"}],"version-history":[{"count":1,"href":"https:\/\/www.vps.tc\/blog\/wp-json\/wp\/v2\/posts\/1006\/revisions"}],"predecessor-version":[{"id":1008,"href":"https:\/\/www.vps.tc\/blog\/wp-json\/wp\/v2\/posts\/1006\/revisions\/1008"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.vps.tc\/blog\/wp-json\/wp\/v2\/media\/1004"}],"wp:attachment":[{"href":"https:\/\/www.vps.tc\/blog\/wp-json\/wp\/v2\/media?parent=1006"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.vps.tc\/blog\/wp-json\/wp\/v2\/categories?post=1006"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.vps.tc\/blog\/wp-json\/wp\/v2\/tags?post=1006"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}