{"id":31911,"date":"2025-10-15T13:41:28","date_gmt":"2025-10-15T10:41:28","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/?p=31911"},"modified":"2025-10-15T13:41:28","modified_gmt":"2025-10-15T10:41:28","slug":"web-uygulamanizin-digitalocean-ubuntu-14-04-dropletleri-uzerinde-otomatik-olceklenmesi","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/web-uygulamanizin-digitalocean-ubuntu-14-04-dropletleri-uzerinde-otomatik-olceklenmesi\/","title":{"rendered":"Web Uygulaman\u0131z\u0131n DigitalOcean Ubuntu 14.04 Droplet&#8217;leri \u00dczerinde Otomatik \u00d6l\u00e7eklenmesi"},"content":{"rendered":"<p><body><\/p>\n<h2>Web Uygulaman\u0131z\u0131n DigitalOcean Ubuntu 14.04 Droplet&#8217;leri \u00dczerinde Otomatik \u00d6l\u00e7eklenmesi<\/h2>\n<p>Bu makale, web uygulamalar\u0131n\u0131n de\u011fi\u015fen trafik y\u00fcklerine dinamik olarak adapte olabilmesi i\u00e7in DigitalOcean&#8217;\u0131n Ubuntu 14.04 Droplet&#8217;leri \u00fczerinde otomatik \u00f6l\u00e7eklenme (auto-scaling) mekanizmalar\u0131n\u0131n nas\u0131l kurulaca\u011f\u0131n\u0131 ve y\u00f6netilece\u011fini detayland\u0131rmaktad\u0131r. Web uygulamalar\u0131n\u0131n ba\u015far\u0131s\u0131, y\u00fcksek performans, eri\u015filebilirlik ve maliyet etkinli\u011fi gibi fakt\u00f6rlere ba\u011fl\u0131d\u0131r. Bu fakt\u00f6rler, uygulaman\u0131n anl\u0131k taleplere g\u00f6re kaynaklar\u0131n\u0131 art\u0131r\u0131p azaltabilmesi, yani \u00f6l\u00e7eklenebilir olmas\u0131yla do\u011frudan ili\u015fkilidir.<\/p>\n<h3>Giri\u015f: Neden Otomatik \u00d6l\u00e7eklenme?<\/h3>\n<p>Modern web uygulamalar\u0131, g\u00fcn i\u00e7inde veya belirli olaylar s\u0131ras\u0131nda trafik y\u00fck\u00fcnde b\u00fcy\u00fck dalgalanmalar ya\u015fayabilir. \u00d6rne\u011fin, bir e-ticaret sitesi kampanya d\u00f6nemlerinde normalin \u00e7ok \u00fczerinde ziyaret\u00e7i alabilirken, haber siteleri fla\u015f haberler s\u0131ras\u0131nda anl\u0131k trafik patlamalar\u0131 ya\u015fayabilir. Bu t\u00fcr senaryolarda, uygulaman\u0131n performans\u0131n\u0131 ve kullan\u0131c\u0131 deneyimini korumak i\u00e7in altyap\u0131n\u0131n h\u0131zla geni\u015flemesi (scale-out) veya daralmas\u0131 (scale-in) gerekir. Manuel \u00f6l\u00e7eklenme, \u00f6zellikle beklenmedik trafik art\u0131\u015flar\u0131nda yava\u015f kalabilir, insan hatas\u0131na a\u00e7\u0131k olabilir ve operasyonel maliyetleri art\u0131rabilir. \u0130\u015fte bu noktada otomatik \u00f6l\u00e7eklenme devreye girer. Otomatik \u00f6l\u00e7eklenme, \u00f6nceden tan\u0131mlanm\u0131\u015f metrikler (CPU kullan\u0131m\u0131, bellek, a\u011f trafi\u011fi vb.) ve e\u015fik de\u011ferlere g\u00f6re altyap\u0131 kaynaklar\u0131n\u0131 otomatik olarak y\u00f6neten bir sistemdir. Bu, uygulaman\u0131n her zaman optimum performansla \u00e7al\u0131\u015fmas\u0131n\u0131 sa\u011flarken, gereksiz kaynak kullan\u0131m\u0131n\u0131 \u00f6nleyerek maliyetleri d\u00fc\u015f\u00fcr\u00fcr.<\/p>\n<h4>Dikey ve Yatay \u00d6l\u00e7eklenme Fark\u0131<\/h4>\n<p>\u00d6l\u00e7eklenme temel olarak iki ana kategoriye ayr\u0131l\u0131r:<\/p>\n<p>*   <strong>Dikey \u00d6l\u00e7eklenme (Vertical Scaling veya Scale-Up):<\/strong> Mevcut sunucunun (bu durumda DigitalOcean Droplet&#8217;in) kaynaklar\u0131n\u0131 (CPU, RAM, depolama) art\u0131rmakt\u0131r. Daha g\u00fc\u00e7l\u00fc bir Droplet&#8217;e ge\u00e7mek bu kategoriye girer. Avantaj\u0131 basittir ve uygulama mimarisinde b\u00fcy\u00fck de\u011fi\u015fiklikler gerektirmez. Ancak, tek bir sunucunun kapasitesinin bir s\u0131n\u0131r\u0131 vard\u0131r ve tek hata noktas\u0131 (Single Point of Failure &#8211; SPOF) riskini ta\u015f\u0131r.<br \/>\n*   <strong>Yatay \u00d6l\u00e7eklenme (Horizontal Scaling veya Scale-Out\/Scale-In):<\/strong> Mevcut sunucu say\u0131s\u0131n\u0131 art\u0131rmak veya azaltmakt\u0131r. Uygulaman\u0131z\u0131n birden fazla Droplet \u00fczerinde \u00e7al\u0131\u015fmas\u0131n\u0131 sa\u011flamak ve y\u00fck\u00fc bu Droplet&#8217;ler aras\u0131nda da\u011f\u0131tmak bu kategoriye girer. Yatay \u00f6l\u00e7eklenme, s\u0131n\u0131rs\u0131z denebilecek bir kapasite art\u0131\u015f\u0131 sunar, hata tolerans\u0131n\u0131 art\u0131r\u0131r (bir Droplet \u00e7\u00f6kerse di\u011ferleri \u00e7al\u0131\u015fmaya devam eder) ve genellikle daha maliyet etkindir. Otomatik \u00f6l\u00e7eklenme genellikle yatay \u00f6l\u00e7eklenmeyi hedefler.<\/p>\n<h4>DigitalOcean ve Ubuntu 14.04 Ba\u011flam\u0131<\/h4>\n<p>DigitalOcean, geli\u015ftiricilere ve k\u00fc\u00e7\u00fck\/orta \u00f6l\u00e7ekli i\u015fletmelere y\u00f6nelik basit ve g\u00fc\u00e7l\u00fc bulut altyap\u0131s\u0131 sunan pop\u00fcler bir platformdur. Droplet&#8217;leri (sanal \u00f6zel sunucular\u0131) h\u0131zl\u0131 bir \u015fekilde olu\u015fturma, y\u00f6netme ve API arac\u0131l\u0131\u011f\u0131yla otomatize etme yetene\u011fi, otomatik \u00f6l\u00e7eklenme i\u00e7in ideal bir ortam sa\u011flar. Ubuntu 14.04 ise, 2014 y\u0131l\u0131nda piyasaya s\u00fcr\u00fclen ve uzun s\u00fcreli destek (LTS) alm\u0131\u015f bir Linux da\u011f\u0131t\u0131m\u0131d\u0131r. Her ne kadar g\u00fcncel ve daha g\u00fcvenli s\u00fcr\u00fcmleri (\u00f6rne\u011fin Ubuntu 18.04, 20.04 veya 22.04) mevcut olsa da, bu makalenin gereksinimleri do\u011frultusunda Ubuntu 14.04&#8217;\u00fcn kullan\u0131ld\u0131\u011f\u0131 bir senaryo ele al\u0131nacakt\u0131r. Bu s\u00fcr\u00fcm i\u00e7in g\u00fcvenlik g\u00fcncellemelerinin sona erdi\u011fini ve modern uygulamalar i\u00e7in daha yeni s\u00fcr\u00fcmlerin tercih edilmesi gerekti\u011fini belirtmek \u00f6nemlidir. Ancak, temel otomatik \u00f6l\u00e7eklenme prensipleri ve DigitalOcean API kullan\u0131m\u0131, i\u015fletim sistemi s\u00fcr\u00fcm\u00fcnden ba\u011f\u0131ms\u0131z olarak b\u00fcy\u00fck \u00f6l\u00e7\u00fcde ayn\u0131 kalacakt\u0131r.<\/p>\n<h3>\u00d6l\u00e7eklenme Kavramlar\u0131n\u0131 Anlamak<\/h3>\n<p>Otomatik \u00f6l\u00e7eklenmenin ba\u015far\u0131l\u0131 bir \u015fekilde uygulanabilmesi i\u00e7in temel \u00f6l\u00e7eklenme kavramlar\u0131n\u0131n iyi anla\u015f\u0131lmas\u0131 \u015fartt\u0131r.<\/p>\n<h4>Dikey \u00d6l\u00e7eklenme (Vertical Scaling)<\/h4>\n<p>Dikey \u00f6l\u00e7eklenme, uygulaman\u0131z\u0131n \u00e7al\u0131\u015ft\u0131\u011f\u0131 tek bir sunucunun i\u015flemci g\u00fcc\u00fcn\u00fc, bellek miktar\u0131n\u0131 veya depolama alan\u0131n\u0131 art\u0131rarak kapasitesini y\u00fckseltme i\u015flemidir. DigitalOcean&#8217;da bu, mevcut Droplet&#8217;inizi daha b\u00fcy\u00fck bir planla y\u00fckseltmek anlam\u0131na gelir. \u00d6rne\u011fin, 1 CPU ve 2GB RAM&#8217;e sahip bir Droplet&#8217;i, 2 CPU ve 4GB RAM&#8217;e sahip bir Droplet&#8217;e y\u00fckseltmek dikey \u00f6l\u00e7eklenmedir.<\/p>\n<p>*   <strong>Avantajlar\u0131:<\/strong> Uygulama mimarisinde de\u011fi\u015fiklik gerektirmez, kurulumu ve y\u00f6netimi basittir.<br \/>\n*   <strong>Dezavantajlar\u0131:<\/strong> Tek bir sunucunun fiziksel s\u0131n\u0131rlar\u0131 vard\u0131r, sonsuz kapasite art\u0131\u015f\u0131 sa\u011flamaz. Sunucu y\u00fckseltme s\u0131ras\u0131nda genellikle k\u0131sa bir kesinti ya\u015fan\u0131r. Tek hata noktas\u0131 riski ta\u015f\u0131r.<\/p>\n<h4>Yatay \u00d6l\u00e7eklenme (Horizontal Scaling)<\/h4>\n<p>Yatay \u00f6l\u00e7eklenme, uygulaman\u0131z\u0131n birden fazla sunucu \u00fczerinde \u00e7al\u0131\u015fmas\u0131n\u0131 sa\u011flamak ve gelen trafi\u011fi bu sunucular aras\u0131nda da\u011f\u0131tmakt\u0131r. Bu, yeni Droplet&#8217;ler olu\u015fturup bunlar\u0131 mevcut altyap\u0131n\u0131za ekleyerek kapasiteyi art\u0131rma i\u015flemidir.<\/p>\n<p>*   <strong>Avantajlar\u0131:<\/strong> Teorik olarak s\u0131n\u0131rs\u0131z kapasite art\u0131\u015f\u0131 sa\u011flar. Bir sunucunun ar\u0131zalanmas\u0131 durumunda di\u011ferleri \u00e7al\u0131\u015fmaya devam etti\u011fi i\u00e7in y\u00fcksek eri\u015filebilirlik ve hata tolerans\u0131 sunar. Genellikle dikey \u00f6l\u00e7eklenmeye g\u00f6re daha maliyet etkindir, \u00e7\u00fcnk\u00fc k\u00fc\u00e7\u00fck, uygun fiyatl\u0131 sunucular\u0131n birle\u015fimini kullan\u0131r.<br \/>\n*   <strong>Dezavantajlar\u0131:<\/strong> Uygulaman\u0131n durumsuz (stateless) olmas\u0131 gerekir. Y\u00fck dengeleyici gibi ek bile\u015fenler gerektirir. Uygulama mimarisinde de\u011fi\u015fiklikler gerektirebilir (\u00f6rne\u011fin, oturum y\u00f6netimi, payla\u015f\u0131lan depolama).<\/p>\n<h4>Y\u00fck Dengeleme (Load Balancing)<\/h4>\n<p>Yatay \u00f6l\u00e7eklenmenin olmazsa olmaz bir bile\u015feni y\u00fck dengeleyicidir. Y\u00fck dengeleyici, gelen t\u00fcm a\u011f trafi\u011fini al\u0131r ve bu trafi\u011fi arkas\u0131ndaki birden fazla sunucu (Droplet) aras\u0131nda verimli bir \u015fekilde da\u011f\u0131t\u0131r. Bu, her sunucunun a\u015f\u0131r\u0131 y\u00fcklenmesini \u00f6nler, performans\u0131 art\u0131r\u0131r ve bir sunucu ar\u0131zaland\u0131\u011f\u0131nda trafi\u011fi otomatik olarak di\u011fer \u00e7al\u0131\u015fan sunuculara y\u00f6nlendirerek uygulaman\u0131n kesintisiz \u00e7al\u0131\u015fmas\u0131n\u0131 sa\u011flar. DigitalOcean, y\u00f6netilen bir Y\u00fck Dengeleyici (Managed Load Balancer) hizmeti sunar, bu da kurulum ve y\u00f6netimi olduk\u00e7a kolayla\u015ft\u0131r\u0131r. Nginx ve HAProxy gibi yaz\u0131l\u0131msal y\u00fck dengeleyiciler de Droplet&#8217;ler \u00fczerinde kurulabilir.<\/p>\n<h4>Otomatik \u00d6l\u00e7eklenme (Auto-Scaling) Mekanizmas\u0131<\/h4>\n<p>Otomatik \u00f6l\u00e7eklenme, uygulaman\u0131n performans metriklerini (CPU kullan\u0131m\u0131, bellek t\u00fcketimi, a\u011f trafi\u011fi, istek say\u0131s\u0131 vb.) s\u00fcrekli izleyerek, \u00f6nceden belirlenmi\u015f e\u015fik de\u011ferlere ula\u015f\u0131ld\u0131\u011f\u0131nda otomatik olarak yeni sunucular ekleme (scale-out) veya mevcut sunucular\u0131 kald\u0131rma (scale-in) i\u015flemidir. Bu mekanizma genellikle \u015fu ad\u0131mlar\u0131 i\u00e7erir:<\/p>\n<p>1.  <strong>\u0130zleme (Monitoring):<\/strong> Uygulama ve altyap\u0131 metriklerinin s\u00fcrekli toplanmas\u0131.<br \/>\n2.  <strong>E\u015fik De\u011fer Belirleme (Thresholds):<\/strong> \u00d6l\u00e7eklenme eylemlerini tetikleyecek performans e\u015fiklerinin tan\u0131mlanmas\u0131 (\u00f6rne\u011fin, &#8220;CPU kullan\u0131m\u0131 5 dakika boyunca %70&#8217;in \u00fczerindeyse yeni bir Droplet ekle&#8221;).<br \/>\n3.  <strong>Politika Belirleme (Policies):<\/strong> \u00d6l\u00e7eklenme eylemlerinin nas\u0131l ger\u00e7ekle\u015ftirilece\u011finin (ka\u00e7 Droplet eklenecek\/silinecek, hangi aral\u0131klarla vb.) tan\u0131mlanmas\u0131.<br \/>\n4.  <strong>Otomasyon (Automation):<\/strong> Belirlenen e\u015fik de\u011ferlere ula\u015f\u0131ld\u0131\u011f\u0131nda DigitalOcean API&#8217;si arac\u0131l\u0131\u011f\u0131yla Droplet olu\u015fturma\/silme ve y\u00fck dengeleyiciyi g\u00fcncelleme i\u015flemlerinin otomatik olarak yap\u0131lmas\u0131.<\/p>\n<h3>Otomatik \u00d6l\u00e7eklenme \u0130\u00e7in Temel Bile\u015fenler ve \u00d6n Ko\u015fullar<\/h3>\n<p>Otomatik \u00f6l\u00e7eklenebilir bir yap\u0131 kurmak i\u00e7in belirli bile\u015fenlere ve \u00f6n ko\u015fullara ihtiya\u00e7 vard\u0131r.<\/p>\n<h4>DigitalOcean Hesab\u0131 ve Droplet&#8217;ler<\/h4>\n<p>\u00d6ncelikle aktif bir DigitalOcean hesab\u0131n\u0131z olmal\u0131 ve Droplet olu\u015fturma, API anahtar\u0131 y\u00f6netimi gibi temel i\u015flemleri biliyor olman\u0131z gerekir. Otomatik \u00f6l\u00e7eklenme i\u00e7in Droplet&#8217;lerinizin Ubuntu 14.04 \u00fczerinde \u00e7al\u0131\u015faca\u011f\u0131 varsay\u0131lmaktad\u0131r.<\/p>\n<h4>Durumsuz (Stateless) Web Uygulamas\u0131<\/h4>\n<p>Otomatik \u00f6l\u00e7eklenmenin en kritik \u00f6n ko\u015fullar\u0131ndan biri, web uygulaman\u0131z\u0131n durumsuz olmas\u0131d\u0131r. Durumsuz bir uygulama, her iste\u011fi ba\u011f\u0131ms\u0131z olarak i\u015fler ve herhangi bir oturum veya kullan\u0131c\u0131 verisini yerel sunucu belle\u011finde veya dosya sisteminde tutmaz. T\u00fcm oturum bilgileri, kullan\u0131c\u0131 verileri ve uygulama durumu, Redis, Memcached gibi harici bir \u00f6nbellek sunucusunda veya bir veritaban\u0131nda depolanmal\u0131d\u0131r. Bu sayede, yeni bir Droplet eklendi\u011finde veya mevcut bir Droplet kald\u0131r\u0131ld\u0131\u011f\u0131nda uygulaman\u0131n i\u015fleyi\u015fi etkilenmez.<\/p>\n<h4>Y\u00fck Dengeleyici (Load Balancer) Se\u00e7imi<\/h4>\n<p>DigitalOcean&#8217;\u0131n y\u00f6netilen Y\u00fck Dengeleyici hizmeti, otomatik \u00f6l\u00e7eklenme i\u00e7in en uygun se\u00e7enektir. Kurulumu kolayd\u0131r, otomatik olarak \u00f6l\u00e7eklenir ve Droplet&#8217;leri hedef gruplar\u0131na ekleyip \u00e7\u0131karmak i\u00e7in API deste\u011fi sunar. Alternatif olarak, Nginx veya HAProxy gibi yaz\u0131l\u0131msal y\u00fck dengeleyicileri ayr\u0131 bir Droplet \u00fczerine kurabilir ve y\u00f6netebilirsiniz, ancak bu daha fazla yap\u0131land\u0131rma ve bak\u0131m gerektirir.<\/p>\n<h4>\u0130zleme ve Uyar\u0131 Sistemleri<\/h4>\n<p>Otomatik \u00f6l\u00e7eklenmenin tetikleyicisi olan metrikleri toplamak i\u00e7in g\u00fc\u00e7l\u00fc bir izleme sistemine ihtiyac\u0131n\u0131z vard\u0131r. DigitalOcean Monitoring, Droplet&#8217;lerinizin CPU, bellek, disk I\/O ve a\u011f trafi\u011fi gibi temel metriklerini \u00fccretsiz olarak sa\u011flar. Bu metrikler \u00fczerinden uyar\u0131lar tan\u0131mlayabilir ve DigitalOcean API&#8217;si arac\u0131l\u0131\u011f\u0131yla bu verilere eri\u015febilirsiniz. Daha geli\u015fmi\u015f senaryolar i\u00e7in Prometheus ve Grafana gibi a\u00e7\u0131k kaynakl\u0131 \u00e7\u00f6z\u00fcmler de kullan\u0131labilir.<\/p>\n<h4>Yap\u0131land\u0131rma Y\u00f6netimi Ara\u00e7lar\u0131<\/h4>\n<p>Yeni Droplet&#8217;ler olu\u015fturuldu\u011funda, uygulaman\u0131z\u0131n ve ba\u011f\u0131ml\u0131l\u0131klar\u0131n\u0131n h\u0131zla kurulmas\u0131 gerekir. Ansible, Chef veya Puppet gibi yap\u0131land\u0131rma y\u00f6netimi ara\u00e7lar\u0131, bu s\u00fcreci otomatikle\u015ftirmek i\u00e7in m\u00fckemmeldir. Bu ara\u00e7lar sayesinde, t\u00fcm Droplet&#8217;lerinizin tutarl\u0131 bir \u015fekilde yap\u0131land\u0131r\u0131lmas\u0131n\u0131 ve uygulaman\u0131z\u0131n h\u0131zl\u0131ca da\u011f\u0131t\u0131lmas\u0131n\u0131 sa\u011flayabilirsiniz.<\/p>\n<h4>Otomasyon ve Orkestrasyon Ara\u00e7lar\u0131 (DigitalOcean API, <code>doctl<\/code>)<\/h4>\n<p>Otomatik \u00f6l\u00e7eklenmenin kalbi, DigitalOcean API&#8217;si ve bu API ile etkile\u015fime ge\u00e7en otomasyon ara\u00e7lar\u0131d\u0131r.<\/p>\n<p>*   <strong>DigitalOcean API:<\/strong> T\u00fcm Droplet, Y\u00fck Dengeleyici, Snapshot, G\u00f6r\u00fcnt\u00fc (Image) ve di\u011fer DigitalOcean kaynaklar\u0131n\u0131 programatik olarak y\u00f6netmek i\u00e7in RESTful bir aray\u00fcz sunar. Python, Node.js, Ruby gibi dillerde yaz\u0131lm\u0131\u015f otomasyon betikleri bu API&#8217;yi kullanarak kaynaklar\u0131 olu\u015fturabilir, de\u011fi\u015ftirebilir ve silebilir.<br \/>\n*   <strong><code>doctl<\/code>:<\/strong> DigitalOcean API&#8217;si ile etkile\u015fim kurmak i\u00e7in kullan\u0131lan resmi bir komut sat\u0131r\u0131 arac\u0131d\u0131r. Bash betikleri i\u00e7inde <code>doctl<\/code> komutlar\u0131n\u0131 kullanarak Droplet olu\u015fturma, silme, y\u00fck dengeleyiciye Droplet ekleme\/\u00e7\u0131karma gibi i\u015flemleri kolayca ger\u00e7ekle\u015ftirebilirsiniz.<\/p>\n<h3>Ad\u0131m Ad\u0131m Otomatik \u00d6l\u00e7eklenme Uygulamas\u0131<\/h3>\n<p>\u015eimdi, DigitalOcean Ubuntu 14.04 Droplet&#8217;leri \u00fczerinde otomatik \u00f6l\u00e7eklenmeyi nas\u0131l uygulayaca\u011f\u0131m\u0131za dair ad\u0131mlar\u0131 inceleyelim.<\/p>\n<h4>1. Temel Droplet Kal\u0131b\u0131 Olu\u015fturma (Golden Image)<\/h4>\n<p>Otomatik \u00f6l\u00e7eklenmenin ilk ad\u0131m\u0131, uygulaman\u0131z\u0131n ve t\u00fcm ba\u011f\u0131ml\u0131l\u0131klar\u0131n\u0131n \u00f6nceden kuruldu\u011fu, &#8220;alt\u0131n g\u00f6r\u00fcnt\u00fc&#8221; veya &#8220;temel kal\u0131p&#8221; ad\u0131 verilen bir Droplet g\u00f6r\u00fcnt\u00fcs\u00fc olu\u015fturmakt\u0131r.<\/p>\n<p>*   <strong>Temel Droplet Kurulumu:<\/strong><br \/>\n    1.  Bir Ubuntu 14.04 Droplet olu\u015fturun.<br \/>\n    2.  Droplet&#8217;e SSH ile ba\u011flan\u0131n.<br \/>\n    3.  Web sunucunuzu (Nginx veya Apache), uygulama \u00e7al\u0131\u015fma zaman\u0131n\u0131z\u0131 (PHP-FPM, Node.js, Python Gunicorn\/uWSGI) ve uygulaman\u0131z\u0131n gerektirdi\u011fi di\u011fer yaz\u0131l\u0131mlar\u0131 kurun.<br \/>\n    4.  Uygulama kodunuzu Droplet&#8217;e da\u011f\u0131t\u0131n ve gerekli yap\u0131land\u0131rmalar\u0131 yap\u0131n. Uygulaman\u0131z\u0131n durumsuz oldu\u011fundan ve veritaban\u0131 gibi d\u0131\u015f kaynaklara ba\u011fland\u0131\u011f\u0131ndan emin olun.<br \/>\n    5.  T\u00fcm servislerin otomatik olarak ba\u015flamas\u0131 i\u00e7in <code>systemd<\/code> (veya <code>upstart<\/code> &#8211; Ubuntu 14.04&#8217;te varsay\u0131lan) yap\u0131land\u0131rmalar\u0131n\u0131 yap\u0131n.<br \/>\n    6.  Droplet&#8217;in d\u00fczg\u00fcn \u00e7al\u0131\u015ft\u0131\u011f\u0131ndan ve uygulaman\u0131z\u0131n eri\u015filebilir oldu\u011fundan emin olun.<br \/>\n*   <strong>G\u00f6r\u00fcnt\u00fc (Snapshot\/Custom Image) Olu\u015fturma:<\/strong><br \/>\n    *   DigitalOcean kontrol panelinden veya <code>doctl<\/code> komutuyla bu Droplet&#8217;in bir g\u00f6r\u00fcnt\u00fcs\u00fcn\u00fc (snapshot) al\u0131n. Bu g\u00f6r\u00fcnt\u00fc, yeni Droplet&#8217;ler olu\u015fturmak i\u00e7in kullan\u0131lacak temel kal\u0131p olacakt\u0131r.<br \/>\n    *   <code>doctl compute droplet-action snapshot <droplet_id> --snapshot-name my-web-app-image<\/code><\/p>\n<p>Bu &#8220;alt\u0131n g\u00f6r\u00fcnt\u00fc&#8221;, yeni Droplet&#8217;lerin h\u0131zl\u0131 bir \u015fekilde ba\u015flat\u0131lmas\u0131n\u0131 sa\u011flayacak ve her yeni Droplet&#8217;in ayn\u0131 yap\u0131land\u0131rmaya sahip olmas\u0131n\u0131 garantileyecektir.<\/p>\n<h4>2. Y\u00fck Dengeleyici Kurulumu<\/h4>\n<p>DigitalOcean Managed Load Balancer kullanarak y\u00fck dengeleyiciyi kurun.<\/p>\n<p>*   <strong>Y\u00fck Dengeleyici Olu\u015fturma:<\/strong><br \/>\n    1.  DigitalOcean kontrol panelinden veya <code>doctl<\/code> komutuyla bir Y\u00fck Dengeleyici olu\u015fturun.<br \/>\n    2.  <code>doctl compute load-balancer create --name my-app-lb --region nyc1 --forwarding-rules entry_protocol:https,entry_port:443,target_protocol:http,target_port:80,certificate_id:<your_cert_id> --health-check protocol:http,port:80,path:\/healthz<\/code> (HTTPS sonland\u0131rma i\u00e7in bir SSL sertifikas\u0131 y\u00fckledi\u011finizi varsayar. HTTP i\u00e7in <code>entry_protocol:http,entry_port:80<\/code> kullan\u0131n.)<br \/>\n    3.  Ba\u015flang\u0131\u00e7ta, y\u00fck dengeleyiciye manuel olarak birka\u00e7 Droplet ekleyebilirsiniz (alt\u0131n g\u00f6r\u00fcnt\u00fcn\u00fczden olu\u015fturdu\u011funuz Droplet&#8217;ler). Bu, uygulaman\u0131z\u0131n ilk \u00e7al\u0131\u015f\u0131r durumunu olu\u015fturur.<\/p>\n<h4>3. \u0130zleme ve E\u015fik De\u011ferlerin Belirlenmesi<\/h4>\n<p>Otomatik \u00f6l\u00e7eklenme i\u00e7in tetikleyici g\u00f6revi g\u00f6recek metrikleri ve e\u015fik de\u011ferleri belirleyin.<\/p>\n<p>*   <strong>DigitalOcean Monitoring Kurulumu:<\/strong> DigitalOcean Droplet&#8217;lerinizde varsay\u0131lan olarak izleme ajan\u0131 y\u00fckl\u00fc gelir. Bu ajan, CPU, bellek, disk ve a\u011f metriklerini otomatik olarak DigitalOcean kontrol paneline g\u00f6nderir.<br \/>\n*   <strong>E\u015fik De\u011ferlerin Belirlenmesi:<\/strong><br \/>\n    *   <strong>Scale-Out (Geni\u015fleme) Tetikleyicisi:<\/strong> \u00d6rne\u011fin, &#8220;Ortalama CPU kullan\u0131m\u0131 5 dakika boyunca %70&#8217;in \u00fczerindeyse&#8221;.<br \/>\n    *   <strong>Scale-In (Daralma) Tetikleyicisi:<\/strong> \u00d6rne\u011fin, &#8220;Ortalama CPU kullan\u0131m\u0131 15 dakika boyunca %30&#8217;un alt\u0131ndaysa&#8221;.<br \/>\n    *   Bu de\u011ferler uygulaman\u0131z\u0131n karakteristiklerine g\u00f6re optimize edilmelidir. Yanl\u0131\u015f e\u015fikler, s\u00fcrekli \u00f6l\u00e7eklenmeye veya yetersiz performansa yol a\u00e7abilir.<br \/>\n*   <strong>Metriklere Eri\u015fim:<\/strong> DigitalOcean API&#8217;si \u00fczerinden Droplet metriklerine eri\u015febilirsiniz. Bu, otomasyon beti\u011finizin mevcut durumu sorgulamas\u0131 i\u00e7in kritik \u00f6neme sahiptir.<\/p>\n<h4>4. Otomatik \u00d6l\u00e7eklenme Mant\u0131\u011f\u0131n\u0131n Geli\u015ftirilmesi<\/h4>\n<p>Bu, otomatik \u00f6l\u00e7eklenme sisteminin kalbidir. DigitalOcean API&#8217;si veya <code>doctl<\/code> kullanarak Droplet&#8217;leri ve Y\u00fck Dengeleyiciyi y\u00f6netecek bir betik yaz\u0131lmal\u0131d\u0131r. Bu betik, bir <code>cron<\/code> i\u015fi olarak belirli aral\u0131klarla (\u00f6rne\u011fin her 5 dakikada bir) \u00e7al\u0131\u015ft\u0131r\u0131labilir.<\/p>\n<h5>\u00d6l\u00e7eklenme Tetikleyicileri<\/h5>\n<p>Betik, \u00f6ncelikle t\u00fcm web uygulamas\u0131 Droplet&#8217;lerinin ortalama CPU kullan\u0131m\u0131n\u0131 veya di\u011fer ilgili metrikleri DigitalOcean API&#8217;sinden \u00e7ekmelidir.<\/p>\n<p>*   <strong>DigitalOcean Monitoring API:<\/strong> <code>https:\/\/api.digitalocean.com\/v2\/monitoring\/metrics\/droplet\/cpu<\/code> gibi endpoint&#8217;ler \u00fczerinden metrik verilerine eri\u015filebilir. Kimlik do\u011frulama i\u00e7in DigitalOcean API anahtar\u0131n\u0131z\u0131 kullanman\u0131z gerekecektir.<\/p>\n<h5>Droplet Olu\u015fturma ve Y\u00fck Dengeleyiciye Ekleme (Scale-Out)<\/h5>\n<p>E\u011fer ortalama metrik e\u015fik de\u011ferini (\u00f6rne\u011fin %70 CPU) a\u015farsa:<\/p>\n<p>1.  <strong>Yeni Droplet Olu\u015fturma:<\/strong><br \/>\n    *   DigitalOcean API&#8217;sini kullanarak daha \u00f6nce olu\u015fturdu\u011funuz &#8220;alt\u0131n g\u00f6r\u00fcnt\u00fcden&#8221; yeni bir Droplet olu\u015fturun.<br \/>\n    *   <code>doctl compute droplet create --image <image_id> --region <region> --size <size_slug> --name web-app-new --tag web-app --wait<\/code><br \/>\n    *   <code>image_id<\/code> yerine alt\u0131n g\u00f6r\u00fcnt\u00fcn\u00fcz\u00fcn ID&#8217;sini veya ad\u0131n\u0131 kullan\u0131n.<br \/>\n    *   <code>--wait<\/code> parametresi, Droplet olu\u015fturma i\u015fleminin tamamlanmas\u0131n\u0131 bekler.<br \/>\n2.  <strong>Y\u00fck Dengeleyiciye Ekleme:<\/strong><br \/>\n    *   Yeni Droplet&#8217;in IP adresini veya ID&#8217;sini al\u0131n.<br \/>\n    *   DigitalOcean API&#8217;sini kullanarak bu Droplet&#8217;i Y\u00fck Dengeleyiciye ekleyin.<br \/>\n    *   <code>doctl compute load-balancer add-droplets <load_balancer_id> --droplet-ids <new_droplet_id><\/code><br \/>\n3.  <strong>Bekleme S\u00fcresi:<\/strong> Yeni Droplet&#8217;in ba\u015flat\u0131lmas\u0131, uygulaman\u0131n y\u00fcklenmesi ve sa\u011fl\u0131k kontrollerinden ge\u00e7mesi i\u00e7in yeterli bir s\u00fcre (\u00f6rne\u011fin 2-5 dakika) bekleyin. Bu, trafi\u011fin yeni Droplet&#8217;e y\u00f6nlendirilmeden \u00f6nce haz\u0131r olmas\u0131n\u0131 sa\u011flar.<\/p>\n<h5>Droplet Silme ve Y\u00fck Dengeleyiciden \u00c7\u0131karma (Scale-In)<\/h5>\n<p>E\u011fer ortalama metrik e\u015fik de\u011ferinin (\u00f6rne\u011fin %30 CPU) alt\u0131na d\u00fc\u015ferse:<\/p>\n<p>1.  <strong>Y\u00fck Dengeleyiciden \u00c7\u0131karma:<\/strong><br \/>\n    *   En az y\u00fckl\u00fc veya en eski Droplet&#8217;lerden birini se\u00e7in (uygulaman\u0131z\u0131n minimum Droplet say\u0131s\u0131n\u0131n alt\u0131na d\u00fc\u015fmedi\u011finden emin olun).<br \/>\n    *   DigitalOcean API&#8217;sini kullanarak bu Droplet&#8217;i Y\u00fck Dengeleyiciden kald\u0131r\u0131n.<br \/>\n    *   <code>doctl compute load-balancer remove-droplets <load_balancer_id> --droplet-ids <droplet_to_remove_id><\/code><br \/>\n2.  <strong>Zarif Kapatma (Graceful Shutdown):<\/strong> Droplet&#8217;in y\u00fck dengeleyiciden \u00e7\u0131kar\u0131ld\u0131ktan sonra mevcut ba\u011flant\u0131lar\u0131 tamamlamas\u0131 i\u00e7in bir s\u00fcre (\u00f6rne\u011fin 60 saniye) bekleyin. Bu, kullan\u0131c\u0131lar\u0131n devam eden isteklerinin kesintiye u\u011framamas\u0131n\u0131 sa\u011flar.<br \/>\n3.  <strong>Droplet Silme:<\/strong><br \/>\n    *   Bekleme s\u00fcresi sonunda, DigitalOcean API&#8217;sini kullanarak Droplet&#8217;i silin.<br \/>\n    *   <code>doctl compute droplet delete <droplet_to_remove_id> --force<\/code><\/p>\n<h5>\u00d6rnek Otomasyon Senaryosu (Python\/Bash)<\/h5>\n<p>Bu otomasyon mant\u0131\u011f\u0131 Python veya Bash betikleriyle uygulanabilir. \u0130\u015fte Python ile basit bir yap\u0131:<\/p>\n<pre><code class=\"language-python\">import os\nimport time\nimport requests\nimport json\n\n<h2>DigitalOcean API Anahtar\u0131<\/h2>\nDO_API_TOKEN = os.environ.get(\"DO_API_TOKEN\")\nHEADERS = {\n    \"Content-Type\": \"application\/json\",\n    \"Authorization\": f\"Bearer {DO_API_TOKEN}\"\n}\n\n<h2>Yap\u0131land\u0131rma<\/h2>\nMIN_DROPLETS = 2\nMAX_DROPLETS = 5\nTARGET_CPU_THRESHOLD_UP = 70  # %\nTARGET_CPU_THRESHOLD_DOWN = 30 # %\nSCALE_UP_COOLDOWN = 300 # Saniye\nSCALE_DOWN_COOLDOWN = 900 # Saniye\nDROPLET_IMAGE_ID = \"your_custom_image_id_or_slug\" # Olu\u015fturdu\u011funuz alt\u0131n g\u00f6r\u00fcnt\u00fcn\u00fcn ID'si veya slug'\u0131\nLOAD_BALANCER_ID = \"your_load_balancer_id\"\nDROPLET_SIZE_SLUG = \"s-1vcpu-1gb\" # Droplet boyutu\nREGION = \"nyc1\" # Droplet b\u00f6lgesi\nTAG_NAME = \"web-app\" # Droplet'leri gruplamak i\u00e7in etiket\n\nlast_scale_up_time = 0\nlast_scale_down_time = 0\n\ndef get_droplets_by_tag(tag):\n    url = f\"https:\/\/api.digitalocean.com\/v2\/droplets?tag_name={tag}\"\n    response = requests.get(url, headers=HEADERS)\n    response.raise_for_status()\n    return response.json()[\"droplets\"]\n\ndef get_droplet_cpu_usage(droplet_id):\n    # DigitalOcean Monitoring API'sinden CPU kullan\u0131m\u0131n\u0131 \u00e7ek\n    # Bu k\u0131s\u0131m daha karma\u015f\u0131k olabilir, basitle\u015ftirilmi\u015f bir \u00f6rnek.\n    # Ger\u00e7ek uygulamada belirli bir zaman aral\u0131\u011f\u0131ndaki ortalamay\u0131 almal\u0131s\u0131n\u0131z.\n    # DigitalOcean Monitoring API'si i\u00e7in daha detayl\u0131 sorgu gerekebilir.\n    # \u00d6rnek olarak, DigitalOcean'\u0131n kendi metriklerini kullanan bir proxy veya do\u011frudan API \u00e7a\u011fr\u0131s\u0131 yap\u0131labilir.\n    # Basitlik ad\u0131na, burada bir placeholder de\u011feri d\u00f6nd\u00fcr\u00fcyoruz.\n    # Ger\u00e7ek senaryoda bu fonksiyon DigitalOcean Monitoring API'si ile entegre olmal\u0131d\u0131r.\n    # \u00d6rne\u011fin: requests.get(f\"https:\/\/api.digitalocean.com\/v2\/monitoring\/metrics\/droplet\/cpu?host_id={droplet_id}&duration=300\", headers=HEADERS)\n    # ve gelen veriden ortalamay\u0131 hesaplamak.\n    return 0 # Placeholder\n\ndef create_droplet():\n    print(\"Yeni Droplet olu\u015fturuluyor...\")\n    url = \"https:\/\/api.digitalocean.com\/v2\/droplets\"\n    data = {\n        \"name\": f\"web-app-{int(time.time())}\",\n        \"region\": REGION,\n        \"size\": DROPLET_SIZE_SLUG,\n        \"image\": DROPLET_IMAGE_ID,\n        \"tags\": [TAG_NAME]\n    }\n    response = requests.post(url, headers=HEADERS, data=json.dumps(data))\n    response.raise_for_status()\n    droplet_info = response.json()[\"droplet\"]\n    print(f\"Droplet olu\u015fturuldu: {droplet_info['name']} (ID: {droplet_info['id']})\")\n    return droplet_info\n\ndef add_droplet_to_load_balancer(droplet_id):\n    print(f\"Droplet {droplet_id} Y\u00fck Dengeleyiciye ekleniyor...\")\n    url = f\"https:\/\/api.digitalocean.com\/v2\/load_balancers\/{LOAD_BALANCER_ID}\/droplets\"\n    data = {\"droplet_ids\": [droplet_id]}\n    response = requests.post(url, headers=HEADERS, data=json.dumps(data))\n    response.raise_for_status()\n    print(f\"Droplet {droplet_id} Y\u00fck Dengeleyiciye eklendi.\")\n\ndef remove_droplet_from_load_balancer(droplet_id):\n    print(f\"Droplet {droplet_id} Y\u00fck Dengeleyiciden kald\u0131r\u0131l\u0131yor...\")\n    url = f\"https:\/\/api.digitalocean.com\/v2\/load_balancers\/{LOAD_BALANCER_ID}\/droplets\"\n    data = {\"droplet_ids\": [droplet_id]}\n    response = requests.delete(url, headers=HEADERS, data=json.dumps(data))\n    response.raise_for_status()\n    print(f\"Droplet {droplet_id} Y\u00fck Dengeleyiciden kald\u0131r\u0131ld\u0131.\")\n\ndef delete_droplet(droplet_id):\n    print(f\"Droplet {droplet_id} siliniyor...\")\n    url = f\"https:\/\/api.digitalocean.com\/v2\/droplets\/{droplet_id}\"\n    response = requests.delete(url, headers=HEADERS)\n    response.raise_for_status()\n    print(f\"Droplet {droplet_id} silindi.\")\n\ndef main():\n    global last_scale_up_time, last_scale_down_time\n    current_time = time.time()\n\n    try:\n        droplets = get_droplets_by_tag(TAG_NAME)\n        active_droplets = [d for d in droplets if d['status'] == 'active']\n        num_active_droplets = len(active_droplets)\n        print(f\"Aktif Droplet say\u0131s\u0131: {num_active_droplets}\")\n\n        if num_active_droplets == 0:\n            print(\"Hi\u00e7 aktif Droplet yok. Minimum Droplet say\u0131s\u0131na ula\u015fmak i\u00e7in Droplet olu\u015fturuluyor.\")\n            new_droplet = create_droplet()\n            # Droplet'in haz\u0131r olmas\u0131n\u0131 bekleyin\n            time.sleep(60) # Sa\u011fl\u0131k kontrol\u00fc ve ba\u015flatma i\u00e7in bekleme\n            add_droplet_to_load_balancer(new_droplet['id'])\n            return\n\n        total_cpu_usage = 0\n        for droplet in active_droplets:\n            cpu = get_droplet_cpu_usage(droplet['id']) # Ger\u00e7ek CPU kullan\u0131m\u0131n\u0131 DigitalOcean Monitoring API'sinden al\u0131n\n            total_cpu_usage += cpu\n\n        if num_active_droplets > 0:\n            average_cpu_usage = total_cpu_usage \/ num_active_droplets\n        else:\n            average_cpu_usage = 0\n\n        print(f\"Ortalama CPU kullan\u0131m\u0131: {average_cpu_usage:.2f}%\")\n\n        # Scale Up Mant\u0131\u011f\u0131\n        if average_cpu_usage > TARGET_CPU_THRESHOLD_UP and num_active_droplets < MAX_DROPLETS:\n            if (current_time - last_scale_up_time) > SCALE_UP_COOLDOWN:\n                print(\"Ortalama CPU y\u00fcksek, yeni Droplet olu\u015fturuluyor.\")\n                new_droplet = create_droplet()\n                # Droplet'in haz\u0131r olmas\u0131n\u0131 bekleyin\n                time.sleep(60) # Sa\u011fl\u0131k kontrol\u00fc ve ba\u015flatma i\u00e7in bekleme\n                add_droplet_to_load_balancer(new_droplet['id'])\n                last_scale_up_time = current_time\n            else:\n                print(\"Scale-up bekleme s\u00fcresi i\u00e7inde.\")\n        \n        # Scale Down Mant\u0131\u011f\u0131\n        elif average_cpu_usage < TARGET_CPU_THRESHOLD_DOWN and num_active_droplets > MIN_DROPLETS:\n            if (current_time - last_scale_down_time) > SCALE_DOWN_COOLDOWN:\n                print(\"Ortalama CPU d\u00fc\u015f\u00fck, Droplet siliniyor.\")\n                # En az y\u00fckl\u00fc veya en eski Droplet'i se\u00e7in (burada basitle\u015ftirilmi\u015f: rastgele birini se\u00e7elim)\n                droplet_to_remove = active_droplets[0] \n                \n                remove_droplet_from_load_balancer(droplet_to_remove['id'])\n                time.sleep(60) # Graceful shutdown i\u00e7in bekleme\n                delete_droplet(droplet_to_remove['id'])\n                last_scale_down_time = current_time\n            else:\n                print(\"Scale-down bekleme s\u00fcresi i\u00e7inde.\")\n        else:\n            print(\"\u00d6l\u00e7eklenme e\u015fikleri kar\u015f\u0131lanmad\u0131.\")\n\n    except requests.exceptions.RequestException as e:\n        print(f\"API Hatas\u0131: {e}\")\n    except Exception as e:\n        print(f\"Beklenmeyen Hata: {e}\")\n\nif __name__ == \"__main__\":\n    main()<\/code><\/pre>\n<p><strong>Not:<\/strong> Yukar\u0131daki Python beti\u011fi, DigitalOcean API&#8217;si ile etkile\u015fim kurmak i\u00e7in <code>requests<\/code> k\u00fct\u00fcphanesini kullan\u0131r. <code>get_droplet_cpu_usage<\/code> fonksiyonu, DigitalOcean Monitoring API&#8217;sinden ger\u00e7ek metrikleri \u00e7ekecek \u015fekilde doldurulmal\u0131d\u0131r. Bu, API \u00e7a\u011fr\u0131lar\u0131n\u0131n ve JSON yan\u0131tlar\u0131n\u0131n i\u015flenmesini gerektirecektir. Ayr\u0131ca, <code>DROPLET_IMAGE_ID<\/code> ve <code>LOAD_BALANCER_ID<\/code> de\u011fi\u015fkenlerini kendi de\u011ferlerinizle g\u00fcncellemeniz gerekmektedir. Bu betik, bir <code>cron<\/code> i\u015fi olarak d\u00fczenli aral\u0131klarla \u00e7al\u0131\u015facak \u015fekilde ayarlanmal\u0131d\u0131r.<\/p>\n<h4>5. Uygulama Da\u011f\u0131t\u0131m\u0131 ve G\u00fcncelleme Stratejileri<\/h4>\n<p>Otomatik \u00f6l\u00e7eklenme ortam\u0131nda uygulama g\u00fcncellemeleri, &#8220;alt\u0131n g\u00f6r\u00fcnt\u00fc&#8221; yakla\u015f\u0131m\u0131yla daha kolay y\u00f6netilir. Yeni bir uygulama s\u00fcr\u00fcm\u00fc yay\u0131nland\u0131\u011f\u0131nda:<\/p>\n<p>1.  Mevcut &#8220;alt\u0131n g\u00f6r\u00fcnt\u00fcn\u00fczden&#8221; yeni bir Droplet olu\u015fturun.<br \/>\n2.  Bu yeni Droplet \u00fczerine uygulaman\u0131n yeni s\u00fcr\u00fcm\u00fcn\u00fc da\u011f\u0131t\u0131n ve test edin.<br \/>\n3.  Bu yeni Droplet&#8217;in bir g\u00f6r\u00fcnt\u00fcs\u00fcn\u00fc al\u0131n. Bu, yeni &#8220;alt\u0131n g\u00f6r\u00fcnt\u00fcn\u00fcz&#8221; olur.<br \/>\n4.  Otomasyon beti\u011finizi, Droplet olu\u015ftururken bu yeni g\u00f6r\u00fcnt\u00fcy\u00fc kullanacak \u015fekilde g\u00fcncelleyin.<br \/>\n5.  Mevcut Droplet&#8217;leri yava\u015f yava\u015f yeni g\u00f6r\u00fcnt\u00fclerden olu\u015fturulanlarla de\u011fi\u015ftirin (rolling update). Bu, hizmet kesintisi olmadan g\u00fcncelleme yapman\u0131z\u0131 sa\u011flar.<\/p>\n<h3>Veritaban\u0131 \u00d6l\u00e7eklenmesi ve Ek Optimizasyonlar<\/h3>\n<p>Web uygulamas\u0131n\u0131n kendisi \u00f6l\u00e7eklenirken, veritaban\u0131 genellikle ayr\u0131 bir zorluk k\u00fcmesi sunar.<\/p>\n<h4>Veritaban\u0131 \u00d6l\u00e7eklenmesi Yakla\u015f\u0131mlar\u0131<\/h4>\n<p>*   <strong>Ayr\u0131 Droplet:<\/strong> Veritaban\u0131n\u0131 web Droplet&#8217;lerinden ayr\u0131 bir Droplet \u00fczerinde \u00e7al\u0131\u015ft\u0131rmak ilk ad\u0131md\u0131r.<br \/>\n*   <strong>DigitalOcean Managed Databases:<\/strong> DigitalOcean&#8217;\u0131n y\u00f6netilen veritaban\u0131 hizmetleri (PostgreSQL, MySQL, Redis) \u00f6l\u00e7eklenebilirlik, yedeklilik ve bak\u0131m y\u00fck\u00fcn\u00fc hafifletme a\u00e7\u0131s\u0131ndan b\u00fcy\u00fck avantajlar sunar. Bu hizmetler, otomatik yedeklemeler, replikalar ve dikey \u00f6l\u00e7eklenme se\u00e7enekleri sunar.<br \/>\n*   <strong>Read Replicas:<\/strong> Okuma yo\u011fun uygulamalar i\u00e7in veritaban\u0131n\u0131n okuma replikalar\u0131 olu\u015fturulabilir. Uygulama okuma sorgular\u0131n\u0131 replikalara, yazma sorgular\u0131n\u0131 ana veritaban\u0131na y\u00f6nlendirir.<br \/>\n*   <strong>Sharding:<\/strong> \u00c7ok b\u00fcy\u00fck veri k\u00fcmeleri ve y\u00fcksek yazma\/okuma y\u00fckleri i\u00e7in veritaban\u0131n\u0131 par\u00e7alara ay\u0131rmak (sharding) gerekebilir, ancak bu uygulama mimarisinde \u00f6nemli de\u011fi\u015fiklikler gerektirir.<\/p>\n<h4>\u00d6nbellekleme (Caching) ve CDN Kullan\u0131m\u0131<\/h4>\n<p>Otomatik \u00f6l\u00e7eklenmeyi destekleyen ek optimizasyonlar:<\/p>\n<p>*   <strong>Uygulama \u0130\u00e7i \u00d6nbellekleme:<\/strong> S\u0131k eri\u015filen verileri veya hesaplama yo\u011fun sonu\u00e7lar\u0131 Redis veya Memcached gibi in-memory \u00f6nbelleklerde tutmak, veritaban\u0131 y\u00fck\u00fcn\u00fc azalt\u0131r ve uygulama yan\u0131t s\u00fcrelerini h\u0131zland\u0131r\u0131r.<br \/>\n*   <strong>CDN (Content Delivery Network):<\/strong> Statik i\u00e7erikleri (resimler, CSS, JavaScript) CDN \u00fczerinden sunmak, ana sunucular\u0131n y\u00fck\u00fcn\u00fc azalt\u0131r ve son kullan\u0131c\u0131ya daha yak\u0131n sunuculardan i\u00e7erik sa\u011flayarak performans\u0131 art\u0131r\u0131r. Cloudflare, DigitalOcean Spaces CDN gibi hizmetler kullan\u0131labilir.<\/p>\n<h3>Kar\u015f\u0131la\u015f\u0131labilecek Zorluklar ve En \u0130yi Uygulamalar<\/h3>\n<p>Otomatik \u00f6l\u00e7eklenme kurulumu ve y\u00f6netimi s\u0131ras\u0131nda baz\u0131 zorluklarla kar\u015f\u0131la\u015f\u0131labilir ve bu zorluklar\u0131n \u00fcstesinden gelmek i\u00e7in belirli en iyi uygulamalar mevcuttur.<\/p>\n<h4>Uygulaman\u0131n Durumsuz Yap\u0131s\u0131<\/h4>\n<p>En b\u00fcy\u00fck zorluklardan biri, uygulaman\u0131n ger\u00e7ekten durumsuz olmas\u0131n\u0131 sa\u011flamakt\u0131r. Oturum verilerini, kullan\u0131c\u0131ya \u00f6zel ge\u00e7ici dosyalar\u0131 veya di\u011fer durum bilgilerini yerel Droplet&#8217;te saklamak, \u00f6l\u00e7eklenme s\u0131ras\u0131nda veri kayb\u0131na veya tutars\u0131zl\u0131klara yol a\u00e7ar. T\u00fcm durum bilgilerinin harici ve \u00f6l\u00e7eklenebilir bir depolama \u00e7\u00f6z\u00fcm\u00fcnde (veritaban\u0131, Redis, S3 uyumlu depolama) tutuldu\u011fundan emin olun.<\/p>\n<h4>Oturum Y\u00f6netimi<\/h4>\n<p>Web uygulamalar\u0131nda kullan\u0131c\u0131 oturumlar\u0131 genellikle bir zorluktur. Oturumlar, sunucular aras\u0131nda payla\u015f\u0131labilir olmal\u0131d\u0131r. Redis, Memcached veya veritaban\u0131 gibi merkezi bir oturum deposu kullanmak bu sorunu \u00e7\u00f6zer.<\/p>\n<h4>Zarif Kapatma (Graceful Shutdown)<\/h4>\n<p>Bir Droplet \u00f6l\u00e7eklenme daralmas\u0131 (scale-in) nedeniyle kapat\u0131l\u0131rken, o an i\u015flenmekte olan isteklerin tamamlanmas\u0131na izin verilmelidir. Y\u00fck dengeleyiciden \u00e7\u0131kar\u0131ld\u0131ktan sonra Droplet&#8217;e belirli bir &#8220;bo\u015faltma s\u00fcresi&#8221; (draining period) tan\u0131mak, mevcut ba\u011flant\u0131lar\u0131n kesintiye u\u011framamas\u0131n\u0131 sa\u011flar. Otomasyon beti\u011finizde bu bekleme s\u00fcresi g\u00f6z \u00f6n\u00fcnde bulundurulmal\u0131d\u0131r.<\/p>\n<h4>Maliyet Y\u00f6netimi ve Optimizasyon<\/h4>\n<p>Otomatik \u00f6l\u00e7eklenme, maliyetleri optimize etme potansiyeli sunsa da, yanl\u0131\u015f yap\u0131land\u0131r\u0131ld\u0131\u011f\u0131nda gereksiz yere Droplet&#8217;lerin \u00e7al\u0131\u015fmas\u0131na neden olabilir.<\/p>\n<p>*   <strong>Minimum ve Maksimum Droplet Say\u0131s\u0131:<\/strong> Uygulaman\u0131z\u0131n her zaman \u00e7al\u0131\u015fmas\u0131 gereken minimum Droplet say\u0131s\u0131n\u0131 ve dayanabilece\u011fi maksimum Droplet say\u0131s\u0131n\u0131 belirleyin.<br \/>\n*   <strong>So\u011fuma S\u00fcreleri (Cooldown Periods):<\/strong> \u00d6l\u00e7eklenme eylemleri aras\u0131nda yeterli so\u011fuma s\u00fcreleri (cooldown periods) tan\u0131mlay\u0131n. Bu, sistemin s\u00fcrekli olarak Droplet ekleyip \u00e7\u0131karmas\u0131n\u0131 \u00f6nler ve kararl\u0131l\u0131\u011f\u0131 art\u0131r\u0131r.<br \/>\n*   <strong>Metrik E\u015fikleri:<\/strong> Metrik e\u015fiklerini dikkatlice ayarlay\u0131n. \u00c7ok d\u00fc\u015f\u00fck e\u015fikler gereksiz \u00f6l\u00e7eklenmeye, \u00e7ok y\u00fcksek e\u015fikler ise performans sorunlar\u0131na yol a\u00e7abilir.<\/p>\n<h4>G\u00fcvenlik Konular\u0131<\/h4>\n<p>*   <strong>API Anahtarlar\u0131:<\/strong> DigitalOcean API anahtar\u0131n\u0131z \u00e7ok g\u00fc\u00e7l\u00fc yetkilere sahiptir. Bu anahtar\u0131 g\u00fcvenli bir \u015fekilde saklay\u0131n (ortam de\u011fi\u015fkenleri, s\u0131r y\u00f6netimi ara\u00e7lar\u0131). Sadece gerekli izinlere sahip bir anahtar kullan\u0131n.<br \/>\n*   <strong>G\u00fcvenlik Duvarlar\u0131:<\/strong> Droplet&#8217;leriniz ve y\u00fck dengeleyiciniz i\u00e7in g\u00fcvenlik duvar\u0131 kurallar\u0131n\u0131 (DigitalOcean Cloud Firewalls) yap\u0131land\u0131r\u0131n. Yaln\u0131zca gerekli portlar\u0131n ve IP adreslerinin eri\u015fimine izin verin.<\/p>\n<h4>Test Etme ve \u0130zleme<\/h4>\n<p>Otomatik \u00f6l\u00e7eklenme sisteminizi d\u00fczenli olarak test edin. Y\u00fcksek trafik sim\u00fclasyonlar\u0131 yaparak \u00f6l\u00e7eklenme kurallar\u0131n\u0131z\u0131n beklendi\u011fi gibi \u00e7al\u0131\u015ft\u0131\u011f\u0131ndan emin olun. \u00d6l\u00e7eklenme eylemlerini, Droplet durumlar\u0131n\u0131 ve uygulama performans\u0131n\u0131 s\u00fcrekli izleyin. G\u00fcnl\u00fck kay\u0131tlar\u0131 (logging) merkezi bir yerde toplay\u0131n (\u00f6rne\u011fin ELK Stack, Grafana Loki).<\/p>\n<h4>Altyap\u0131y\u0131 Kod Olarak Y\u00f6netme (IaC)<\/h4>\n<p>Otomasyon betiklerinizi, yap\u0131land\u0131rma dosyalar\u0131n\u0131z\u0131 ve DigitalOcean kaynak tan\u0131mlar\u0131n\u0131z\u0131 (Droplet boyutlar\u0131, imaj ID&#8217;leri vb.) versiyon kontrol sistemlerinde (Git) y\u00f6netin. Terraform gibi ara\u00e7lar, DigitalOcean altyap\u0131n\u0131z\u0131 kod olarak tan\u0131mlaman\u0131za olanak tan\u0131r ve bu da altyap\u0131n\u0131n tutarl\u0131l\u0131\u011f\u0131n\u0131 ve tekrarlanabilirli\u011fini art\u0131r\u0131r.<\/p>\n<h3>Geli\u015fmi\u015f \u00d6l\u00e7eklenme Yakla\u015f\u0131mlar\u0131<\/h3>\n<p>Bu makale Ubuntu 14.04 Droplet&#8217;leri \u00fczerinde temel otomatik \u00f6l\u00e7eklenmeye odaklan\u0131rken, modern bulut mimarilerinde daha geli\u015fmi\u015f yakla\u015f\u0131mlar da mevcuttur.<\/p>\n<h4>Terraform ile Altyap\u0131 Y\u00f6netimi<\/h4>\n<p>Terraform, HashiCorp taraf\u0131ndan geli\u015ftirilen bir Altyap\u0131 Kod Olarak (Infrastructure as Code &#8211; IaC) arac\u0131d\u0131r. DigitalOcean sa\u011flay\u0131c\u0131s\u0131 ile entegre olarak, Droplet&#8217;ler, Y\u00fck Dengeleyiciler, G\u00fcvenlik Duvarlar\u0131 ve di\u011fer t\u00fcm DigitalOcean kaynaklar\u0131n\u0131 HCL (HashiCorp Configuration Language) kullanarak tan\u0131mlaman\u0131za olanak tan\u0131r. Bu, altyap\u0131n\u0131z\u0131n versiyonlanabilir, tekrarlanabilir ve otomatikle\u015ftirilebilir olmas\u0131n\u0131 sa\u011flar. Otomatik \u00f6l\u00e7eklenme beti\u011finiz, Terraform taraf\u0131ndan tan\u0131mlanan kaynaklarla daha entegre \u00e7al\u0131\u015fabilir.<\/p>\n<h4>Kapsay\u0131c\u0131la\u015ft\u0131rma (Containerization) ve Kubernetes<\/h4>\n<p>Uygulamalar\u0131n\u0131z\u0131 Docker gibi kapsay\u0131c\u0131 teknolojileriyle paketlemek ve Kubernetes gibi kapsay\u0131c\u0131 orkestrasyon platformlar\u0131 \u00fczerinde \u00e7al\u0131\u015ft\u0131rmak, \u00f6l\u00e7eklenebilirlik ve da\u011f\u0131t\u0131m y\u00f6netimini bir \u00fcst seviyeye ta\u015f\u0131r. Kubernetes, yerle\u015fik otomatik \u00f6l\u00e7eklenme (yatay pod otomatik \u00f6l\u00e7ekleyicisi &#8211; HPA) yeteneklerine sahiptir ve uygulamalar\u0131n\u0131z\u0131n kaynak kullan\u0131m\u0131na g\u00f6re otomatik olarak \u00f6l\u00e7eklenmesini sa\u011flar. DigitalOcean Kubernetes (DOKS), bu karma\u015f\u0131kl\u0131\u011f\u0131 y\u00f6netilen bir hizmet olarak sunar. Ubuntu 14.04 Droplet&#8217;leri \u00fczerinde kapsay\u0131c\u0131la\u015ft\u0131rma m\u00fcmk\u00fcn olsa da, Kubernetes genellikle daha modern i\u015fletim sistemi s\u00fcr\u00fcmleri ve daha g\u00fc\u00e7l\u00fc Droplet&#8217;ler \u00fczerinde daha iyi performans g\u00f6sterir.<\/p>\n<h3>Sonu\u00e7<\/h3>\n<p>Web uygulaman\u0131z\u0131n DigitalOcean Ubuntu 14.04 Droplet&#8217;leri \u00fczerinde otomatik \u00f6l\u00e7eklenmesi, uygulaman\u0131z\u0131n de\u011fi\u015fen trafik y\u00fcklerine dinamik olarak uyum sa\u011flamas\u0131na olanak tan\u0131yan g\u00fc\u00e7l\u00fc bir yakla\u015f\u0131md\u0131r. Bu, hem kullan\u0131c\u0131 deneyimini iyile\u015ftirir hem de altyap\u0131 maliyetlerini optimize eder. Ba\u015far\u0131l\u0131 bir otomatik \u00f6l\u00e7eklenme sistemi kurmak; uygulaman\u0131n durumsuz olmas\u0131n\u0131 sa\u011flamak, do\u011fru izleme metriklerini ve e\u015fik de\u011ferlerini belirlemek, DigitalOcean API&#8217;sini kullanarak Droplet ve Y\u00fck Dengeleyici y\u00f6netimini otomatikle\u015ftirmek ve sa\u011flam bir yap\u0131land\u0131rma y\u00f6netimi stratejisi uygulamakla m\u00fcmk\u00fcnd\u00fcr.<\/p>\n<p>Her ne kadar bu makale Ubuntu 14.04&#8217;e odaklanm\u0131\u015f olsa da, temel prensipler ve DigitalOcean API kullan\u0131m\u0131, daha g\u00fcncel i\u015fletim sistemi s\u00fcr\u00fcmleri i\u00e7in de ge\u00e7erlidir. G\u00fcvenlik ve performans a\u00e7\u0131s\u0131ndan, \u00fcretim ortamlar\u0131nda her zaman en g\u00fcncel ve desteklenen i\u015fletim sistemi s\u00fcr\u00fcmlerinin kullan\u0131lmas\u0131 \u015fiddetle tavsiye edilir. Otomatik \u00f6l\u00e7eklenme, bir kez kurulan ve unutulan bir sistem de\u011fildir; s\u00fcrekli izleme, test etme ve iyile\u015ftirme gerektiren dinamik bir s\u00fcre\u00e7tir. Do\u011fru yap\u0131land\u0131r\u0131ld\u0131\u011f\u0131nda, web uygulaman\u0131z\u0131n kesintisiz ve y\u00fcksek performansl\u0131 \u00e7al\u0131\u015fmas\u0131n\u0131 sa\u011flayan kritik bir bile\u015fen haline gelecektir.<\/body><\/p>\n","protected":false},"excerpt":{"rendered":"Web Uygulaman\u0131z\u0131n DigitalOcean Ubuntu 14.04 Droplet&#8217;leri \u00dczerinde Otomatik \u00d6l\u00e7eklenmesi\nBu makale, web uygulamalar\u0131n\u0131n de\u011fi\u015fen trafik y\u00fckle","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":[1468],"tags":[],"class_list":{"0":"post-31911","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-ubuntu","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>Web Uygulaman\u0131z\u0131n DigitalOcean Ubuntu 14.04 Droplet&#039;leri \u00dczerinde Otomatik \u00d6l\u00e7eklenmesi - Kodlar\u0131n Gizemli D\u00fcnyas\u0131<\/title>\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\/web-uygulamanizin-digitalocean-ubuntu-14-04-dropletleri-uzerinde-otomatik-olceklenmesi\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Web Uygulaman\u0131z\u0131n DigitalOcean Ubuntu 14.04 Droplet&#039;leri \u00dczerinde Otomatik \u00d6l\u00e7eklenmesi\" \/>\n<meta property=\"og:description\" content=\"Web Uygulaman\u0131z\u0131n DigitalOcean Ubuntu 14.04 Droplet&#039;leri \u00dczerinde Otomatik \u00d6l\u00e7eklenmesi Bu makale, web uygulamalar\u0131n\u0131n de\u011fi\u015fen trafik y\u00fckle\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/web-uygulamanizin-digitalocean-ubuntu-14-04-dropletleri-uzerinde-otomatik-olceklenmesi\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2025-10-15T10:41:28+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=\"24 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/web-uygulamanizin-digitalocean-ubuntu-14-04-dropletleri-uzerinde-otomatik-olceklenmesi\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/web-uygulamanizin-digitalocean-ubuntu-14-04-dropletleri-uzerinde-otomatik-olceklenmesi\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"Web Uygulaman\u0131z\u0131n DigitalOcean Ubuntu 14.04 Droplet&#8217;leri \u00dczerinde Otomatik \u00d6l\u00e7eklenmesi\",\"datePublished\":\"2025-10-15T10:41:28+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/web-uygulamanizin-digitalocean-ubuntu-14-04-dropletleri-uzerinde-otomatik-olceklenmesi\/\"},\"wordCount\":3930,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"articleSection\":[\"Ubuntu\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/web-uygulamanizin-digitalocean-ubuntu-14-04-dropletleri-uzerinde-otomatik-olceklenmesi\/#respond\"]}],\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/web-uygulamanizin-digitalocean-ubuntu-14-04-dropletleri-uzerinde-otomatik-olceklenmesi\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/web-uygulamanizin-digitalocean-ubuntu-14-04-dropletleri-uzerinde-otomatik-olceklenmesi\/\",\"name\":\"Web Uygulaman\u0131z\u0131n DigitalOcean Ubuntu 14.04 Droplet'leri \u00dczerinde Otomatik \u00d6l\u00e7eklenmesi - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2025-10-15T10:41:28+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/web-uygulamanizin-digitalocean-ubuntu-14-04-dropletleri-uzerinde-otomatik-olceklenmesi\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/web-uygulamanizin-digitalocean-ubuntu-14-04-dropletleri-uzerinde-otomatik-olceklenmesi\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/web-uygulamanizin-digitalocean-ubuntu-14-04-dropletleri-uzerinde-otomatik-olceklenmesi\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Web Uygulaman\u0131z\u0131n DigitalOcean Ubuntu 14.04 Droplet&#8217;leri \u00dczerinde Otomatik \u00d6l\u00e7eklenmesi\"}]},{\"@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":"Web Uygulaman\u0131z\u0131n DigitalOcean Ubuntu 14.04 Droplet'leri \u00dczerinde Otomatik \u00d6l\u00e7eklenmesi - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","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\/web-uygulamanizin-digitalocean-ubuntu-14-04-dropletleri-uzerinde-otomatik-olceklenmesi\/","og_locale":"tr_TR","og_type":"article","og_title":"Web Uygulaman\u0131z\u0131n DigitalOcean Ubuntu 14.04 Droplet'leri \u00dczerinde Otomatik \u00d6l\u00e7eklenmesi","og_description":"Web Uygulaman\u0131z\u0131n DigitalOcean Ubuntu 14.04 Droplet'leri \u00dczerinde Otomatik \u00d6l\u00e7eklenmesi Bu makale, web uygulamalar\u0131n\u0131n de\u011fi\u015fen trafik y\u00fckle","og_url":"https:\/\/fatihsoysal.com\/blog\/web-uygulamanizin-digitalocean-ubuntu-14-04-dropletleri-uzerinde-otomatik-olceklenmesi\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2025-10-15T10:41:28+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"24 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/web-uygulamanizin-digitalocean-ubuntu-14-04-dropletleri-uzerinde-otomatik-olceklenmesi\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/web-uygulamanizin-digitalocean-ubuntu-14-04-dropletleri-uzerinde-otomatik-olceklenmesi\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"Web Uygulaman\u0131z\u0131n DigitalOcean Ubuntu 14.04 Droplet&#8217;leri \u00dczerinde Otomatik \u00d6l\u00e7eklenmesi","datePublished":"2025-10-15T10:41:28+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/web-uygulamanizin-digitalocean-ubuntu-14-04-dropletleri-uzerinde-otomatik-olceklenmesi\/"},"wordCount":3930,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"articleSection":["Ubuntu"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/web-uygulamanizin-digitalocean-ubuntu-14-04-dropletleri-uzerinde-otomatik-olceklenmesi\/#respond"]}],"copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/web-uygulamanizin-digitalocean-ubuntu-14-04-dropletleri-uzerinde-otomatik-olceklenmesi\/","url":"https:\/\/fatihsoysal.com\/blog\/web-uygulamanizin-digitalocean-ubuntu-14-04-dropletleri-uzerinde-otomatik-olceklenmesi\/","name":"Web Uygulaman\u0131z\u0131n DigitalOcean Ubuntu 14.04 Droplet'leri \u00dczerinde Otomatik \u00d6l\u00e7eklenmesi - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2025-10-15T10:41:28+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/web-uygulamanizin-digitalocean-ubuntu-14-04-dropletleri-uzerinde-otomatik-olceklenmesi\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/web-uygulamanizin-digitalocean-ubuntu-14-04-dropletleri-uzerinde-otomatik-olceklenmesi\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/web-uygulamanizin-digitalocean-ubuntu-14-04-dropletleri-uzerinde-otomatik-olceklenmesi\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Web Uygulaman\u0131z\u0131n DigitalOcean Ubuntu 14.04 Droplet&#8217;leri \u00dczerinde Otomatik \u00d6l\u00e7eklenmesi"}]},{"@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\/31911","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=31911"}],"version-history":[{"count":1,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/31911\/revisions"}],"predecessor-version":[{"id":31912,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/31911\/revisions\/31912"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=31911"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=31911"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=31911"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}