{"id":40146,"date":"2026-02-24T20:21:11","date_gmt":"2026-02-24T17:21:11","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/mavi-yesil-dagitim-nedir-ve-neden-uygulamaniz-icin-onemlidir\/"},"modified":"2026-02-24T20:21:11","modified_gmt":"2026-02-24T17:21:11","slug":"mavi-yesil-dagitim-nedir-ve-neden-uygulamaniz-icin-onemlidir","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/mavi-yesil-dagitim-nedir-ve-neden-uygulamaniz-icin-onemlidir\/","title":{"rendered":"Mavi-Ye\u015fil Da\u011f\u0131t\u0131m Nedir ve Neden Uygulaman\u0131z \u0130\u00e7in \u00d6nemlidir?"},"content":{"rendered":"<p><title>DOKS&#8217;ta Gateway API ile Mavi-Ye\u015fil Da\u011f\u0131t\u0131mlar<\/title><br \/>\n<body><\/p>\n<p>Uygulama g\u00fcncellemeleri, her yaz\u0131l\u0131m ekibinin kar\u015f\u0131la\u015ft\u0131\u011f\u0131 ka\u00e7\u0131n\u0131lmaz bir s\u00fcre\u00e7tir. Peki, bu g\u00fcncellemeleri kullan\u0131c\u0131 deneyimini kesintiye u\u011fratmadan, s\u0131f\u0131r aksakl\u0131kla ve minimum riskle nas\u0131l ger\u00e7ekle\u015ftirebilirsiniz? DigitalOcean Kubernetes Servisi (DOKS) ve g\u00fc\u00e7l\u00fc Gateway API entegrasyonu sayesinde, mavi-ye\u015fil da\u011f\u0131t\u0131m stratejisiyle bu zorluklar\u0131n \u00fcstesinden gelmek art\u0131k \u00e7ok daha kolay. Bu rehberde, DOKS \u00fczerinde Gateway API kullanarak kesintisiz da\u011f\u0131t\u0131mlar\u0131n nas\u0131l yap\u0131laca\u011f\u0131n\u0131 ad\u0131m ad\u0131m \u00f6\u011frenecek, riskleri minimuma indirecek ve kullan\u0131c\u0131 deneyimini iyile\u015ftireceksiniz.<\/p>\n<h2>Mavi-Ye\u015fil Da\u011f\u0131t\u0131m Nedir ve Neden Uygulaman\u0131z \u0130\u00e7in \u00d6nemlidir?<\/h2>\n<p>Yaz\u0131l\u0131m d\u00fcnyas\u0131nda, yeni \u00f6zelliklerin devreye al\u0131nmas\u0131 veya hatalar\u0131n d\u00fczeltilmesi s\u00fcrekli bir ihtiya\u00e7t\u0131r. Ancak bu g\u00fcncellemeler genellikle beraberinde kesinti, performans d\u00fc\u015f\u00fc\u015f\u00fc veya beklenmedik hatalar gibi riskleri de getirir. \u0130\u015fte tam da bu noktada mavi-ye\u015fil da\u011f\u0131t\u0131m stratejisi devreye giriyor. Mavi-ye\u015fil da\u011f\u0131t\u0131m, uygulaman\u0131z\u0131n yeni s\u00fcr\u00fcm\u00fcn\u00fc (ye\u015fil ortam) mevcut s\u00fcr\u00fcm\u00fcnden (mavi ortam) tamamen izole bir \u015fekilde haz\u0131rlaman\u0131za olanak tan\u0131yan, y\u00fcksek g\u00fcvenilirli\u011fe sahip bir da\u011f\u0131t\u0131m modelidir. Bu sayede, yeni s\u00fcr\u00fcm tam olarak test edilip do\u011fruland\u0131ktan sonra trafik, mevcut ortamdan yeni ortama kademeli veya anl\u0131k olarak y\u00f6nlendirilir.<\/p>\n<p>Bu stratejinin temelinde, iki \u00f6zde\u015f \u00fcretim ortam\u0131n\u0131n bulunmas\u0131 yatar: birincisi &#8220;mavi&#8221; olarak adland\u0131r\u0131lan mevcut ve aktif ortam, di\u011feri ise &#8220;ye\u015fil&#8221; olarak adland\u0131r\u0131lan yeni s\u00fcr\u00fcm\u00fc bar\u0131nd\u0131ran ve hen\u00fcz trafi\u011fe a\u00e7\u0131lmam\u0131\u015f ortamd\u0131r. Yeni s\u00fcr\u00fcm ye\u015fil ortamda devreye al\u0131n\u0131r, kapsaml\u0131 bir \u015fekilde test edilir ve t\u00fcm fonksiyonlar\u0131n beklendi\u011fi gibi \u00e7al\u0131\u015ft\u0131\u011f\u0131ndan emin olunur. Bu testler s\u0131ras\u0131nda mavi ortam aktif kal\u0131r ve kullan\u0131c\u0131lar herhangi bir kesinti ya\u015famazlar. T\u00fcm testler ba\u015far\u0131l\u0131 oldu\u011funda, a\u011f ge\u00e7idi (Gateway) veya y\u00fck dengeleyici (Load Balancer) yap\u0131land\u0131rmas\u0131 de\u011fi\u015ftirilerek t\u00fcm kullan\u0131c\u0131 trafi\u011fi mavi ortamdan ye\u015fil ortama y\u00f6nlendirilir. Bu ge\u00e7i\u015f genellikle anl\u0131k veya \u00e7ok h\u0131zl\u0131 bir \u015fekilde ger\u00e7ekle\u015fir, bu da kullan\u0131c\u0131lar i\u00e7in neredeyse s\u0131f\u0131r kesinti anlam\u0131na gelir.<\/p>\n<p>Peki, mavi-ye\u015fil da\u011f\u0131t\u0131m neden bu kadar \u00f6nemlidir? Bir e-ticaret sitesi i\u015fletti\u011finizi d\u00fc\u015f\u00fcn\u00fcn. Yo\u011fun sat\u0131\u015f d\u00f6nemlerinde her saniyelik kesinti, binlerce liral\u0131k kay\u0131p anlam\u0131na gelebilir. Geleneksel da\u011f\u0131t\u0131m y\u00f6ntemlerinde, yeni bir s\u00fcr\u00fcm devreye al\u0131n\u0131rken uygulaman\u0131n bir s\u00fcreli\u011fine eri\u015filemez hale gelmesi veya performans sorunlar\u0131 ya\u015fanmas\u0131 olduk\u00e7a olas\u0131d\u0131r. Mavi-ye\u015fil da\u011f\u0131t\u0131m ile yeni s\u00fcr\u00fcm\u00fc tamamen ayr\u0131 bir ortamda haz\u0131rlay\u0131p test edebilir, b\u00f6ylece mevcut canl\u0131 sistemi etkilemeden t\u00fcm kontrolleri yapabilirsiniz. Herhangi bir sorunla kar\u015f\u0131la\u015f\u0131ld\u0131\u011f\u0131nda ise trafi\u011fi an\u0131nda tekrar mavi ortama y\u00f6nlendirerek h\u0131zl\u0131 bir geri alma (rollback) imkan\u0131 elde edersiniz. Bu esneklik, i\u015f s\u00fcreklili\u011fi a\u00e7\u0131s\u0131ndan kritik bir avantaj sa\u011flar ve da\u011f\u0131t\u0131m s\u00fcre\u00e7lerindeki stresi \u00f6nemli \u00f6l\u00e7\u00fcde azalt\u0131r. Ayr\u0131ca, bu yakla\u015f\u0131m sayesinde geli\u015ftirme ekipleri daha s\u0131k ve daha g\u00fcvenli bir \u015fekilde da\u011f\u0131t\u0131m yapabilir, bu da \u00fcr\u00fcn\u00fcn pazara \u00e7\u0131k\u0131\u015f s\u00fcresini (time-to-market) k\u0131salt\u0131r ve inovasyonu te\u015fvik eder. Sonu\u00e7 olarak, mavi-ye\u015fil da\u011f\u0131t\u0131m, hem teknik ekipler hem de son kullan\u0131c\u0131lar i\u00e7in daha g\u00fcvenli, daha h\u0131zl\u0131 ve daha kesintisiz bir deneyim sunar.<\/p>\n<h2>DigitalOcean Kubernetes Servisi (DOKS) ve Gateway API&#8217;a Yak\u0131ndan Bak\u0131\u015f<\/h2>\n<p>Modern bulut tabanl\u0131 uygulamalar i\u00e7in \u00f6l\u00e7eklenebilirlik, esneklik ve y\u00f6netim kolayl\u0131\u011f\u0131 hayati \u00f6neme sahiptir. Bu ba\u011flamda, DigitalOcean Kubernetes Servisi (DOKS) ve Kubernetes&#8217;in yeni nesil a\u011f ge\u00e7idi standard\u0131 olan Gateway API, mavi-ye\u015fil da\u011f\u0131t\u0131m stratejilerini uygulamak i\u00e7in g\u00fc\u00e7l\u00fc bir kombinasyon sunar. Her iki teknoloji de, karma\u015f\u0131k da\u011f\u0131t\u0131m s\u00fcre\u00e7lerini basitle\u015ftirerek geli\u015ftiricilere daha fazla kontrol ve otomasyon imkan\u0131 tan\u0131r.<\/p>\n<h3>DOKS Neden Mavi-Ye\u015fil Da\u011f\u0131t\u0131mlar \u0130\u00e7in \u0130deal Bir Platform?<\/h3>\n<p>DigitalOcean Kubernetes Servisi (DOKS), y\u00f6netilen bir Kubernetes hizmetidir. Bu, Kubernetes k\u00fcmesi altyap\u0131s\u0131n\u0131n DigitalOcean taraf\u0131ndan y\u00f6netildi\u011fi anlam\u0131na gelir, b\u00f6ylece siz uygulaman\u0131za odaklanabilirsiniz. DOKS, mavi-ye\u015fil da\u011f\u0131t\u0131mlar i\u00e7in \u00e7e\u015fitli nedenlerle m\u00fckemmel bir se\u00e7enektir. \u0130lk olarak, DOKS&#8217;un sa\u011flad\u0131\u011f\u0131 kolay \u00f6l\u00e7eklenebilirlik sayesinde, mavi ve ye\u015fil ortamlar i\u00e7in ayr\u0131 kaynaklar\u0131 h\u0131zl\u0131ca sa\u011flayabilir ve gerekti\u011finde \u00f6l\u00e7eklendirebilirsiniz. Yeni bir ye\u015fil ortam kurmak, DOKS&#8217;ta birka\u00e7 komutla veya birka\u00e7 t\u0131klamayla ger\u00e7ekle\u015febilir, bu da da\u011f\u0131t\u0131m haz\u0131rl\u0131k s\u00fcresini \u00f6nemli \u00f6l\u00e7\u00fcde k\u0131salt\u0131r. \u0130kinci olarak, DOKS&#8217;un entegre y\u00fck dengeleyici (Load Balancer) ve depolama (Storage) \u00e7\u00f6z\u00fcmleri, mavi-ye\u015fil mimarinin temel ta\u015flar\u0131n\u0131 olu\u015fturur. Uygulama trafi\u011fini ortamlar aras\u0131nda y\u00f6nlendirmek i\u00e7in DigitalOcean Load Balancer&#8217;lar sorunsuz bir \u015fekilde entegre edilebilirken, kal\u0131c\u0131 depolama ihtiya\u00e7lar\u0131 i\u00e7in DigitalOcean Volumes veya Spaces kullan\u0131labilir. \u00dc\u00e7\u00fcnc\u00fc olarak, DOKS&#8217;un basit ve kullan\u0131c\u0131 dostu aray\u00fcz\u00fc ile g\u00fc\u00e7l\u00fc <code class=\"language-\">doctl<\/code> CLI arac\u0131, k\u00fcme y\u00f6netimini ve otomasyonu kolayla\u015ft\u0131r\u0131r. Bu da CI\/CD (S\u00fcrekli Entegrasyon\/S\u00fcrekli Da\u011f\u0131t\u0131m) s\u00fcre\u00e7lerinizi mavi-ye\u015fil da\u011f\u0131t\u0131mlarla entegre etmeyi basitle\u015ftirir. T\u00fcm bu \u00f6zellikler bir araya geldi\u011finde, DOKS, g\u00fcvenilir, \u00f6l\u00e7eklenebilir ve y\u00f6netimi kolay bir platform sunarak mavi-ye\u015fil da\u011f\u0131t\u0131m stratejilerinin ba\u015far\u0131yla uygulanmas\u0131na zemin haz\u0131rlar. \u00d6zellikle k\u00fc\u00e7\u00fck ve orta \u00f6l\u00e7ekli i\u015fletmeler i\u00e7in maliyet etkinli\u011fi ve kullan\u0131m kolayl\u0131\u011f\u0131 a\u00e7\u0131s\u0131ndan b\u00fcy\u00fck avantajlar sunar.<\/p>\n<h3>Gateway API Nedir ve Geleneksel Ingress&#8217;ten Farklar\u0131 Nelerdir?<\/h3>\n<p>Kubernetes&#8217;te d\u0131\u015far\u0131dan gelen trafi\u011fi servislere y\u00f6nlendirmek i\u00e7in uzun s\u00fcredir Ingress API kullan\u0131l\u0131yordu. Ancak Ingress, \u00f6zellikle karma\u015f\u0131k trafik y\u00f6netimi senaryolar\u0131nda (\u00f6rne\u011fin, a\u011f\u0131rl\u0131kl\u0131 trafik y\u00f6nlendirme, geli\u015fmi\u015f URL e\u015fle\u015ftirme, \u00e7oklu protokol deste\u011fi) baz\u0131 s\u0131n\u0131rlamalara sahipti. \u0130\u015fte bu noktada Gateway API, Kubernetes a\u011f ge\u00e7idi y\u00f6netimi i\u00e7in daha esnek, geni\u015fletilebilir ve rol odakl\u0131 bir standart olarak ortaya \u00e7\u0131kt\u0131. Gateway API, Ingress&#8217;in yerini almay\u0131 hedefleyen yeni nesil bir API&#8217;dir ve \u00f6zellikle mavi-ye\u015fil da\u011f\u0131t\u0131mlar gibi karma\u015f\u0131k stratejiler i\u00e7in ideal \u00e7\u00f6z\u00fcmler sunar.<\/p>\n<p>Gateway API&#8217;nin temel bile\u015fenleri \u015funlard\u0131r:<\/p>\n<ul>\n<li><strong>GatewayClass:<\/strong> Bir Gateway&#8217;in davran\u0131\u015f\u0131n\u0131 tan\u0131mlayan bir \u015fablon. Hangi Gateway kontrolc\u00fcs\u00fcn\u00fcn kullan\u0131laca\u011f\u0131n\u0131 belirtir.<\/li>\n<li><strong>Gateway:<\/strong> K\u00fcmenize d\u0131\u015far\u0131dan gelen trafi\u011fi kabul eden ve y\u00f6nlendiren a\u011f ge\u00e7idini temsil eder. Bir y\u00fck dengeleyiciye veya kenar y\u00f6nlendiriciye (edge router) kar\u015f\u0131l\u0131k gelebilir.<\/li>\n<li><strong>HTTPRoute:<\/strong> HTTP\/HTTPS trafi\u011finin nas\u0131l y\u00f6nlendirilece\u011fini tan\u0131mlar. URL yollar\u0131na, ba\u015fl\u0131klar\u0131na veya sorgu parametrelerine g\u00f6re trafik y\u00f6nlendirme kurallar\u0131 belirlemenizi sa\u011flar. Bu, \u00f6zellikle mavi-ye\u015fil da\u011f\u0131t\u0131mlarda trafi\u011fi farkl\u0131 servis versiyonlar\u0131na y\u00f6nlendirmek i\u00e7in kilit \u00f6neme sahiptir.<\/li>\n<li><strong>TCPRoute\/TLSRoute\/UDPRoute:<\/strong> HTTP d\u0131\u015f\u0131ndaki protokoller i\u00e7in trafik y\u00f6nlendirme kurallar\u0131n\u0131 tan\u0131mlar.<\/li>\n<\/ul>\n<p>Geleneksel Ingress&#8217;ten en \u00f6nemli fark\u0131, Gateway API&#8217;nin rol odakl\u0131 bir yakla\u015f\u0131ma sahip olmas\u0131d\u0131r. Bu, altyap\u0131 operat\u00f6rleri (GatewayClass, Gateway) ve uygulama geli\u015ftiricileri (HTTPRoute) aras\u0131nda sorumluluklar\u0131 ay\u0131r\u0131r. Operat\u00f6rler a\u011f altyap\u0131s\u0131n\u0131 y\u00f6netirken, geli\u015ftiriciler kendi uygulamalar\u0131n\u0131n trafik kurallar\u0131n\u0131 ba\u011f\u0131ms\u0131z olarak tan\u0131mlayabilirler. Bu ayr\u0131m, b\u00fcy\u00fck ve karma\u015f\u0131k organizasyonlarda i\u015f ak\u0131\u015flar\u0131n\u0131 basitle\u015ftirir ve hata olas\u0131l\u0131\u011f\u0131n\u0131 azalt\u0131r. Ayr\u0131ca, Gateway API daha geni\u015fletilebilir bir yap\u0131ya sahiptir, bu da sat\u0131c\u0131lar\u0131n ve toplulu\u011fun \u00f6zel ihtiya\u00e7lara g\u00f6re kendi eklentilerini geli\u015ftirmesine olanak tan\u0131r. Mavi-ye\u015fil da\u011f\u0131t\u0131mlar i\u00e7in Gateway API, trafi\u011fi y\u00fczde baz\u0131nda veya belirli ko\u015fullara g\u00f6re farkl\u0131 arka u\u00e7 servislerine y\u00f6nlendirme yetene\u011fi sayesinde kesintisiz ge\u00e7i\u015fleri ve h\u0131zl\u0131 geri almalar\u0131 \u00e7ok daha zarif bir \u015fekilde y\u00f6netmenizi sa\u011flar.<\/p>\n<h2>DOKS \u00dczerinde Mavi-Ye\u015fil Da\u011f\u0131t\u0131m Senaryosu: Ad\u0131m Ad\u0131m Kurulum<\/h2>\n<p>Art\u0131k mavi-ye\u015fil da\u011f\u0131t\u0131m\u0131n ne oldu\u011funu ve DOKS ile Gateway API&#8217;\u0131n sa\u011flad\u0131\u011f\u0131 avantajlar\u0131 biliyoruz. \u015eimdi bu bilgileri pratik bir senaryo \u00fczerinde uygulayal\u0131m. Bu b\u00f6l\u00fcmde, DOKS \u00fczerinde basit bir web uygulamas\u0131n\u0131 mavi-ye\u015fil stratejisiyle nas\u0131l da\u011f\u0131taca\u011f\u0131m\u0131z\u0131 ad\u0131m ad\u0131m inceleyece\u011fiz. Amac\u0131m\u0131z, uygulaman\u0131n yeni bir s\u00fcr\u00fcm\u00fcn\u00fc canl\u0131ya al\u0131rken kullan\u0131c\u0131lar\u0131n hi\u00e7bir kesinti ya\u015famamas\u0131n\u0131 sa\u011flamak ve gerekti\u011finde kolayca eski s\u00fcr\u00fcme d\u00f6nebilmektir. Bu s\u00fcre\u00e7, Kubernetes YAML dosyalar\u0131 ve <code class=\"language-\">kubectl<\/code> komutlar\u0131 arac\u0131l\u0131\u011f\u0131yla ger\u00e7ekle\u015ftirilecektir.<\/p>\n<h3>DOKS K\u00fcmesi Haz\u0131rl\u0131\u011f\u0131 ve Temel Bile\u015fenlerin Kurulumu<\/h3>\n<p>\u0130lk ad\u0131m, bir DOKS k\u00fcmesi olu\u015fturmak ve Gateway API kontrolc\u00fcs\u00fcn\u00fc kurmakt\u0131r. E\u011fer hen\u00fcz bir DOKS k\u00fcmeniz yoksa, DigitalOcean kontrol panelinden veya <code class=\"language-\">doctl<\/code> CLI arac\u0131l\u0131\u011f\u0131yla kolayca olu\u015fturabilirsiniz. \u00d6rne\u011fin, a\u015fa\u011f\u0131daki <code class=\"language-\">doctl<\/code> komutuyla bir k\u00fcme olu\u015fturulabilir:<\/p>\n<pre><code>\ndoctl kubernetes cluster create my-blue-green-cluster --region nyc1 --version 1.28.2-do.0 --node-pool name=worker-pool,size=s-2vcpu-4gb,count=2\n<\/code><\/pre>\n<p>K\u00fcmeniz haz\u0131r oldu\u011funda, <code class=\"language-\">kubectl<\/code> yap\u0131land\u0131rmas\u0131n\u0131 g\u00fcncellemeyi unutmay\u0131n. Daha sonra, Gateway API&#8217;nin Kubernetes k\u00fcmenizde \u00e7al\u0131\u015fabilmesi i\u00e7in Custom Resource Definitions (CRD&#8217;ler) ve bir Gateway kontrolc\u00fcs\u00fc y\u00fcklemeniz gerekir. Bu \u00f6rnekte, pop\u00fcler bir Gateway API kontrolc\u00fcs\u00fc olan NGINX Gateway API kontrolc\u00fcs\u00fcn\u00fc kullanaca\u011f\u0131m\u0131z\u0131 varsayal\u0131m. Kurulum ad\u0131mlar\u0131 genellikle kontrolc\u00fcn\u00fcn resmi belgelerinde bulunur. Genel olarak, Gateway API CRD&#8217;leri ve ard\u0131ndan kontrolc\u00fcn\u00fcn kendisi y\u00fcklenir:<\/p>\n<pre><code>\n# Gateway API CRD'lerini y\u00fckleyin (genellikle Kubernetes 1.28+ ile gelir, ancak emin olmak i\u00e7in kontrol edilebilir)\nkubectl apply -f https:\/\/github.com\/kubernetes-sigs\/gateway-api\/releases\/download\/v1.0.0\/standard-install.yaml\n\n# NGINX Gateway API kontrolc\u00fcs\u00fcn\u00fc y\u00fckleyin (\u00f6rnek olarak)\n# Bu ad\u0131mlar kontrolc\u00fcn\u00fcn kendi belgelerinden al\u0131nmal\u0131d\u0131r.\n# \u00d6rne\u011fin, bir Helm chart ile kurulum:\nhelm repo add nginx-gateway https:\/\/nginxinc.github.io\/nginx-gateway-fabric\/\nhelm repo update\nhelm install nginx-gateway nginx-gateway\/nginx-gateway-fabric --namespace nginx-gateway --create-namespace\n<\/code><\/pre>\n<p>Kurulum tamamland\u0131ktan sonra, k\u00fcmenizde bir <code class=\"language-\">GatewayClass<\/code> nesnesinin ve <code class=\"language-\">nginx-gateway-fabric<\/code> gibi bir <code class=\"language-\">Gateway<\/code> kontrolc\u00fcs\u00fcn\u00fcn \u00e7al\u0131\u015ft\u0131\u011f\u0131ndan emin olun. A\u015fa\u011f\u0131daki komutlarla kontrol edebilirsiniz:<\/p>\n<pre><code>\nkubectl get gatewayclass\nkubectl get pods -n nginx-gateway\n<\/code><\/pre>\n<p>Bu temel kurulumlar tamamland\u0131\u011f\u0131nda, art\u0131k mavi ve ye\u015fil ortamlar\u0131m\u0131z\u0131 da\u011f\u0131tmaya ve trafik y\u00f6netimini Gateway API ile yap\u0131land\u0131rmaya haz\u0131r\u0131z. Unutmay\u0131n ki Gateway API&#8217;nin farkl\u0131 uygulamalar\u0131 (\u00f6rne\u011fin, Istio, GKE Gateway) farkl\u0131 kurulum ad\u0131mlar\u0131na sahip olabilir, bu nedenle kulland\u0131\u011f\u0131n\u0131z kontrolc\u00fcn\u00fcn belgelerini dikkatlice incelemeniz \u00f6nemlidir. DOKS \u00fczerinde bu kontrolc\u00fclerin sorunsuz \u00e7al\u0131\u015fmas\u0131, platformun esnekli\u011fini ve uyumlulu\u011funu g\u00f6stermektedir. Bu haz\u0131rl\u0131k s\u00fcreci, mavi-ye\u015fil da\u011f\u0131t\u0131m\u0131n sorunsuz bir \u015fekilde ilerlemesi i\u00e7in sa\u011flam bir zemin olu\u015fturur ve gelecekteki da\u011f\u0131t\u0131mlar\u0131n daha h\u0131zl\u0131 ve g\u00fcvenilir olmas\u0131n\u0131 sa\u011flar.<\/p>\n<h2>Uygulama Da\u011f\u0131t\u0131m\u0131 ve Trafik Y\u00f6netimi: Mavi ve Ye\u015fil Ortamlar\u0131 Olu\u015fturma<\/h2>\n<p>K\u00fcmemizi ve Gateway API kontrolc\u00fcm\u00fcz\u00fc haz\u0131rlad\u0131\u011f\u0131m\u0131za g\u00f6re, \u015fimdi s\u0131ra uygulamam\u0131z\u0131 da\u011f\u0131tmaya geldi. Mavi-ye\u015fil da\u011f\u0131t\u0131m stratejisine uygun olarak, uygulamam\u0131z\u0131n mevcut &#8220;mavi&#8221; s\u00fcr\u00fcm\u00fcn\u00fc ve yeni &#8220;ye\u015fil&#8221; s\u00fcr\u00fcm\u00fcn\u00fc ayr\u0131 ayr\u0131 y\u00f6netece\u011fiz. Bu yakla\u015f\u0131m, her iki ortam\u0131n da ba\u011f\u0131ms\u0131z olarak \u00e7al\u0131\u015fmas\u0131n\u0131 ve trafi\u011fin kontroll\u00fc bir \u015fekilde y\u00f6nlendirilmesini sa\u011flar. Bu b\u00f6l\u00fcmde, \u00f6rnek bir web uygulamas\u0131n\u0131 hem mavi hem de ye\u015fil ortamlar i\u00e7in nas\u0131l da\u011f\u0131taca\u011f\u0131m\u0131z\u0131 ve Gateway API kullanarak ilk trafik kurallar\u0131n\u0131 nas\u0131l belirleyece\u011fimizi detayland\u0131raca\u011f\u0131z.<\/p>\n<h3>Mavi (Mevcut) Uygulaman\u0131n Da\u011f\u0131t\u0131m\u0131<\/h3>\n<p>\u0130lk olarak, uygulamam\u0131z\u0131n mevcut s\u00fcr\u00fcm\u00fcn\u00fc temsil eden &#8220;mavi&#8221; ortam\u0131 da\u011f\u0131taca\u011f\u0131z. Bu, bir Kubernetes Deployment ve bir Service nesnesi ile yap\u0131lacakt\u0131r. Uygulamam\u0131z basit bir NGINX web sunucusu olsun ve versiyonunu belirten bir HTML sayfas\u0131 sunsun.<\/p>\n<p><strong>1. Mavi Uygulama Deployment ve Service Tan\u0131mlamas\u0131 (<code>blue-app.yaml<\/code>):<\/strong><\/p>\n<pre><code>\napiVersion apps\/v1\nkind Deployment\nmetadata:\n  name: blue-app\n  labels:\n    app: my-app\n    version: blue\nspec:\n  replicas: 3\n  selector:\n    matchLabels:\n      app: my-app\n      version: blue\n  template:\n    metadata:\n      labels:\n        app: my-app\n        version: blue\n    spec:\n      containers:\n      - name: my-app\n        image: nginx:1.21.6 # Mavi s\u00fcr\u00fcm i\u00e7in bir NGINX imaj\u0131\n        ports:\n        - containerPort: 80\n        volumeMounts:\n        - name: html\n          mountPath: \/usr\/share\/nginx\/html\n      volumes:\n      - name: html\n        configMap:\n          name: blue-index-html\n\n---\napiVersion v1\nkind Service\nmetadata:\n  name: blue-service\nspec:\n  selector:\n    app: my-app\n    version: blue\n  ports:\n    - protocol: TCP\n      port: 80\n      targetPort: 80\n  type: ClusterIP\n<\/code><\/pre>\n<p>Uygulaman\u0131n i\u00e7eri\u011fini sa\u011flamak i\u00e7in bir ConfigMap kullanaca\u011f\u0131z:<\/p>\n<p><strong>2. Mavi Uygulama ConfigMap Tan\u0131mlamas\u0131 (<code>blue-index-html.yaml<\/code>):<\/strong><\/p>\n<pre><code>\napiVersion v1\nkind ConfigMap\nmetadata:\n  name: blue-index-html\ndata:\n  index.html: |\n    &lt;!DOCTYPE html&gt;\n    &lt;html&gt;\n    &lt;head&gt;\n        &lt;title&gt;Mavi Uygulama&lt;\/title&gt;\n        &lt;style&gt;\n            body { font-family: Arial, sans-serif; background-color: #e0f2f7; color: #2196f3; text-align: center; padding-top: 50px; }\n            h1 { font-size: 3em; }\n            p { font-size: 1.5em; }\n        &lt;\/style&gt;\n    &lt;\/head&gt;\n    &lt;body&gt;\n        &lt;h1&gt;Merhaba, ben Mavi Uygulama!&lt;\/h1&gt;\n        &lt;p&gt;Versiyon: 1.0&lt;\/p&gt;\n    &lt;\/body&gt;\n    &lt;\/html&gt;\n<\/code><\/pre>\n<p>Bu dosyalar\u0131 uygulay\u0131n:<\/p>\n<pre><code>\nkubectl apply -f blue-index-html.yaml\nkubectl apply -f blue-app.yaml\n<\/code><\/pre>\n<p>\u015eimdi, d\u0131\u015far\u0131dan gelen trafi\u011fi bu mavi uygulamaya y\u00f6nlendirecek bir Gateway ve HTTPRoute tan\u0131mlayaca\u011f\u0131z. DigitalOcean \u00fczerinde bir Load Balancer sa\u011flamak i\u00e7in bir <code class=\"language-\">Gateway<\/code> nesnesi kullanabiliriz.<\/p>\n<p><strong>3. Gateway ve HTTPRoute Tan\u0131mlamas\u0131 (<code>gateway-config.yaml<\/code>):<\/strong><\/p>\n<pre><code>\napiVersion gateway.networking.k8s.io\/v1\nkind Gateway\nmetadata:\n  name: my-app-gateway\nspec:\n  gatewayClassName: nginx # Kulland\u0131\u011f\u0131n\u0131z kontrolc\u00fcye g\u00f6re de\u011fi\u015febilir (\u00f6rn: do-loadbalancer, istio)\n  listeners:\n  - name: http\n    protocol: HTTP\n    port: 80\n    allowedRoutes:\n      namespaces:\n        from: All # T\u00fcm namespace'lerden route kabul et\n---\napiVersion gateway.networking.k8s.io\/v1\nkind HTTPRoute\nmetadata:\n  name: my-app-route\nspec:\n  parentRefs:\n  - name: my-app-gateway\n  hostnames:\n  - \"myapp.example.com\" # Kendi alan ad\u0131n\u0131z\u0131 kullan\u0131n\n  rules:\n  - matches:\n    - path:\n        type: PathPrefix\n        value: \/\n    backendRefs:\n    - name: blue-service\n      port: 80\n<\/code><\/pre>\n<p>Bu dosyay\u0131 uygulay\u0131n:<\/p>\n<pre><code>\nkubectl apply -f gateway-config.yaml\n<\/code><\/pre>\n<p>Birka\u00e7 dakika sonra, <code class=\"language-\">kubectl get gateway my-app-gateway<\/code> komutu ile Gateway&#8217;inizin bir d\u0131\u015f IP adresi veya hostname ald\u0131\u011f\u0131n\u0131 g\u00f6receksiniz. Alan ad\u0131n\u0131z\u0131 bu adrese y\u00f6nlendirdikten sonra, taray\u0131c\u0131n\u0131zdan <code class=\"language-\">myapp.example.com<\/code> adresine eri\u015fti\u011finizde &#8220;Mavi Uygulama&#8221; i\u00e7eri\u011fini g\u00f6rmelisiniz.<\/p>\n<h3>Ye\u015fil (Yeni) Uygulaman\u0131n Da\u011f\u0131t\u0131m\u0131 ve Test Edilmesi<\/h3>\n<p>Mavi ortam\u0131m\u0131z ba\u015far\u0131yla \u00e7al\u0131\u015ft\u0131\u011f\u0131na g\u00f6re, \u015fimdi uygulamam\u0131z\u0131n yeni s\u00fcr\u00fcm\u00fcn\u00fc temsil eden &#8220;ye\u015fil&#8221; ortam\u0131 da\u011f\u0131tabiliriz. Bu ortam, mavi ortamdan tamamen ba\u011f\u0131ms\u0131z olacak ve canl\u0131 trafi\u011fe a\u00e7\u0131lmadan \u00f6nce kapsaml\u0131 bir \u015fekilde test edilecektir.<\/p>\n<p><strong>1. Ye\u015fil Uygulama Deployment ve Service Tan\u0131mlamas\u0131 (<code>green-app.yaml<\/code>):<\/strong><\/p>\n<pre><code>\napiVersion apps\/v1\nkind Deployment\nmetadata:\n  name: green-app\n  labels:\n    app: my-app\n    version: green\nspec:\n  replicas: 3\n  selector:\n    matchLabels:\n      app: my-app\n      version: green\n  template:\n    metadata:\n      labels:\n        app: my-app\n        version: green\n    spec:\n      containers:\n      - name: my-app\n        image: nginx:1.23.4 # Ye\u015fil s\u00fcr\u00fcm i\u00e7in yeni bir NGINX imaj\u0131\n        ports:\n        - containerPort: 80\n        volumeMounts:\n        - name: html\n          mountPath: \/usr\/share\/nginx\/html\n      volumes:\n      - name: html\n        configMap:\n          name: green-index-html\n\n---\napiVersion v1\nkind Service\nmetadata:\n  name: green-service\nspec:\n  selector:\n    app: my-app\n    version: green\n  ports:\n    - protocol: TCP\n      port: 80\n      targetPort: 80\n  type: ClusterIP\n<\/code><\/pre>\n<p>Ve elbette, ye\u015fil uygulama i\u00e7in yeni bir ConfigMap:<\/p>\n<p><strong>2. Ye\u015fil Uygulama ConfigMap Tan\u0131mlamas\u0131 (<code>green-index-html.yaml<\/code>):<\/strong><\/p>\n<pre><code>\napiVersion v1\nkind ConfigMap\nmetadata:\n  name: green-index-html\ndata:\n  index.html: |\n    &lt;!DOCTYPE html&gt;\n    &lt;html&gt;\n    &lt;head&gt;\n        &lt;title&gt;Ye\u015fil Uygulama&lt;\/title&gt;\n        &lt;style&gt;\n            body { font-family: Arial, sans-serif; background-color: #e8f5e9; color: #4caf50; text-align: center; padding-top: 50px; }\n            h1 { font-size: 3em; }\n            p { font-size: 1.5em; }\n        &lt;\/style&gt;\n    &lt;\/head&gt;\n    &lt;body&gt;\n        &lt;h1&gt;Merhaba, ben Ye\u015fil Uygulama!&lt;\/h1&gt;\n        &lt;p&gt;Versiyon: 2.0&lt;\/p&gt;\n    &lt;\/body&gt;\n    &lt;\/html&gt;\n<\/code><\/pre>\n<p>Bu dosyalar\u0131 uygulay\u0131n:<\/p>\n<pre><code>\nkubectl apply -f green-index-html.yaml\nkubectl apply -f green-app.yaml\n<\/code><\/pre>\n<p>Ye\u015fil uygulama da\u011f\u0131t\u0131ld\u0131ktan sonra, hen\u00fcz ana <code class=\"language-\">HTTPRoute<\/code> \u00fczerinde tan\u0131ml\u0131 olmad\u0131\u011f\u0131 i\u00e7in d\u0131\u015far\u0131dan eri\u015filemez durumda olacakt\u0131r. Bu, yeni s\u00fcr\u00fcm\u00fc canl\u0131 trafi\u011fe a\u00e7madan \u00f6nce dahili olarak test etmek i\u00e7in ideal bir durumdur. Test i\u00e7in, ge\u00e7ici bir HTTPRoute olu\u015fturabilir veya k\u00fcme i\u00e7inden do\u011frudan <code class=\"language-\">green-service<\/code>&#8216;e eri\u015febilirsiniz. \u00d6rne\u011fin, Gateway API kontrolc\u00fcn\u00fcz\u00fcn destekledi\u011fi bir mekanizma ile belirli bir ba\u015fl\u0131k (header) \u00fczerinden ye\u015fil ortama eri\u015fim sa\u011flayabilirsiniz. Ancak bu senaryoda, do\u011frudan trafi\u011fi y\u00f6nlendirmeden \u00f6nce ye\u015fil ortam\u0131n haz\u0131r oldu\u011funu varsay\u0131yoruz.<\/p>\n<p>Bu ad\u0131mlarla, uygulamam\u0131z\u0131n her iki s\u00fcr\u00fcm\u00fc de DOKS k\u00fcmemizde \u00e7al\u0131\u015f\u0131r durumda ve Gateway API ile trafik y\u00f6nlendirme i\u00e7in haz\u0131r hale getirilmi\u015ftir. \u015eimdi, trafi\u011fi mavi ortamdan ye\u015fil ortama nas\u0131l ge\u00e7irece\u011fimizi ve gerekti\u011finde nas\u0131l geri d\u00f6nece\u011fimizi inceleyece\u011fiz.<\/p>\n<h2>Kesintisiz Ge\u00e7i\u015f ve Geri Alma Stratejileri<\/h2>\n<p>Mavi ve ye\u015fil ortamlar\u0131m\u0131z haz\u0131r oldu\u011funa g\u00f6re, \u015fimdi en kritik ad\u0131ma geliyoruz: trafi\u011fi mavi ortamdan ye\u015fil ortama kesintisiz bir \u015fekilde y\u00f6nlendirmek ve olas\u0131 sorunlarda h\u0131zl\u0131ca geri d\u00f6nebilmek. Gateway API, bu ge\u00e7i\u015fleri olduk\u00e7a esnek ve kontroll\u00fc bir \u015fekilde y\u00f6netmemizi sa\u011flayan g\u00fc\u00e7l\u00fc yeteneklere sahiptir. \u00d6zellikle a\u011f\u0131rl\u0131kl\u0131 trafik y\u00f6nlendirme (weighted traffic splitting) \u00f6zelli\u011fi, riskleri minimize ederek kademeli ge\u00e7i\u015fler yapmam\u0131za imkan tan\u0131r.<\/p>\n<h3>Trafi\u011fi Mavi&#8217;den Ye\u015fil&#8217;e Y\u00f6nlendirme (A\u011f\u0131rl\u0131kl\u0131 Y\u00f6nlendirme)<\/h3>\n<p>Mavi-ye\u015fil da\u011f\u0131t\u0131m\u0131n temel faydalar\u0131ndan biri, trafi\u011fi yeni ortama kademeli olarak y\u00f6nlendirme yetene\u011fidir. Bu, &#8220;canary&#8221; da\u011f\u0131t\u0131mlar\u0131na benzer bir yakla\u015f\u0131m sunar ancak genellikle daha b\u00fcy\u00fck gruplar halinde ilerler. Gateway API&#8217;deki <code class=\"language-\">HTTPRoute<\/code> nesnesini g\u00fcncelleyerek, trafi\u011fin belirli bir y\u00fczdesini mavi servise, kalan\u0131n\u0131 ise ye\u015fil servise y\u00f6nlendirebiliriz. Bu sayede, yeni s\u00fcr\u00fcm\u00fcn performans\u0131n\u0131 ve kararl\u0131l\u0131\u011f\u0131n\u0131 k\u00fc\u00e7\u00fck bir kullan\u0131c\u0131 grubu \u00fczerinde g\u00f6zlemleyebilir, herhangi bir sorun ya\u015fanmad\u0131\u011f\u0131ndan emin olduktan sonra trafi\u011fin tamam\u0131n\u0131 yeni ortama aktarabiliriz.<\/p>\n<p>A\u015fa\u011f\u0131daki <code class=\"language-\">HTTPRoute<\/code> yap\u0131land\u0131rmas\u0131, trafi\u011fin %90&#8217;\u0131n\u0131 mavi servise, %10&#8217;unu ise ye\u015fil servise y\u00f6nlendirecektir:<\/p>\n<p><strong>1. Kademeli Ge\u00e7i\u015f i\u00e7in HTTPRoute G\u00fcncellemesi (<code>httproute-weighted.yaml<\/code>):<\/strong><\/p>\n<pre><code>\napiVersion gateway.networking.k8s.io\/v1\nkind HTTPRoute\nmetadata:\n  name: my-app-route\nspec:\n  parentRefs:\n  - name: my-app-gateway\n  hostnames:\n  - \"myapp.example.com\"\n  rules:\n  - matches:\n    - path:\n        type: PathPrefix\n        value: \/\n    backendRefs:\n    - name: blue-service\n      port: 80\n      weight: 90 # %90 trafik mavi servise\n    - name: green-service\n      port: 80\n      weight: 10 # %10 trafik ye\u015fil servise\n<\/code><\/pre>\n<p>Bu dosyay\u0131 uygulayarak <code class=\"language-\">HTTPRoute<\/code>&#8216;u g\u00fcncelleyin:<\/p>\n<pre><code>\nkubectl apply -f httproute-weighted.yaml\n<\/code><\/pre>\n<p>Bu ad\u0131mdan sonra, <code class=\"language-\">myapp.example.com<\/code> adresine gelen isteklerin %10&#8217;u yeni ye\u015fil uygulamaya y\u00f6nlendirilecektir. Bu a\u015famada, izleme ve log sistemleriniz \u00fczerinden ye\u015fil uygulaman\u0131n davran\u0131\u015f\u0131n\u0131 dikkatlice g\u00f6zlemlemelisiniz. Hata oranlar\u0131, gecikme s\u00fcreleri ve genel performans metrikleri kritik \u00f6neme sahiptir. Her \u015fey yolunda giderse, trafi\u011fi kademeli olarak art\u0131rabilirsiniz:<\/p>\n<ul>\n<li>%50 mavi, %50 ye\u015fil<\/li>\n<li>%10 mavi, %90 ye\u015fil<\/li>\n<li>%0 mavi, %100 ye\u015fil (tam ge\u00e7i\u015f)<\/li>\n<\/ul>\n<p>Trafi\u011fin tamam\u0131n\u0131 ye\u015fil servise y\u00f6nlendirmek i\u00e7in <code class=\"language-\">HTTPRoute<\/code>&#8216;u a\u015fa\u011f\u0131daki gibi g\u00fcncelleyebilirsiniz:<\/p>\n<pre><code>\napiVersion gateway.networking.k8s.io\/v1\nkind HTTPRoute\nmetadata:\n  name: my-app-route\nspec:\n  parentRefs:\n  - name: my-app-gateway\n  hostnames:\n  - \"myapp.example.com\"\n  rules:\n  - matches:\n    - path:\n        type: PathPrefix\n        value: \/\n    backendRefs:\n    - name: green-service\n      port: 80\n      weight: 100 # T\u00fcm trafik ye\u015fil servise\n<\/code><\/pre>\n<pre><code>\nkubectl apply -f httproute-weighted.yaml\n<\/code><\/pre>\n<p>Bu son g\u00fcncelleme ile t\u00fcm trafik ye\u015fil ortama y\u00f6nlendirilmi\u015f olur ve mavi-ye\u015fil da\u011f\u0131t\u0131m ba\u015far\u0131yla tamamlanm\u0131\u015f olur. Bu noktada, eski mavi ortamdaki Deployment ve Service nesnelerini silebilirsiniz (ancak h\u0131zl\u0131 geri alma ihtiyac\u0131na kar\u015f\u0131 bir s\u00fcre daha tutmak iyi bir pratik olabilir).<\/p>\n<h3>Olas\u0131 Sorunlarda H\u0131zl\u0131 Geri Alma<\/h3>\n<p>Mavi-ye\u015fil da\u011f\u0131t\u0131m\u0131n en b\u00fcy\u00fck avantajlar\u0131ndan biri, bir sorun an\u0131nda an\u0131nda geri alma (rollback) yetene\u011fidir. Ye\u015fil ortama trafik y\u00f6nlendirdikten sonra kritik bir hata veya performans d\u00fc\u015f\u00fc\u015f\u00fc fark ederseniz, trafi\u011fi an\u0131nda tekrar mavi ortama y\u00f6nlendirebilirsiniz. Bu, kullan\u0131c\u0131lar\u0131n\u0131z\u0131n etkilenme s\u00fcresini minimuma indirir ve i\u015f s\u00fcreklili\u011fini sa\u011flar.<\/p>\n<p>Geri alma i\u015flemi, <code class=\"language-\">HTTPRoute<\/code> yap\u0131land\u0131rmas\u0131n\u0131 eski haline, yani t\u00fcm trafi\u011fi mavi servise y\u00f6nlendiren duruma getirmek kadar basittir:<\/p>\n<p><strong>1. Geri Alma i\u00e7in HTTPRoute G\u00fcncellemesi (<code>httproute-rollback.yaml<\/code>):<\/strong><\/p>\n<pre><code>\napiVersion gateway.networking.k8s.io\/v1\nkind HTTPRoute\nmetadata:\n  name: my-app-route\nspec:\n  parentRefs:\n  - name: my-app-gateway\n  hostnames:\n  - \"myapp.example.com\"\n  rules:\n  - matches:\n    - path:\n        type: PathPrefix\n        value: \/\n    backendRefs:\n    - name: blue-service\n      port: 80\n      weight: 100 # T\u00fcm trafik tekrar mavi servise\n<\/code><\/pre>\n<p>Bu dosyay\u0131 uygulayarak an\u0131nda geri alma yap\u0131n:<\/p>\n<pre><code>\nkubectl apply -f httproute-rollback.yaml\n<\/code><\/pre>\n<p>Bu komutla birlikte, t\u00fcm kullan\u0131c\u0131 trafi\u011fi an\u0131nda tekrar mavi ortama y\u00f6nlendirilir ve ye\u015fil ortamdaki sorunlu s\u00fcr\u00fcmden izole edilmi\u015f olursunuz. Bu sayede, sorunu sakin bir \u015fekilde analiz edip d\u00fczeltebilir ve daha sonra yeni bir ye\u015fil ortam da\u011f\u0131t\u0131m\u0131n\u0131 planlayabilirsiniz. Bu h\u0131zl\u0131 geri alma yetene\u011fi, da\u011f\u0131t\u0131m s\u00fcre\u00e7lerindeki riski dramatik bir \u015fekilde azalt\u0131r ve ekiplerin daha cesurca yenilikler yapmas\u0131na olanak tan\u0131r. Mavi-ye\u015fil da\u011f\u0131t\u0131m, bu \u00f6zelli\u011fiyle modern DevOps pratiklerinin vazge\u00e7ilmez bir par\u00e7as\u0131 haline gelmi\u015ftir.<\/p>\n<h2>\u0130leri D\u00fczey \u0130pu\u00e7lar\u0131 ve En \u0130yi Uygulamalar<\/h2>\n<p>Mavi-ye\u015fil da\u011f\u0131t\u0131m stratejisini DOKS ve Gateway API ile uygulamak, kesintisiz g\u00fcncellemeler ve h\u0131zl\u0131 geri alma yetenekleri sunar. Ancak bu stratejinin t\u00fcm potansiyelini kullanmak ve \u00fcretim ortamlar\u0131nda sorunsuz \u00e7al\u0131\u015fmas\u0131n\u0131 sa\u011flamak i\u00e7in baz\u0131 ileri d\u00fczey ipu\u00e7lar\u0131 ve en iyi uygulamalar\u0131 g\u00f6z \u00f6n\u00fcnde bulundurmak faydal\u0131 olacakt\u0131r. Bu yakla\u015f\u0131mlar, da\u011f\u0131t\u0131m s\u00fcre\u00e7lerinizi daha da otomatikle\u015ftirecek, izlenebilirli\u011fi art\u0131racak ve genel sistem kararl\u0131l\u0131\u011f\u0131n\u0131 iyile\u015ftirecektir.<\/p>\n<h3>Otomasyon ve CI\/CD Entegrasyonu<\/h3>\n<p>Manuel da\u011f\u0131t\u0131mlar hataya a\u00e7\u0131k ve zaman al\u0131c\u0131d\u0131r. Mavi-ye\u015fil da\u011f\u0131t\u0131m s\u00fcre\u00e7lerini otomatikle\u015ftirmek i\u00e7in CI\/CD (S\u00fcrekli Entegrasyon\/S\u00fcrekli Da\u011f\u0131t\u0131m) boru hatlar\u0131 kullanmak hayati \u00f6neme sahiptir. GitHub Actions, GitLab CI\/CD, Jenkins veya DigitalOcean App Platform gibi ara\u00e7lar, kod de\u011fi\u015fiklikleri alg\u0131land\u0131\u011f\u0131nda otomatik olarak yeni bir ye\u015fil ortam olu\u015fturabilir, testleri \u00e7al\u0131\u015ft\u0131rabilir ve Gateway API&#8217;yi g\u00fcncelleyerek trafi\u011fi a\u015famal\u0131 olarak y\u00f6nlendirebilir. Otomasyon, insan hatas\u0131n\u0131 azalt\u0131r, da\u011f\u0131t\u0131m h\u0131z\u0131n\u0131 art\u0131r\u0131r ve ekiplerin daha s\u0131k da\u011f\u0131t\u0131m yapmas\u0131na olanak tan\u0131r. Bir CI\/CD boru hatt\u0131, a\u015fa\u011f\u0131daki ad\u0131mlar\u0131 i\u00e7erebilir:<\/p>\n<ol>\n<li>Kod de\u011fi\u015fikliklerini alg\u0131lama.<\/li>\n<li>Yeni bir uygulama imaj\u0131 olu\u015fturma (Docker imaj\u0131).<\/li>\n<li>Yeni imaj\u0131 bir kapsay\u0131c\u0131 kay\u0131t defterine (\u00f6rne\u011fin, DigitalOcean Container Registry) g\u00f6nderme.<\/li>\n<li>DOKS k\u00fcmesinde ye\u015fil ortam\u0131n Deployment ve Service nesnelerini g\u00fcncelleme veya olu\u015fturma.<\/li>\n<li>Otomatik entegrasyon ve kabul testlerini ye\u015fil ortamda \u00e7al\u0131\u015ft\u0131rma.<\/li>\n<li>Testler ba\u015far\u0131l\u0131 olursa, Gateway API&#8217;deki HTTPRoute nesnesini g\u00fcncelleyerek trafi\u011fi kademeli olarak ye\u015fil ortama y\u00f6nlendirme.<\/li>\n<li>T\u00fcm trafik y\u00f6nlendirildikten sonra eski mavi ortam kaynaklar\u0131n\u0131 temizleme (iste\u011fe ba\u011fl\u0131).<\/li>\n<\/ol>\n<h3>Kapsaml\u0131 G\u00f6zlemlenebilirlik (Monitoring ve Logging)<\/h3>\n<p>Mavi-ye\u015fil da\u011f\u0131t\u0131m s\u0131ras\u0131nda ve sonras\u0131nda uygulaman\u0131z\u0131n sa\u011fl\u0131\u011f\u0131n\u0131 ve performans\u0131n\u0131 izlemek kritik \u00f6neme sahiptir. Prometheus ve Grafana gibi ara\u00e7larla metrikleri toplamak ve g\u00f6rselle\u015ftirmek, yeni s\u00fcr\u00fcm\u00fcn olas\u0131 performans sorunlar\u0131n\u0131 veya hatalar\u0131n\u0131 h\u0131zla tespit etmenizi sa\u011flar. Log toplama i\u00e7in ELK Stack (Elasticsearch, Logstash, Kibana) veya Loki gibi \u00e7\u00f6z\u00fcmler kullanarak uygulama loglar\u0131n\u0131 merkezi bir yerde toplayabilir ve analiz edebilirsiniz. Da\u011f\u0131t\u0131m sonras\u0131, ye\u015fil ortamdaki hata oranlar\u0131, yan\u0131t s\u00fcreleri, CPU\/bellek kullan\u0131m\u0131 gibi metrikleri dikkatle izlemek, trafi\u011fi tam olarak y\u00f6nlendirmeden \u00f6nce g\u00fcvende olman\u0131z\u0131 sa\u011flar. DigitalOcean&#8217;\u0131n entegre izleme ara\u00e7lar\u0131 da bu s\u00fcre\u00e7te size yard\u0131mc\u0131 olabilir.<\/p>\n<h3>Sa\u011fl\u0131k Kontrolleri (Liveness ve Readiness Probes)<\/h3>\n<p>Kubernetes Deployment&#8217;lar\u0131n\u0131zda liveness (canl\u0131l\u0131k) ve readiness (haz\u0131rl\u0131k) kontrollerini do\u011fru bir \u015fekilde yap\u0131land\u0131rmak, uygulaman\u0131z\u0131n kararl\u0131l\u0131\u011f\u0131n\u0131 art\u0131r\u0131r. Liveness probu, kapsay\u0131c\u0131n\u0131n hala \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 ve i\u015flevsel oldu\u011funu do\u011frular. Ba\u015far\u0131s\u0131z olursa, Kubernetes kapsay\u0131c\u0131y\u0131 yeniden ba\u015flat\u0131r. Readiness probu ise, kapsay\u0131c\u0131n\u0131n gelen trafi\u011fi kabul etmeye haz\u0131r olup olmad\u0131\u011f\u0131n\u0131 kontrol eder. Bu, \u00f6zellikle yeni bir uygulama s\u00fcr\u00fcm\u00fcn\u00fcn ba\u015flat\u0131lmas\u0131 s\u0131ras\u0131nda \u00f6nemlidir; uygulama tamamen haz\u0131r olana kadar trafi\u011fin ona y\u00f6nlendirilmemesini sa\u011flar. Bu proplar, Gateway API&#8217;nin trafi\u011fi y\u00f6nlendirme kararlar\u0131n\u0131 destekleyerek yaln\u0131zca sa\u011fl\u0131kl\u0131 pod&#8217;lara trafik gitmesini sa\u011flar.<\/p>\n<h3>Helm Kullan\u0131m\u0131 ile Da\u011f\u0131t\u0131m \u015eablonlar\u0131<\/h3>\n<p>Uygulaman\u0131z\u0131n Kubernetes manifestlerini y\u00f6netmek karma\u015f\u0131k hale gelebilir. Helm, Kubernetes uygulamalar\u0131 i\u00e7in bir paket y\u00f6neticisidir. Uygulamalar\u0131n\u0131z\u0131 Helm Chart&#8217;lar arac\u0131l\u0131\u011f\u0131yla \u015fablonla\u015ft\u0131rarak, mavi ve ye\u015fil ortamlar i\u00e7in Deployment, Service ve HTTPRoute gibi nesneleri kolayca parametrelendirebilir ve y\u00f6netebilirsiniz. \u00d6rne\u011fin, bir Helm Chart i\u00e7inde <code class=\"language-\">imageTag<\/code> veya <code class=\"language-\">version<\/code> gibi de\u011ferleri de\u011fi\u015ftirerek hem mavi hem de ye\u015fil ortamlar\u0131 ayn\u0131 \u015fablondan t\u00fcretebilirsiniz. Bu, yap\u0131land\u0131rma tutarl\u0131l\u0131\u011f\u0131n\u0131 sa\u011flar ve manuel hatalar\u0131 azalt\u0131r.<\/p>\n<h3>G\u00fcvenlik Hususlar\u0131<\/h3>\n<p>Mavi-ye\u015fil da\u011f\u0131t\u0131mlar\u0131n\u0131zda g\u00fcvenlikten \u00f6d\u00fcn vermeyin. Gateway API \u00fczerinden TLS\/SSL sonland\u0131rmay\u0131 (HTTPS) yap\u0131land\u0131rmak, kullan\u0131c\u0131 trafi\u011finin \u015fifrelenmesini sa\u011flar. DigitalOcean&#8217;\u0131n \u00fccretsiz SSL sertifikalar\u0131 veya Let&#8217;s Encrypt ile kolayca entegrasyon sa\u011flayabilirsiniz. Ayr\u0131ca, a\u011f politikalar\u0131 (Network Policies) kullanarak farkl\u0131 ortamlar aras\u0131ndaki veya i\u00e7indeki pod&#8217;lar aras\u0131 ileti\u015fimi k\u0131s\u0131tlayabilirsiniz. \u00d6rne\u011fin, ye\u015fil ortam sadece belirli test ara\u00e7lar\u0131ndan eri\u015filebilirken, mavi ortam t\u00fcm d\u0131\u015f trafi\u011fe a\u00e7\u0131k olabilir. Yetkilendirme ve kimlik do\u011frulama mekanizmalar\u0131n\u0131 da uygulaman\u0131z\u0131n her iki s\u00fcr\u00fcm\u00fcnde de do\u011fru \u015fekilde yap\u0131land\u0131rd\u0131\u011f\u0131n\u0131zdan emin olun.<\/p>\n<h3>Mobil Uyumluluk D\u00fc\u015f\u00fcnceleri<\/h3>\n<p>Mobil uyumluluk, da\u011f\u0131t\u0131m stratejinizle do\u011frudan ilgili olmasa da, modern bir uygulaman\u0131n olmazsa olmaz\u0131d\u0131r. Da\u011f\u0131tt\u0131\u011f\u0131n\u0131z web uygulamas\u0131n\u0131n kullan\u0131c\u0131 aray\u00fcz\u00fcn\u00fcn (frontend) farkl\u0131 ekran boyutlar\u0131na ve cihazlara uyumlu oldu\u011fundan emin olun. Bu genellikle responsive tasar\u0131m teknikleri ve CSS media query&#8217;leri kullan\u0131larak sa\u011flan\u0131r. \u00d6rne\u011fin, uygulaman\u0131z\u0131n CSS kodunda a\u015fa\u011f\u0131daki gibi bir yap\u0131land\u0131rma bulunabilir:<\/p>\n<pre><code>\n\/* Genel stil *\/\nbody {\n  font-size: 16px;\n}\n\n\/* K\u00fc\u00e7\u00fck ekranlar i\u00e7in (mobil cihazlar) *\/\n@media screen and (max-width: 768px) {\n  body {\n    font-size: 14px;\n  }\n  .container {\n    width: 100%;\n    padding: 10px;\n  }\n}\n\n\/* Orta ekranlar i\u00e7in (tabletler) *\/\n@media screen and (min-width: 769px) and (max-width: 1024px) {\n  body {\n    font-size: 15px;\n  }\n  .container {\n    width: 80%;\n  }\n}\n<\/code><\/pre>\n<p>Bu t\u00fcr responsive tasar\u0131mlar, uygulaman\u0131z\u0131n hangi ortamda (mavi veya ye\u015fil) \u00e7al\u0131\u015f\u0131rsa \u00e7al\u0131\u015fs\u0131n, t\u00fcm kullan\u0131c\u0131lara tutarl\u0131 ve eri\u015filebilir bir deneyim sunmas\u0131n\u0131 sa\u011flar. Da\u011f\u0131t\u0131m stratejiniz altyap\u0131y\u0131 y\u00f6netirken, uygulaman\u0131z\u0131n kendisi de son kullan\u0131c\u0131ya y\u00f6nelik bu t\u00fcr detaylar\u0131 i\u00e7ermelidir.<\/p>\n<p>Bu ileri d\u00fczey ipu\u00e7lar\u0131 ve en iyi uygulamalar, DOKS ve Gateway API ile mavi-ye\u015fil da\u011f\u0131t\u0131m stratejinizi daha sa\u011flam, verimli ve g\u00fcvenli hale getirmenize yard\u0131mc\u0131 olacakt\u0131r. S\u00fcrekli iyile\u015ftirme ve otomasyon, DevOps k\u00fclt\u00fcr\u00fcn\u00fcn temelini olu\u015fturur ve bu stratejilerin ba\u015far\u0131s\u0131 i\u00e7in kritik \u00f6neme sahiptir.<\/p>\n<h2>Sonu\u00e7<\/h2>\n<p>Uygulama da\u011f\u0131t\u0131mlar\u0131, modern yaz\u0131l\u0131m geli\u015ftirme s\u00fcre\u00e7lerinin ayr\u0131lmaz bir par\u00e7as\u0131d\u0131r ve kesintisiz, g\u00fcvenilir g\u00fcncellemeler sunmak, kullan\u0131c\u0131 memnuniyeti ve i\u015f s\u00fcreklili\u011fi i\u00e7in hayati \u00f6neme sahiptir. Bu makalede, DigitalOcean Kubernetes Servisi (DOKS) ve Kubernetes&#8217;in yeni nesil trafik y\u00f6netim standard\u0131 olan Gateway API&#8217;yi kullanarak mavi-ye\u015fil da\u011f\u0131t\u0131m stratejilerini nas\u0131l uygulayaca\u011f\u0131m\u0131z\u0131 ayr\u0131nt\u0131l\u0131 bir \u015fekilde inceledik. G\u00f6rd\u00fc\u011f\u00fcm\u00fcz gibi, mavi-ye\u015fil da\u011f\u0131t\u0131m, mevcut (mavi) ve yeni (ye\u015fil) uygulama ortamlar\u0131n\u0131 izole ederek, yeni s\u00fcr\u00fcmleri g\u00fcvenle test etme ve trafi\u011fi kontroll\u00fc bir \u015fekilde y\u00f6nlendirme imkan\u0131 sunar.<\/p>\n<p>DOKS&#8217;un sa\u011flad\u0131\u011f\u0131 kolay \u00f6l\u00e7eklenebilirlik, y\u00f6netilen hizmet avantajlar\u0131 ve entegre y\u00fck dengeleyici yetenekleri, mavi-ye\u015fil mimarinin ba\u015far\u0131l\u0131 bir \u015fekilde kurulmas\u0131 i\u00e7in sa\u011flam bir temel olu\u015fturur. Gateway API ise, geleneksel Ingress&#8217;in \u00f6tesine ge\u00e7erek daha esnek, rol odakl\u0131 ve geni\u015fletilebilir bir trafik y\u00f6netim \u00e7\u00f6z\u00fcm\u00fc sunar. HTTPRoute nesnesini kullanarak trafi\u011fi belirli y\u00fczdelerle mavi ve ye\u015fil servisler aras\u0131nda y\u00f6nlendirme yetene\u011fi, riskleri minimize eden kademeli ge\u00e7i\u015fler yapmam\u0131za olanak tan\u0131r. En \u00f6nemlisi, olas\u0131 bir sorun an\u0131nda trafi\u011fi an\u0131nda eski mavi ortama y\u00f6nlendirebilme yetene\u011fi, h\u0131zl\u0131 geri alma imkan\u0131 sunarak i\u015f s\u00fcreklili\u011fini garanti alt\u0131na al\u0131r.<\/p>\n<p>Ayr\u0131ca, otomasyon ve CI\/CD entegrasyonu, kapsaml\u0131 g\u00f6zlemlenebilirlik, sa\u011fl\u0131k kontrolleri, Helm kullan\u0131m\u0131 ve g\u00fcvenlik hususlar\u0131 gibi ileri d\u00fczey ipu\u00e7lar\u0131 ve en iyi uygulamalarla mavi-ye\u015fil da\u011f\u0131t\u0131m stratejinizi daha da g\u00fc\u00e7lendirebilece\u011finizi vurgulad\u0131k. Bu yakla\u015f\u0131mlar, da\u011f\u0131t\u0131m s\u00fcre\u00e7lerinizi daha verimli, g\u00fcvenli ve hatas\u0131z hale getirecek, ekiplerinize daha s\u0131k ve daha cesurca yenilikler yapma \u00f6zg\u00fcrl\u00fc\u011f\u00fc tan\u0131yacakt\u0131r. DOKS ve Gateway API ile mavi-ye\u015fil da\u011f\u0131t\u0131m, modern DevOps prensiplerini benimseyen her organizasyon i\u00e7in de\u011ferli bir stratejidir.<\/p>\n<h3>S\u0131k\u00e7a Sorulan Sorular (SSS)<\/h3>\n<dl>\n<dt>Mavi-Ye\u015fil da\u011f\u0131t\u0131m her uygulama i\u00e7in uygun mudur?<\/dt>\n<dd>Genel olarak evet, ancak \u00f6zellikle kesintiye tahamm\u00fcl\u00fc olmayan, y\u00fcksek eri\u015filebilirlik gerektiren ve s\u0131k g\u00fcncellenen uygulamalar i\u00e7in \u00e7ok daha uygundur. Stateless (durumsuz) uygulamalar i\u00e7in uygulamas\u0131 daha kolayd\u0131r. Durum bilgisi olan (stateful) uygulamalar i\u00e7in veri taban\u0131 veya depolama katman\u0131nda ek stratejiler (veri replikasyonu, schema uyumlulu\u011fu) gerekebilir.<\/dd>\n<dt>Gateway API kullanmak zorunlu mu?<\/dt>\n<dd>Hay\u0131r, zorunlu de\u011fildir. Geleneksel Ingress kaynaklar\u0131 veya do\u011frudan DigitalOcean Load Balancer ile de mavi-ye\u015fil da\u011f\u0131t\u0131mlar yap\u0131labilir. Ancak Gateway API, \u00f6zellikle karma\u015f\u0131k trafik y\u00f6netimi (a\u011f\u0131rl\u0131kl\u0131 y\u00f6nlendirme gibi) ve rol ayr\u0131m\u0131 a\u00e7\u0131s\u0131ndan daha geli\u015fmi\u015f ve gelece\u011fe y\u00f6nelik bir \u00e7\u00f6z\u00fcm sunar. Basit senaryolar i\u00e7in Ingress yeterli olabilir.<\/dd>\n<dt>Geri alma ne kadar s\u00fcrer?<\/dt>\n<dd>Gateway API ile yap\u0131lan mavi-ye\u015fil da\u011f\u0131t\u0131mlarda geri alma, <code class=\"language-\">HTTPRoute<\/code> nesnesini g\u00fcncelleyerek trafi\u011fi tekrar mavi ortama y\u00f6nlendirmek kadar h\u0131zl\u0131d\u0131r. Bu i\u015flem genellikle saniyeler i\u00e7inde tamamlan\u0131r, bu da kullan\u0131c\u0131lar\u0131n kesintiden minimum d\u00fczeyde etkilenmesini sa\u011flar.<\/dd>\n<dt>DOKS \u00fczerinde mavi-ye\u015fil da\u011f\u0131t\u0131m\u0131n maliyet etkisi nedir?<\/dt>\n<dd>Mavi-ye\u015fil da\u011f\u0131t\u0131m, iki ayr\u0131 ortam\u0131 (mavi ve ye\u015fil) ayn\u0131 anda \u00e7al\u0131\u015ft\u0131rd\u0131\u011f\u0131 i\u00e7in, k\u0131sa bir s\u00fcre boyunca normalden daha fazla kaynak (node, CPU, RAM) t\u00fcketebilir. Ancak DOKS&#8217;un \u00f6l\u00e7eklenebilirlik \u00f6zellikleri sayesinde, ye\u015fil ortam sadece test ve ge\u00e7i\u015f s\u00fcresince tam kapasitede tutulur ve ge\u00e7i\u015f tamamland\u0131ktan sonra eski mavi ortam kaynaklar\u0131 serbest b\u0131rak\u0131labilir. Bu, maliyet etkisini optimize etmeye yard\u0131mc\u0131 olur. Ayr\u0131ca, kesinti maliyetini d\u00fc\u015f\u00fcrd\u00fc\u011f\u00fc i\u00e7in uzun vadede karl\u0131 bir stratejidir.<\/dd>\n<dt>Mavi-Ye\u015fil da\u011f\u0131t\u0131m ile Canary da\u011f\u0131t\u0131mlar\u0131 aras\u0131ndaki fark nedir?<\/dt>\n<dd>Her ikisi de kesintisiz da\u011f\u0131t\u0131m stratejileridir ve trafi\u011fi kademeli olarak y\u00f6nlendirme yetene\u011fine sahiptir. Ancak Mavi-Ye\u015fil genellikle iki tam ortam aras\u0131nda b\u00fcy\u00fck \u00f6l\u00e7ekli bir ge\u00e7i\u015fi ifade ederken, Canary da\u011f\u0131t\u0131mlar\u0131 \u00e7ok daha k\u00fc\u00e7\u00fck bir kullan\u0131c\u0131 alt k\u00fcmesine (\u00f6rne\u011fin %1-5) yeni s\u00fcr\u00fcm\u00fc sunarak daha ince taneli testler yapmay\u0131 hedefler. Mavi-Ye\u015fil&#8217;de geri alma, t\u00fcm trafi\u011fi eski ortama an\u0131nda y\u00f6nlendirme ile olurken, Canary&#8217;de sorunlu k\u00fc\u00e7\u00fck grubu geri \u00e7ekmek yeterli olabilir. Gateway API, her iki stratejiyi de destekleyecek esnekli\u011fe sahiptir.<\/dd>\n<\/dl>\n<p><\/body><br \/>\n<\/html><\/p>\n","protected":false},"excerpt":{"rendered":"DOKS&#8217;ta Gateway API ile Mavi-Ye\u015fil Da\u011f\u0131t\u0131mlar Uygulama g\u00fcncellemeleri, her yaz\u0131l\u0131m ekibinin kar\u015f\u0131la\u015ft\u0131\u011f\u0131 ka\u00e7\u0131n\u0131lmaz bir s\u00fcre\u00e7tir. Peki, bu g\u00fcncellemeleri&hellip;","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"csco_page_header_type":"","csco_page_load_nextpost":"","csco_page_subscribe_form":"","csco_page_contact_form":"","footnotes":""},"categories":[1],"tags":[],"class_list":{"0":"post-40146","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-genel","7":"cs-entry","8":"cs-video-wrap"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.5 (Yoast SEO v25.3.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Mavi-Ye\u015fil Da\u011f\u0131t\u0131m Nedir ve Neden Uygulaman\u0131z \u0130\u00e7in \u00d6nemlidir?<\/title>\n<meta name=\"description\" content=\"Uygulama g\u00fcncellemeleri, her yaz\u0131l\u0131m ekibinin kar\u015f\u0131la\u015ft\u0131\u011f\u0131 ka\u00e7\u0131n\u0131lmaz bir s\u00fcre\u00e7tir. Peki, bu g\u00fcncellemeleri kullan\u0131c\u0131 deneyimini kesintiye u\u011fratmadan, s\u0131f\u0131r aksakl\u0131kla ve minimum riskle nas\u0131l ger\u00e7ekle\u015ftirebilirsiniz? DigitalOcean Kubernetes Servisi (DOKS) ve g\u00fc\u00e7l\u00fc Gateway API entegrasyonu sayesinde, mavi-ye\u015fil da\u011f\u0131t\u0131m stratejisiyle bu zorluklar\u0131n \u00fcstesinden gelmek art\u0131k \u00e7ok daha kolay. Bu rehberde, DOKS \u00fczerinde Gateway API kullanarak kesintisiz da\u011f\u0131t\u0131mlar\u0131n nas\u0131l yap\u0131laca\u011f\u0131n\u0131 ad\u0131m ad\u0131m \u00f6\u011frenecek, riskleri minimuma indirecek ve kullan\u0131c\u0131 deneyimini iyile\u015ftireceksiniz.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihsoysal.com\/blog\/mavi-yesil-dagitim-nedir-ve-neden-uygulamaniz-icin-onemlidir\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Mavi-Ye\u015fil Da\u011f\u0131t\u0131m Nedir ve Neden Uygulaman\u0131z \u0130\u00e7in \u00d6nemlidir?\" \/>\n<meta property=\"og:description\" content=\"Uygulama g\u00fcncellemeleri, her yaz\u0131l\u0131m ekibinin kar\u015f\u0131la\u015ft\u0131\u011f\u0131 ka\u00e7\u0131n\u0131lmaz bir s\u00fcre\u00e7tir. Peki, bu g\u00fcncellemeleri kullan\u0131c\u0131 deneyimini kesintiye u\u011fratmadan, s\u0131f\u0131r aksakl\u0131kla ve minimum riskle nas\u0131l ger\u00e7ekle\u015ftirebilirsiniz? DigitalOcean Kubernetes Servisi (DOKS) ve g\u00fc\u00e7l\u00fc Gateway API entegrasyonu sayesinde, mavi-ye\u015fil da\u011f\u0131t\u0131m stratejisiyle bu zorluklar\u0131n \u00fcstesinden gelmek art\u0131k \u00e7ok daha kolay. Bu rehberde, DOKS \u00fczerinde Gateway API kullanarak kesintisiz da\u011f\u0131t\u0131mlar\u0131n nas\u0131l yap\u0131laca\u011f\u0131n\u0131 ad\u0131m ad\u0131m \u00f6\u011frenecek, riskleri minimuma indirecek ve kullan\u0131c\u0131 deneyimini iyile\u015ftireceksiniz.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/mavi-yesil-dagitim-nedir-ve-neden-uygulamaniz-icin-onemlidir\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2026-02-24T17:21:11+00:00\" \/>\n<meta name=\"author\" content=\"Fatih Soysal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Soysal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"27 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/mavi-yesil-dagitim-nedir-ve-neden-uygulamaniz-icin-onemlidir\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/mavi-yesil-dagitim-nedir-ve-neden-uygulamaniz-icin-onemlidir\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"Mavi-Ye\u015fil Da\u011f\u0131t\u0131m Nedir ve Neden Uygulaman\u0131z \u0130\u00e7in \u00d6nemlidir?\",\"datePublished\":\"2026-02-24T17:21:11+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/mavi-yesil-dagitim-nedir-ve-neden-uygulamaniz-icin-onemlidir\/\"},\"wordCount\":4671,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/mavi-yesil-dagitim-nedir-ve-neden-uygulamaniz-icin-onemlidir\/#respond\"]}],\"copyrightYear\":\"2026\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/mavi-yesil-dagitim-nedir-ve-neden-uygulamaniz-icin-onemlidir\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/mavi-yesil-dagitim-nedir-ve-neden-uygulamaniz-icin-onemlidir\/\",\"name\":\"Mavi-Ye\u015fil Da\u011f\u0131t\u0131m Nedir ve Neden Uygulaman\u0131z \u0130\u00e7in \u00d6nemlidir?\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2026-02-24T17:21:11+00:00\",\"description\":\"Uygulama g\u00fcncellemeleri, her yaz\u0131l\u0131m ekibinin kar\u015f\u0131la\u015ft\u0131\u011f\u0131 ka\u00e7\u0131n\u0131lmaz bir s\u00fcre\u00e7tir. Peki, bu g\u00fcncellemeleri kullan\u0131c\u0131 deneyimini kesintiye u\u011fratmadan, s\u0131f\u0131r aksakl\u0131kla ve minimum riskle nas\u0131l ger\u00e7ekle\u015ftirebilirsiniz? DigitalOcean Kubernetes Servisi (DOKS) ve g\u00fc\u00e7l\u00fc Gateway API entegrasyonu sayesinde, mavi-ye\u015fil da\u011f\u0131t\u0131m stratejisiyle bu zorluklar\u0131n \u00fcstesinden gelmek art\u0131k \u00e7ok daha kolay. Bu rehberde, DOKS \u00fczerinde Gateway API kullanarak kesintisiz da\u011f\u0131t\u0131mlar\u0131n nas\u0131l yap\u0131laca\u011f\u0131n\u0131 ad\u0131m ad\u0131m \u00f6\u011frenecek, riskleri minimuma indirecek ve kullan\u0131c\u0131 deneyimini iyile\u015ftireceksiniz.\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/mavi-yesil-dagitim-nedir-ve-neden-uygulamaniz-icin-onemlidir\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/mavi-yesil-dagitim-nedir-ve-neden-uygulamaniz-icin-onemlidir\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/mavi-yesil-dagitim-nedir-ve-neden-uygulamaniz-icin-onemlidir\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Mavi-Ye\u015fil Da\u011f\u0131t\u0131m Nedir ve Neden Uygulaman\u0131z \u0130\u00e7in \u00d6nemlidir?\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/\",\"name\":\"Fatihsoysal.com\",\"description\":\"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim\",\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\",\"name\":\"Fatih Soysal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"contentUrl\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"width\":512,\"height\":512,\"caption\":\"Fatih Soysal\"},\"logo\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\"},\"description\":\"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Mavi-Ye\u015fil Da\u011f\u0131t\u0131m Nedir ve Neden Uygulaman\u0131z \u0130\u00e7in \u00d6nemlidir?","description":"Uygulama g\u00fcncellemeleri, her yaz\u0131l\u0131m ekibinin kar\u015f\u0131la\u015ft\u0131\u011f\u0131 ka\u00e7\u0131n\u0131lmaz bir s\u00fcre\u00e7tir. Peki, bu g\u00fcncellemeleri kullan\u0131c\u0131 deneyimini kesintiye u\u011fratmadan, s\u0131f\u0131r aksakl\u0131kla ve minimum riskle nas\u0131l ger\u00e7ekle\u015ftirebilirsiniz? DigitalOcean Kubernetes Servisi (DOKS) ve g\u00fc\u00e7l\u00fc Gateway API entegrasyonu sayesinde, mavi-ye\u015fil da\u011f\u0131t\u0131m stratejisiyle bu zorluklar\u0131n \u00fcstesinden gelmek art\u0131k \u00e7ok daha kolay. Bu rehberde, DOKS \u00fczerinde Gateway API kullanarak kesintisiz da\u011f\u0131t\u0131mlar\u0131n nas\u0131l yap\u0131laca\u011f\u0131n\u0131 ad\u0131m ad\u0131m \u00f6\u011frenecek, riskleri minimuma indirecek ve kullan\u0131c\u0131 deneyimini iyile\u015ftireceksiniz.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fatihsoysal.com\/blog\/mavi-yesil-dagitim-nedir-ve-neden-uygulamaniz-icin-onemlidir\/","og_locale":"tr_TR","og_type":"article","og_title":"Mavi-Ye\u015fil Da\u011f\u0131t\u0131m Nedir ve Neden Uygulaman\u0131z \u0130\u00e7in \u00d6nemlidir?","og_description":"Uygulama g\u00fcncellemeleri, her yaz\u0131l\u0131m ekibinin kar\u015f\u0131la\u015ft\u0131\u011f\u0131 ka\u00e7\u0131n\u0131lmaz bir s\u00fcre\u00e7tir. Peki, bu g\u00fcncellemeleri kullan\u0131c\u0131 deneyimini kesintiye u\u011fratmadan, s\u0131f\u0131r aksakl\u0131kla ve minimum riskle nas\u0131l ger\u00e7ekle\u015ftirebilirsiniz? DigitalOcean Kubernetes Servisi (DOKS) ve g\u00fc\u00e7l\u00fc Gateway API entegrasyonu sayesinde, mavi-ye\u015fil da\u011f\u0131t\u0131m stratejisiyle bu zorluklar\u0131n \u00fcstesinden gelmek art\u0131k \u00e7ok daha kolay. Bu rehberde, DOKS \u00fczerinde Gateway API kullanarak kesintisiz da\u011f\u0131t\u0131mlar\u0131n nas\u0131l yap\u0131laca\u011f\u0131n\u0131 ad\u0131m ad\u0131m \u00f6\u011frenecek, riskleri minimuma indirecek ve kullan\u0131c\u0131 deneyimini iyile\u015ftireceksiniz.","og_url":"https:\/\/fatihsoysal.com\/blog\/mavi-yesil-dagitim-nedir-ve-neden-uygulamaniz-icin-onemlidir\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2026-02-24T17:21:11+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"27 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/mavi-yesil-dagitim-nedir-ve-neden-uygulamaniz-icin-onemlidir\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/mavi-yesil-dagitim-nedir-ve-neden-uygulamaniz-icin-onemlidir\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"Mavi-Ye\u015fil Da\u011f\u0131t\u0131m Nedir ve Neden Uygulaman\u0131z \u0130\u00e7in \u00d6nemlidir?","datePublished":"2026-02-24T17:21:11+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/mavi-yesil-dagitim-nedir-ve-neden-uygulamaniz-icin-onemlidir\/"},"wordCount":4671,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/mavi-yesil-dagitim-nedir-ve-neden-uygulamaniz-icin-onemlidir\/#respond"]}],"copyrightYear":"2026","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/mavi-yesil-dagitim-nedir-ve-neden-uygulamaniz-icin-onemlidir\/","url":"https:\/\/fatihsoysal.com\/blog\/mavi-yesil-dagitim-nedir-ve-neden-uygulamaniz-icin-onemlidir\/","name":"Mavi-Ye\u015fil Da\u011f\u0131t\u0131m Nedir ve Neden Uygulaman\u0131z \u0130\u00e7in \u00d6nemlidir?","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2026-02-24T17:21:11+00:00","description":"Uygulama g\u00fcncellemeleri, her yaz\u0131l\u0131m ekibinin kar\u015f\u0131la\u015ft\u0131\u011f\u0131 ka\u00e7\u0131n\u0131lmaz bir s\u00fcre\u00e7tir. Peki, bu g\u00fcncellemeleri kullan\u0131c\u0131 deneyimini kesintiye u\u011fratmadan, s\u0131f\u0131r aksakl\u0131kla ve minimum riskle nas\u0131l ger\u00e7ekle\u015ftirebilirsiniz? DigitalOcean Kubernetes Servisi (DOKS) ve g\u00fc\u00e7l\u00fc Gateway API entegrasyonu sayesinde, mavi-ye\u015fil da\u011f\u0131t\u0131m stratejisiyle bu zorluklar\u0131n \u00fcstesinden gelmek art\u0131k \u00e7ok daha kolay. Bu rehberde, DOKS \u00fczerinde Gateway API kullanarak kesintisiz da\u011f\u0131t\u0131mlar\u0131n nas\u0131l yap\u0131laca\u011f\u0131n\u0131 ad\u0131m ad\u0131m \u00f6\u011frenecek, riskleri minimuma indirecek ve kullan\u0131c\u0131 deneyimini iyile\u015ftireceksiniz.","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/mavi-yesil-dagitim-nedir-ve-neden-uygulamaniz-icin-onemlidir\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/mavi-yesil-dagitim-nedir-ve-neden-uygulamaniz-icin-onemlidir\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/mavi-yesil-dagitim-nedir-ve-neden-uygulamaniz-icin-onemlidir\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Mavi-Ye\u015fil Da\u011f\u0131t\u0131m Nedir ve Neden Uygulaman\u0131z \u0130\u00e7in \u00d6nemlidir?"}]},{"@type":"WebSite","@id":"https:\/\/fatihsoysal.com\/blog\/#website","url":"https:\/\/fatihsoysal.com\/blog\/","name":"Fatihsoysal.com","description":"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim","publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1","name":"Fatih Soysal","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","contentUrl":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","width":512,"height":512,"caption":"Fatih Soysal"},"logo":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/"},"description":"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.","url":"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/"}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/40146","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/comments?post=40146"}],"version-history":[{"count":0,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/40146\/revisions"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=40146"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=40146"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=40146"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}