{"id":33862,"date":"2025-11-08T04:01:19","date_gmt":"2025-11-08T01:01:19","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/tek-bir-gerilmis-goruntuden-aws-lambda-kod-gecisi-ve-ci-cd-kurulumuna-yolculuk\/"},"modified":"2025-11-08T04:01:19","modified_gmt":"2025-11-08T01:01:19","slug":"tek-bir-gerilmis-goruntuden-aws-lambda-kod-gecisi-ve-ci-cd-kurulumuna-yolculuk","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/tek-bir-gerilmis-goruntuden-aws-lambda-kod-gecisi-ve-ci-cd-kurulumuna-yolculuk\/","title":{"rendered":"Tek Bir Gerilmi\u015f G\u00f6r\u00fcnt\u00fcden AWS Lambda Kod Ge\u00e7i\u015fi ve CI\/CD Kurulumuna Yolculuk"},"content":{"rendered":"<p>Tek Bir Gerilmi\u015f G\u00f6r\u00fcnt\u00fcden AWS Lambda Kod Ge\u00e7i\u015fi ve CI\/CD Kurulumuna Yolculuk<\/p>\n<p><body><\/p>\n<p>Eski sistemlerdeki verimsiz manuel s\u00fcre\u00e7lerden b\u0131kt\u0131n\u0131z m\u0131? Tek bir g\u00f6rsel i\u015fleme ihtiyac\u0131ndan do\u011fan b\u00fcy\u00fck bir d\u00f6n\u00fc\u015f\u00fcm hikayesiyle, AWS Lambda&#8217;ya kod ge\u00e7i\u015fi ve modern CI\/CD boru hatt\u0131 kurulumunu ad\u0131m ad\u0131m ke\u015ffedin. Bu makale, sunucusuz mimarinin g\u00fcc\u00fcn\u00fc ve otomatikle\u015ftirilmi\u015f da\u011f\u0131t\u0131m\u0131n i\u015f ak\u0131\u015f\u0131n\u0131za kataca\u011f\u0131 de\u011feri derinlemesine inceleyerek, sizi bu heyecan verici d\u00fcnyaya davet ediyor.<\/p>\n<p>Her \u015fey, bir zamanlar g\u00f6zden ka\u00e7\u0131r\u0131lan, olduk\u00e7a basit g\u00f6r\u00fcnen bir problemle ba\u015flad\u0131: &#8220;Tek bir gerilmi\u015f g\u00f6r\u00fcnt\u00fc.&#8221; Kula\u011fa ne kadar \u00f6nemsiz gelse de, bu ifade asl\u0131nda bir\u00e7ok \u015firketin kar\u015f\u0131la\u015ft\u0131\u011f\u0131 b\u00fcy\u00fck bir verimsizli\u011fin metaforuydu. Belki bir e-ticaret sitesinde y\u00fcklenen \u00fcr\u00fcn g\u00f6rsellerinin belirli standartlara getirilmesi gerekiyordu, belki de bir medya platformunda farkl\u0131 cihazlar i\u00e7in i\u00e7erik optimizasyonu yap\u0131l\u0131yordu. Durum ne olursa olsun, bu basit i\u015flev, her seferinde manuel m\u00fcdahale gerektiren, kaynaklar\u0131 bo\u015f yere t\u00fcketen ve zaman alan bir darbo\u011faz haline gelmi\u015fti. Y\u00f6neticiler, basit bir resim boyutland\u0131rma veya s\u0131k\u0131\u015ft\u0131rma i\u015fleminin neden bu kadar uzun s\u00fcrd\u00fc\u011f\u00fcn\u00fc, neden s\u00fcrekli insan hatas\u0131na a\u00e7\u0131k oldu\u011funu anlamakta zorlan\u0131yordu. Geli\u015ftiriciler ise rutin g\u00f6revler y\u00fcz\u00fcnden daha yenilik\u00e7i projelere odaklanam\u0131yordu. Bu t\u00fcrden tekrarlayan, ancak kritik olan g\u00f6revler, genellikle eski sistemler \u00fczerinde \u00e7al\u0131\u015fan, bak\u0131m\u0131 zor ve \u00f6l\u00e7eklenmesi imkans\u0131z \u00e7\u00f6z\u00fcmlerle y\u00fcr\u00fct\u00fcl\u00fcyordu. \u0130\u015fte tam bu noktada, \u201ctek bir gerilmi\u015f g\u00f6r\u00fcnt\u00fc\u201d meselesi, bize daha modern, daha esnek ve daha verimli bir yakla\u015f\u0131m benimseme ihtiyac\u0131n\u0131 hayk\u0131rd\u0131: Sunucusuz mimari ve s\u00fcrekli entegrasyon\/s\u00fcrekli teslimat (CI\/CD) y\u00f6ntemleri.<\/p>\n<p>Bu d\u00f6n\u00fc\u015f\u00fcm yolculu\u011fu, sadece o tek bir g\u00f6r\u00fcnt\u00fcn\u00fcn kaderini de\u011fi\u015ftirmekle kalmayacak, ayn\u0131 zamanda t\u00fcm i\u015f s\u00fcre\u00e7lerini ve yaz\u0131l\u0131m geli\u015ftirme yakla\u015f\u0131mlar\u0131n\u0131 k\u00f6kten sarsacakt\u0131. Geleneksel sunucu y\u00f6netimi y\u00fck\u00fcnden kurtulmak, altyap\u0131y\u0131 otomatikle\u015ftirmek ve sadece kullan\u0131lan kaynak kadar \u00f6deme yapmak gibi vaatler, bu maceran\u0131n temel motivasyonlar\u0131yd\u0131. Peki, b\u00f6ylesine k\u00fc\u00e7\u00fck bir ba\u015flang\u0131\u00e7 noktas\u0131ndan, kapsaml\u0131 bir kod ge\u00e7i\u015fi ve CI\/CD kurulumuna nas\u0131l ula\u015f\u0131ld\u0131? \u0130\u015fte bu makale, ad\u0131m ad\u0131m bu heyecan verici s\u00fcreci, kar\u015f\u0131la\u015f\u0131lan zorluklar\u0131 ve elde edilen ba\u015far\u0131lar\u0131 anlatarak, kendi projeleriniz i\u00e7in ilham alman\u0131z\u0131 sa\u011flayacak. Okuyucunun dikkatini \u00e7eken bu problem, asl\u0131nda hepimizin dijital d\u00f6n\u00fc\u015f\u00fcm yolculu\u011funda bir noktada kar\u015f\u0131la\u015ft\u0131\u011f\u0131 bir yans\u0131mad\u0131r. S\u00fcrekli manuel m\u00fcdahalelerle bo\u011fu\u015fmak yerine, neden i\u015f y\u00fck\u00fcm\u00fcz\u00fc ak\u0131ll\u0131ca otomatikle\u015ftirmeyelim? \u0130\u015fte bu sorunun cevab\u0131, bizi AWS Lambda ve CI\/CD d\u00fcnyas\u0131na ta\u015f\u0131yacak.<\/p>\n<div class=\"uzman-ipucu\">\n        Uzman \u0130pucu: K\u00fc\u00e7\u00fck, tekrarlayan ve verimsiz g\u00f6r\u00fcnen g\u00f6revleri belirlemek, \u00e7o\u011fu zaman b\u00fcy\u00fck bir d\u00f6n\u00fc\u015f\u00fcm projesinin ilk ad\u0131m\u0131d\u0131r. Bu &#8220;darbo\u011fazlar\u0131&#8221; tespit edin ve otomasyon potansiyellerini de\u011ferlendirin.\n    <\/div>\n<h2 id=\"serverless-ci-cd-temelleri\">Serverless ve CI\/CD Temelleri: AWS Lambda ve Otomatik Da\u011f\u0131t\u0131m\u0131n S\u0131rlar\u0131 Nelerdir?<\/h2>\n<p>Modern yaz\u0131l\u0131m geli\u015ftirme d\u00fcnyas\u0131nda rekabet\u00e7i kalabilmek i\u00e7in h\u0131z, \u00f6l\u00e7eklenebilirlik ve verimlilik olmazsa olmazd\u0131r. Bu hedeflere ula\u015fman\u0131n en etkili yollar\u0131ndan ikisi, sunucusuz (serverless) mimari ve s\u00fcrekli entegrasyon\/s\u00fcrekli teslimat (CI\/CD) uygulamalar\u0131d\u0131r. Tek bir gerilmi\u015f g\u00f6r\u00fcnt\u00fcn\u00fcn yaratt\u0131\u011f\u0131 s\u0131k\u0131nt\u0131lardan yola \u00e7\u0131karak, \u00f6nce bu temel kavramlara derinlemesine bir bak\u0131\u015f atal\u0131m. \u00c7\u00fcnk\u00fc bu kavramlar, sadece teknik bir tercih de\u011fil, ayn\u0131 zamanda i\u015f s\u00fcre\u00e7lerinizi d\u00f6n\u00fc\u015ft\u00fcrecek stratejik bir karard\u0131r.<\/p>\n<h3>AWS Lambda ile Gelece\u011fe Y\u00f6nelik Ad\u0131mlar Nas\u0131l At\u0131l\u0131r?<\/h3>\n<p>AWS Lambda, Amazon Web Services&#8217;\u0131n amiral gemisi sunucusuz bilgi i\u015flem hizmetidir. Geli\u015ftiricilerin, sunucular\u0131 tedarik etme veya y\u00f6netme endi\u015fesi olmadan kodlar\u0131n\u0131 \u00e7al\u0131\u015ft\u0131rmas\u0131na olanak tan\u0131r. K\u0131saca, &#8220;Fonksiyon Olarak Hizmet&#8221; (FaaS) modelinin \u00f6nc\u00fclerinden biridir. Lambda&#8217;n\u0131n temelinde, kodunuzun yaln\u0131zca ihtiya\u00e7 duyuldu\u011funda \u00e7al\u0131\u015ft\u0131r\u0131lmas\u0131 ve sadece kullan\u0131ld\u0131\u011f\u0131 s\u00fcre boyunca \u00fccret \u00f6denmesi prensibi yatar. Bu, \u00f6zellikle d\u00fc\u015f\u00fck ve de\u011fi\u015fken trafikli uygulamalar i\u00e7in maliyet a\u00e7\u0131s\u0131ndan inan\u0131lmaz avantajlar sunar. \u00d6rne\u011fin, bir kullan\u0131c\u0131n\u0131n foto\u011fraf y\u00fcklemesi gibi bir olay (event) ger\u00e7ekle\u015fti\u011finde, Lambda fonksiyonunuz otomatik olarak tetiklenir, g\u00f6r\u00fcnt\u00fcy\u00fc i\u015fler ve i\u015fi bitti\u011finde kapan\u0131r. Bu, geleneksel sunucu tabanl\u0131 yakla\u015f\u0131mlardaki gibi 7\/24 \u00e7al\u0131\u015fan bir sunucu bulundurma zorunlulu\u011funu ortadan kald\u0131r\u0131r.<\/p>\n<p>Lambda&#8217;n\u0131n faydalar\u0131 saymakla bitmez: otomatik \u00f6l\u00e7eklenebilirlik sayesinde talebin aniden artmas\u0131 durumunda bile uygulaman\u0131z sorunsuz \u00e7al\u0131\u015fmaya devam eder. Operasyonel y\u00fck\u00fcn azalmas\u0131, geli\u015ftiricilerin altyap\u0131 y\u00f6netimi yerine do\u011frudan i\u015f mant\u0131\u011f\u0131na odaklanmas\u0131n\u0131 sa\u011flar. Bu da inovasyonu h\u0131zland\u0131r\u0131r ve pazar s\u00fcresini k\u0131salt\u0131r. G\u00f6r\u00fcnt\u00fc i\u015fleme, veri d\u00f6n\u00fc\u015f\u00fcm\u00fc, ger\u00e7ek zamanl\u0131 dosya i\u015fleme, arka u\u00e7 API&#8217;leri olu\u015fturma ve IoT verilerini i\u015fleme gibi say\u0131s\u0131z kullan\u0131m senaryosu mevcuttur. Ancak, Lambda&#8217;n\u0131n kendine \u00f6zg\u00fc zorluklar\u0131 da vard\u0131r; \u00f6zellikle so\u011fuk ba\u015flang\u0131\u00e7 (cold start) s\u00fcreleri ve daha karma\u015f\u0131k uygulamalarda izleme ve hata ay\u0131klama s\u00fcre\u00e7leri farkl\u0131 bir yakla\u015f\u0131m gerektirebilir. Yine de, \u00e7o\u011fu durumda sundu\u011fu esneklik ve maliyet avantajlar\u0131, bu zorluklar\u0131n \u00fcstesinden gelmeye de\u011fer k\u0131lar.<\/p>\n<h3>CI\/CD S\u00fcre\u00e7leri Geli\u015ftirme Ak\u0131\u015f\u0131n\u0131z\u0131 Nas\u0131l \u0130yile\u015ftirir?<\/h3>\n<p>CI\/CD, yani S\u00fcrekli Entegrasyon (Continuous Integration) ve S\u00fcrekli Teslimat\/Da\u011f\u0131t\u0131m (Continuous Delivery\/Deployment), yaz\u0131l\u0131m geli\u015ftirme ya\u015fam d\u00f6ng\u00fcs\u00fcn\u00fc h\u0131zland\u0131rmak ve kalitesini art\u0131rmak i\u00e7in kullan\u0131lan bir dizi uygulamad\u0131r. S\u00fcrekli Entegrasyon, geli\u015ftiricilerin kod de\u011fi\u015fikliklerini s\u0131k s\u0131k, k\u00fc\u00e7\u00fck par\u00e7alar halinde ana kod taban\u0131na entegre etmelerini ve her entegrasyonda otomatik testler \u00e7al\u0131\u015ft\u0131rmalar\u0131n\u0131 i\u00e7erir. Bu, entegrasyon sorunlar\u0131n\u0131n erken tespit edilmesini ve \u00e7\u00f6z\u00fclmesini sa\u011flar. S\u00fcrekli Teslimat, entegrasyon a\u015famas\u0131n\u0131 ba\u015far\u0131yla ge\u00e7en kodun, her zaman \u00fcretime da\u011f\u0131t\u0131lmaya haz\u0131r bir durumda olmas\u0131n\u0131 garanti eder. Bu genellikle otomatik derleme, test ve paketleme ad\u0131mlar\u0131n\u0131 i\u00e7erir. S\u00fcrekli Da\u011f\u0131t\u0131m ise, bu s\u00fcreci bir ad\u0131m daha ileri g\u00f6t\u00fcrerek, \u00fcretime haz\u0131r kodun hi\u00e7bir manuel m\u00fcdahaleye gerek kalmadan otomatik olarak da\u011f\u0131t\u0131lmas\u0131n\u0131 sa\u011flar.<\/p>\n<p>CI\/CD boru hatlar\u0131, geli\u015ftirme ekiplerinin daha h\u0131zl\u0131, daha g\u00fcvenilir ve daha s\u0131k yaz\u0131l\u0131m yay\u0131nlamas\u0131na olanak tan\u0131r. Manuel hatalar\u0131 azalt\u0131r, geri bildirim d\u00f6ng\u00fclerini h\u0131zland\u0131r\u0131r ve genel yaz\u0131l\u0131m kalitesini art\u0131r\u0131r. AWS ortam\u0131nda, CodeCommit (s\u00fcr\u00fcm kontrol\u00fc), CodeBuild (derleme ve test) ve CodePipeline (boru hatt\u0131 orkestrasyonu) gibi hizmetler, bu CI\/CD s\u00fcrecini kurmak i\u00e7in g\u00fc\u00e7l\u00fc bir entegre \u00e7\u00f6z\u00fcm sunar. Bu ara\u00e7lar, &#8220;tek bir gerilmi\u015f g\u00f6r\u00fcnt\u00fc&#8221; probleminden kurtulup, kodumuzu geli\u015ftirdi\u011fimiz anda otomatik olarak test edip da\u011f\u0131tabilece\u011fimiz bir sisteme ge\u00e7i\u015fin temel ta\u015flar\u0131d\u0131r.<\/p>\n<h3>Serverless Mimarinin Avantaj ve Dezavantajlar\u0131 Nelerdir?<\/h3>\n<p>Serverless mimari, \u00f6zellikle Lambda gibi FaaS hizmetleri, geli\u015ftiricilere sadece kodlar\u0131n\u0131 yazma ve \u00e7al\u0131\u015ft\u0131rma \u00f6zg\u00fcrl\u00fc\u011f\u00fc sunar. En b\u00fcy\u00fck avantaj\u0131, sunucu y\u00f6netimi, yamalama, g\u00fcvenlik g\u00fcncellemeleri veya kapasite planlamas\u0131 gibi operasyonel y\u00fcklerden kurtulmakt\u0131r. Bu sayede, geli\u015ftirme ekipleri tamamen i\u015f mant\u0131\u011f\u0131na odaklanabilir. \u00d6deme modeli de olduk\u00e7a caziptir: sadece kodunuzun \u00e7al\u0131\u015ft\u0131\u011f\u0131 s\u00fcre ve t\u00fcketilen kaynak kadar \u00f6deme yapars\u0131n\u0131z, bu da maliyet verimlili\u011fi sa\u011flar. Otomatik \u00f6l\u00e7eklenme kabiliyeti ise, uygulaman\u0131z\u0131n trafi\u011fi ne kadar artarsa arts\u0131n performans\u0131n\u0131 korumas\u0131n\u0131 garantiler. Pazara \u00e7\u0131k\u0131\u015f s\u00fcresi k\u0131sal\u0131r, \u00e7\u00fcnk\u00fc altyap\u0131 kurulumu ve y\u00f6netimi i\u00e7in harcanan zaman ortadan kalkar.<\/p>\n<p>Ancak, serverless mimarinin baz\u0131 dezavantajlar\u0131 da vard\u0131r. En s\u0131k kar\u015f\u0131la\u015f\u0131lan sorunlardan biri &#8220;so\u011fuk ba\u015flang\u0131\u00e7&#8221; (cold start) gecikmeleridir; yani bir fonksiyon uzun s\u00fcredir \u00e7al\u0131\u015fmad\u0131\u011f\u0131nda ilk \u00e7a\u011fr\u0131ld\u0131\u011f\u0131nda ekstra bir ba\u015flatma s\u00fcresi gerektirmesidir. Bu, d\u00fc\u015f\u00fck gecikme s\u00fcresi gerektiren uygulamalar i\u00e7in bir sorun olabilir, ancak provizyonlu e\u015fzamanl\u0131l\u0131k (provisioned concurrency) gibi \u00f6zelliklerle bu sorun k\u0131smen \u00e7\u00f6z\u00fclebilir. Vendor lock-in (sa\u011flay\u0131c\u0131 ba\u011f\u0131ml\u0131l\u0131\u011f\u0131) riski de g\u00f6z ard\u0131 edilmemelidir, \u00e7\u00fcnk\u00fc farkl\u0131 bulut sa\u011flay\u0131c\u0131lar\u0131n\u0131n sunucusuz hizmetleri aras\u0131nda tam uyumluluk nadirdir. Ayr\u0131ca, da\u011f\u0131t\u0131lm\u0131\u015f bir sistemde hata ay\u0131klama ve izleme, geleneksel monolitik uygulamalara g\u00f6re daha karma\u015f\u0131k olabilir. Bununla birlikte, bu dezavantajlar genellikle serverless&#8217;\u0131n sundu\u011fu esneklik ve verimlilik avantajlar\u0131n\u0131n yan\u0131nda tolere edilebilir seviyededir, \u00f6zellikle do\u011fru tasar\u0131m ve ara\u00e7lar kullan\u0131ld\u0131\u011f\u0131nda.<\/p>\n<h2 id=\"kod-gecis-sureci\">Kod Ge\u00e7i\u015f S\u00fcreci: Eski Uygulamalar AWS Lambda&#8217;ya Nas\u0131l Ta\u015f\u0131n\u0131r?<\/h2>\n<p>Eski, monolitik veya sunucu ba\u011f\u0131ml\u0131 uygulamalardan AWS Lambda&#8217;ya ge\u00e7i\u015f, sadece kodun bir yerden al\u0131n\u0131p ba\u015fka bir yere kopyalanmas\u0131 de\u011fildir; bu, bir mimari d\u00f6n\u00fc\u015f\u00fcm ve geli\u015ftirme zihniyetinde bir de\u011fi\u015fim demektir. \u00d6zellikle &#8220;tek bir gerilmi\u015f g\u00f6r\u00fcnt\u00fc&#8221; gibi basit ama kritik bir i\u015flevin modernle\u015ftirilmesi, bu s\u00fcrecin ne kadar de\u011ferli oldu\u011funu g\u00f6sterir. Bu b\u00f6l\u00fcmde, mevcut bir uygulaman\u0131n Lambda&#8217;ya nas\u0131l ta\u015f\u0131naca\u011f\u0131n\u0131, \u00f6zellikle de bir g\u00f6r\u00fcnt\u00fc i\u015fleme senaryosu \u00fczerinden ad\u0131m ad\u0131m inceleyece\u011fiz. Bu, sadece bir \u00f6rnek olmakla kalmayacak, ayn\u0131 zamanda kendi projelerinizi ta\u015f\u0131rken kar\u015f\u0131la\u015fabilece\u011finiz genel ad\u0131mlar\u0131 da ortaya koyacakt\u0131r.<\/p>\n<h3>Mevcut \u0130\u015f Y\u00fck\u00fcn\u00fcz\u00fc Lambda&#8217;ya Haz\u0131rlamak \u0130\u00e7in Neler Yap\u0131lmal\u0131?<\/h3>\n<p>Herhangi bir kod ge\u00e7i\u015fine ba\u015flamadan \u00f6nce, mevcut uygulaman\u0131n veya i\u015flevin kapsaml\u0131 bir analizini yapmak hayati \u00f6nem ta\u015f\u0131r. &#8220;Gerilmi\u015f g\u00f6r\u00fcnt\u00fc&#8221; senaryomuzda, bu muhtemelen bir sunucuda \u00e7al\u0131\u015fan Python veya Node.js tabanl\u0131 bir betik olabilir. Analiz etmeniz gereken temel noktalar \u015funlard\u0131r:<\/p>\n<ol>\n<li><strong>Ba\u011f\u0131ml\u0131l\u0131klar (Dependencies):<\/strong> Kodunuz hangi k\u00fct\u00fcphaneleri, paketleri veya d\u0131\u015f servisleri kullan\u0131yor? \u00d6rne\u011fin, g\u00f6r\u00fcnt\u00fc i\u015fleme i\u00e7in Python&#8217;da Pillow (PIL Fork) k\u00fct\u00fcphanesi veya Node.js&#8217;te sharp gibi k\u00fct\u00fcphanelere ihtiyac\u0131n\u0131z olacak. Bu ba\u011f\u0131ml\u0131l\u0131klar Lambda ortam\u0131nda nas\u0131l y\u00f6netilecek? (Lambda Katmanlar\u0131 (Layers) burada devreye girer.)<\/li>\n<li><strong>Giri\u015f\/\u00c7\u0131k\u0131\u015f (Input\/Output):<\/strong> Fonksiyonunuz ne t\u00fcr verilerle \u00e7al\u0131\u015f\u0131yor (\u00f6rn. bir S3 bucket&#8217;tan gelen g\u00f6r\u00fcnt\u00fc dosyas\u0131) ve \u00e7\u0131kt\u0131s\u0131 ne oluyor (\u00f6rn. i\u015flenmi\u015f g\u00f6r\u00fcnt\u00fcn\u00fcn ba\u015fka bir S3 bucket&#8217;a kaydedilmesi)? Bu veri ak\u0131\u015f\u0131 Lambda&#8217;n\u0131n olay g\u00fcd\u00fcml\u00fc modeline nas\u0131l entegre edilecek?<\/li>\n<li><strong>\u00c7al\u0131\u015fma Zaman\u0131 Ortam\u0131 (Runtime Environment):<\/strong> Mevcut kodunuz hangi dilde yaz\u0131ld\u0131 (Python, Node.js, Java, Go, C# vb.)? AWS Lambda bu dillerin \u00e7o\u011funu destekler, ancak spesifik s\u00fcr\u00fcm uyumlulu\u011funu kontrol etmek \u00f6nemlidir.<\/li>\n<li><strong>Durumsuzluk (Statelessness):<\/strong> Lambda fonksiyonlar\u0131 durumsuz (stateless) olmal\u0131d\u0131r. Bu, her \u00e7a\u011fr\u0131n\u0131n birbirinden ba\u011f\u0131ms\u0131z oldu\u011fu ve fonksiyonun yerel dosya sistemine veya belle\u011fine g\u00fcvenmemesi gerekti\u011fi anlam\u0131na gelir. E\u011fer mevcut kodunuz bir oturum durumuna veya ge\u00e7ici diske ba\u011f\u0131ml\u0131ysa, bu k\u0131s\u0131mlar\u0131n yeniden tasarlanmas\u0131 gerekir (\u00f6rn. S3 veya DynamoDB gibi harici depolama servisleri kullan\u0131larak).<\/li>\n<li><strong>Kayd\u0131r\u0131lan Fonksiyonun Kapsam\u0131:<\/strong> Fonksiyonunuz tek bir i\u015fi mi yap\u0131yor, yoksa birden fazla g\u00f6revi mi birle\u015ftiriyor? Lambda fonksiyonlar\u0131n\u0131n &#8220;mikro servis&#8221; prensibine uygun, tek sorumluluk ilkesini benimseyen k\u00fc\u00e7\u00fck ve odaklanm\u0131\u015f i\u015flevler olmas\u0131 \u00f6nerilir.<\/li>\n<\/ol>\n<p>Bu analiz, ge\u00e7i\u015f plan\u0131n\u0131z\u0131 olu\u015fturman\u0131za ve olas\u0131 sorunlar\u0131 \u00f6nceden tespit etmenize yard\u0131mc\u0131 olacakt\u0131r. Eski beti\u011fi do\u011frudan Lambda&#8217;ya ta\u015f\u0131mak yerine, onu Lambda&#8217;n\u0131n \u00e7al\u0131\u015fma modeline uygun hale getirmek, uzun vadede \u00e7ok daha verimli olacakt\u0131r.<\/p>\n<h3>G\u00f6r\u00fcnt\u00fc \u0130\u015fleme Fonksiyonu \u00d6rne\u011fiyle Lambda Kodunu Nas\u0131l Geli\u015ftirirsiniz?<\/h3>\n<p>\u015eimdi gelelim &#8220;gerilmi\u015f g\u00f6r\u00fcnt\u00fc&#8221; problemimizin \u00e7\u00f6z\u00fcm\u00fcne. Diyelim ki, bir kullan\u0131c\u0131 S3 bucket&#8217;\u0131na bir foto\u011fraf y\u00fckl\u00fcyor ve biz bu foto\u011fraf\u0131 otomatik olarak belirli bir boyuta k\u00fc\u00e7\u00fclt\u00fcp, \u00fczerine bir filigran ekleyip ba\u015fka bir S3 bucket&#8217;\u0131na kaydetmek istiyoruz. \u0130\u015fte Python dilinde yaz\u0131lm\u0131\u015f basit bir AWS Lambda fonksiyonu \u00f6rne\u011fi:<\/p>\n<pre><code class=\"language-python\">\nimport json\nimport boto3\nfrom PIL import Image\nfrom io import BytesIO\n\ns3 = boto3.client('s3')\n\ndef lambda_handler(event, context):\n    # Olaydan S3 bucket ve anahtar bilgilerini al\n    bucket = event['Records'][0]['s3']['bucket']['name']\n    key = event['Records'][0]['s3']['object']['key']\n\n    # Hedef bucket ve boyutlar\u0131 tan\u0131mla\n    target_bucket = 'processed-images-bucket' # \u0130\u015flenmi\u015f g\u00f6rsellerin kaydedilece\u011fi bucket\n    new_width = 800\n    watermark_text = \"My Brand\"\n\n    try:\n        # Orijinal g\u00f6r\u00fcnt\u00fcy\u00fc S3'ten al\n        response = s3.get_object(Bucket=bucket, Key=key)\n        image_content = response['Body'].read()\n\n        # G\u00f6r\u00fcnt\u00fcy\u00fc belle\u011fe y\u00fckle ve i\u015fle\n        img = Image.open(BytesIO(image_content))\n        \n        # Boyutland\u0131rma\n        width_percent = (new_width \/ float(img.size[0]))\n        new_height = int((float(img.size[1]) * float(width_percent)))\n        img = img.resize((new_width, new_height), Image.ANTIALIAS)\n\n        # Basit bir filigran ekleme (metin olarak)\n        # Ger\u00e7ek uygulamada daha geli\u015fmi\u015f bir filigran mekanizmas\u0131 kullan\u0131labilir\n        from PIL import ImageDraw, ImageFont\n        draw = ImageDraw.Draw(img)\n        font = ImageFont.truetype(\"\/opt\/python\/lib\/python3.8\/site-packages\/arial.ttf\", 36) # Lambda Layer'dan font\n        textwidth, textheight = draw.textsize(watermark_text, font)\n        \n        # Filigran\u0131 sa\u011f alt k\u00f6\u015feye yerle\u015ftir\n        margin = 10\n        x = img.width - textwidth - margin\n        y = img.height - textheight - margin\n        draw.text((x, y), watermark_text, font=font, fill=(255, 255, 255, 128)) # Beyaz, yar\u0131 saydam\n\n        # \u0130\u015flenmi\u015f g\u00f6r\u00fcnt\u00fcy\u00fc belle\u011fe kaydet\n        buffer = BytesIO()\n        img.save(buffer, format='JPEG') # veya orijinal format\u0131 kullanabilirsiniz\n        buffer.seek(0)\n\n        # \u0130\u015flenmi\u015f g\u00f6r\u00fcnt\u00fcy\u00fc hedef S3 bucket'a y\u00fckle\n        s3.put_object(Bucket=target_bucket, Key=f'processed_{key}', Body=buffer, ContentType='image\/jpeg')\n\n        return {\n            'statusCode': 200,\n            'body': json.dumps(f'Successfully processed image {key} and saved to {target_bucket}')\n        }\n    except Exception as e:\n        print(e)\n        return {\n            'statusCode': 500,\n            'body': json.dumps(f'Error processing image {key}: {str(e)}')\n        }\n    <\/pre>\n<p><\/code><\/p>\n<p>Bu kod blo\u011fu, S3'e yeni bir nesne y\u00fcklendi\u011finde tetiklenecek \u015fekilde tasarlanm\u0131\u015ft\u0131r. <code>Pillow<\/code> gibi harici k\u00fct\u00fcphaneleri kullanabilmek i\u00e7in bunlar\u0131 bir Lambda Katman\u0131 (Lambda Layer) olarak paketlemeniz ve fonksiyonunuza eklemeniz gerekir. Fonksiyonun S3'ten g\u00f6r\u00fcnt\u00fcy\u00fc almas\u0131, boyutland\u0131rmas\u0131, filigran eklemesi ve i\u015flenmi\u015f g\u00f6r\u00fcnt\u00fcy\u00fc farkl\u0131 bir S3 bucket'\u0131na kaydetmesi, olay g\u00fcd\u00fcml\u00fc serverless mimarinin tipik bir \u00f6rne\u011fidir. Fonksiyonun <code>try-except<\/code> blo\u011fu i\u00e7inde \u00e7al\u0131\u015fmas\u0131, hata y\u00f6netimini kolayla\u015ft\u0131r\u0131r.<\/p>\n<h3>Lambda Fonksiyonlar\u0131n\u0131 Etkin \u015eekilde Nas\u0131l Test Edip Da\u011f\u0131t\u0131rs\u0131n\u0131z?<\/h3>\n<p>Bir Lambda fonksiyonunu geli\u015ftirdikten sonra, onu do\u011fru bir \u015fekilde test etmek ve da\u011f\u0131tmak kritik \u00f6neme sahiptir. AWS Y\u00f6netim Konsolu \u00fczerinden do\u011frudan fonksiyon olu\u015fturabilir, kodunuzu y\u00fckleyebilir ve test olaylar\u0131 yap\u0131land\u0131rarak el ile tetikleyebilirsiniz. Ancak bu, geli\u015ftirme ve \u00fcretim ortamlar\u0131 i\u00e7in s\u00fcrd\u00fcr\u00fclebilir bir yakla\u015f\u0131m de\u011fildir. Daha verimli bir y\u00f6ntem, AWS CLI veya Infrastructure as Code (IaC) ara\u00e7lar\u0131 (\u00f6rne\u011fin AWS SAM veya CloudFormation) kullanmakt\u0131r.<\/p>\n<ul>\n<li><strong>Yerel Test:<\/strong> <code>sam local invoke<\/code> gibi ara\u00e7larla fonksiyonlar\u0131n\u0131z\u0131 yerel ortamda \u00e7al\u0131\u015ft\u0131rmak, h\u0131zl\u0131 iterasyon ve hata ay\u0131klama i\u00e7in idealdir.<\/li>\n<li><strong>Birim Testleri:<\/strong> Kodunuzun mant\u0131ksal birimlerini izole edilmi\u015f bir \u015fekilde test etmek i\u00e7in standart test \u00e7er\u00e7evelerini (Python i\u00e7in <code>unittest<\/code> veya <code>pytest<\/code>) kullan\u0131n.<\/li>\n<li><strong>Entegrasyon Testleri:<\/strong> Ger\u00e7ek AWS servisleriyle (S3, DynamoDB vb.) etkile\u015fimlerini test etmek i\u00e7in daha kapsaml\u0131 testler yaz\u0131n.<\/li>\n<li><strong>Da\u011f\u0131t\u0131m:<\/strong> Konsol yerine CLI, AWS SAM veya CloudFormation kullanarak fonksiyonunuzu ve ili\u015fkili kaynaklar\u0131 (S3 bucket'lar\u0131, IAM rolleri vb.) otomatik olarak da\u011f\u0131t\u0131n. Bu, tekrarlanabilirli\u011fi ve tutarl\u0131l\u0131\u011f\u0131 sa\u011flar.<\/li>\n<\/ul>\n<p>\u00d6rne\u011fin, bir <code>template.yaml<\/code> dosyas\u0131 ile fonksiyonunuzu ve S3 trigger'\u0131n\u0131 tan\u0131mlayarak kolayca da\u011f\u0131t\u0131m yapabilirsiniz:<\/p>\n<pre><code class=\"language-yaml\">\nAWSTemplateFormatVersion: '2010-09-09'\nTransform: AWS::Serverless-2016-10-31\nDescription: Bir S3 olay\u0131n\u0131 tetikleyen Lambda fonksiyonu i\u00e7in basit bir \u015fablon\n\nResources:\n  ImageProcessorFunction:\n    Type: AWS::Serverless::Function\n    Properties:\n      Handler: app.lambda_handler\n      Runtime: python3.8\n      CodeUri: s3:\/\/your-code-bucket\/your-function.zip # Kodunuzun zip dosyas\u0131\n      MemorySize: 512\n      Timeout: 30\n      Layers:\n        - arn:aws:lambda:REGION:ACCOUNT_ID:layer:PillowLayer:VERSION # Pillow k\u00fct\u00fcphanesi i\u00e7in Lambda Katman\u0131\n      Policies:\n        - S3ReadPolicy:\n            BucketName: !Ref SourceImagesBucket\n        - S3WritePolicy:\n            BucketName: !Ref ProcessedImagesBucket\n      Environment:\n        Variables:\n          TARGET_BUCKET: !Ref ProcessedImagesBucket\n      Events:\n        S3NewObject:\n          Type: S3\n          Properties:\n            Bucket: !Ref SourceImagesBucket\n            Events: s3:ObjectCreated:*\n  \n  SourceImagesBucket:\n    Type: AWS::S3::Bucket\n    Properties:\n      BucketName: your-source-images-bucket-name\n      NotificationConfiguration:\n        LambdaConfigurations:\n          - Event: s3:ObjectCreated:*\n            Function: !GetAtt ImageProcessorFunction.Arn\n\n  ProcessedImagesBucket:\n    Type: AWS::S3::Bucket\n    Properties:\n      BucketName: your-processed-images-bucket-name\n\nOutputs:\n  ImageProcessorFunctionArn:\n    Description: \"Lambda Fonksiyonunun ARN'i\"\n    Value: !GetAtt ImageProcessorFunction.Arn\n  ImageProcessorFunctionName:\n    Description: \"Lambda Fonksiyonunun Ad\u0131\"\n    Value: !Ref ImageProcessorFunction\n    <\/pre>\n<p><\/code><\/p>\n<p>Bu SAM \u015fablonu, bir Lambda fonksiyonunu, S3 bucket'lar\u0131n\u0131 ve aralar\u0131ndaki tetikleyiciyi tan\u0131mlar. Bu sayede, t\u00fcm altyap\u0131n\u0131z\u0131 kod olarak y\u00f6netebilir, s\u00fcr\u00fcm kontrol\u00fcne alabilir ve CI\/CD s\u00fcre\u00e7lerinize dahil edebilirsiniz. Bu, manuel yap\u0131land\u0131rma hatalar\u0131n\u0131 ortadan kald\u0131r\u0131r ve da\u011f\u0131t\u0131m s\u00fcrecini standartla\u015ft\u0131r\u0131r.<\/p>\n<h2 id=\"ci-cd-boru-hatti\">CI\/CD Boru Hatt\u0131 Kurulumu: Otomatik Da\u011f\u0131t\u0131m\u0131n Temelleri Nas\u0131l At\u0131l\u0131r?<\/h2>\n<p>Kod ge\u00e7i\u015fi tamamland\u0131ktan ve Lambda fonksiyonlar\u0131m\u0131z haz\u0131r hale geldikten sonra, s\u0131rada bu fonksiyonlar\u0131 s\u00fcrekli ve g\u00fcvenilir bir \u015fekilde da\u011f\u0131tabilecek bir mekanizma olu\u015fturmak var. \u0130\u015fte burada CI\/CD boru hatt\u0131 devreye giriyor. \"Tek bir gerilmi\u015f g\u00f6r\u00fcnt\u00fc\" sorunundan, her kod de\u011fi\u015fikli\u011finin otomatik olarak test edilip da\u011f\u0131t\u0131ld\u0131\u011f\u0131 modern bir i\u015f ak\u0131\u015f\u0131na ge\u00e7i\u015f yapmak, geli\u015ftirme s\u00fcre\u00e7lerinde devrim niteli\u011finde bir ad\u0131m demektir. AWS CodeSuite hizmetleri, bu boru hatt\u0131n\u0131 u\u00e7tan uca kurmak i\u00e7in m\u00fckemmel bir ara\u00e7 seti sunar. Bu b\u00f6l\u00fcmde, bir AWS Lambda uygulamas\u0131n\u0131 hedefleyen temel bir CI\/CD boru hatt\u0131n\u0131 nas\u0131l olu\u015fturaca\u011f\u0131m\u0131z\u0131 ad\u0131m ad\u0131m inceleyece\u011fiz.<\/p>\n<h3>AWS CodeCommit ile S\u00fcr\u00fcm Kontrol\u00fc Nas\u0131l Y\u00f6netilir?<\/h3>\n<p>Herhangi bir CI\/CD boru hatt\u0131n\u0131n temeli, g\u00fcvenilir bir s\u00fcr\u00fcm kontrol sistemidir. Geli\u015ftiricilerin kodlar\u0131n\u0131 depolad\u0131klar\u0131, de\u011fi\u015fiklikleri takip ettikleri ve i\u015fbirli\u011fi yapt\u0131klar\u0131 yerdir. Git, bu alandaki de facto standartt\u0131r ve AWS, kendi y\u00f6netilen Git hizmeti olan CodeCommit'i sunar. CodeCommit, \u00f6zel Git depolar\u0131 i\u00e7in y\u00fcksek oranda \u00f6l\u00e7eklenebilir, tam olarak y\u00f6netilen bir hizmettir. AWS ekosistemi i\u00e7inde sorunsuz entegrasyonu sayesinde, di\u011fer CodeSuite hizmetleriyle \u00e7al\u0131\u015fmak i\u00e7in idealdir.<\/p>\n<p>Bir CodeCommit deposu olu\u015fturmak olduk\u00e7a basittir ve g\u00fcvenlik entegrasyonu AWS IAM \u00fczerinden sa\u011flan\u0131r. S\u00fcr\u00fcm kontrol sistemi olmadan CI\/CD'den bahsetmek m\u00fcmk\u00fcn de\u011fildir. Fonksiyon kodunuz, SAM \u015fablonunuz, buildspec dosyalar\u0131n\u0131z ve t\u00fcm di\u011fer yap\u0131land\u0131rmalar\u0131n\u0131z CodeCommit'te depolan\u0131r. Geli\u015ftiriciler, kod de\u011fi\u015fikliklerini buraya iter (push) ve her bir itme, CI\/CD boru hatt\u0131n\u0131 tetikleyebilir. Bu, her zaman tek bir do\u011fru kod kayna\u011f\u0131na sahip olman\u0131z\u0131 sa\u011flar ve hatal\u0131 de\u011fi\u015fikliklerin h\u0131zla geri al\u0131nmas\u0131na olanak tan\u0131r. Etkili bir dallanma (branching) stratejisi (\u00f6rn. GitFlow veya Trunk-Based Development) benimsemek, ekip i\u00e7i i\u015fbirli\u011fini ve kod kalitesini daha da art\u0131racakt\u0131r.<\/p>\n<h3>AWS CodeBuild ile Derleme ve Test S\u00fcre\u00e7leri Nas\u0131l Otomatikle\u015ftirilir?<\/h3>\n<p>S\u00fcr\u00fcm kontrol sistemine yap\u0131lan her kod itmesinden sonraki ad\u0131m, kodun derlenmesi ve test edilmesidir. AWS CodeBuild, tam olarak y\u00f6netilen bir s\u00fcrekli entegrasyon hizmetidir ve kaynak kodunuzu derler, testleri \u00e7al\u0131\u015ft\u0131r\u0131r ve da\u011f\u0131t\u0131m i\u00e7in haz\u0131r yaz\u0131l\u0131m paketleri \u00fcretir. Lambda fonksiyonlar\u0131 i\u00e7in bu, genellikle ba\u011f\u0131ml\u0131l\u0131klar\u0131n y\u00fcklenmesi (\u00f6rn. Pillow k\u00fct\u00fcphanesi), birim testlerinin \u00e7al\u0131\u015ft\u0131r\u0131lmas\u0131 ve sonunda bir da\u011f\u0131t\u0131m <code>.zip<\/code> dosyas\u0131n\u0131n olu\u015fturulmas\u0131 anlam\u0131na gelir.<\/p>\n<p>CodeBuild, yap\u0131land\u0131rmas\u0131n\u0131 bir <code>buildspec.yml<\/code> dosyas\u0131 arac\u0131l\u0131\u011f\u0131yla yapar. Bu YAML dosyas\u0131, CodeBuild'in hangi komutlar\u0131 ne zaman \u00e7al\u0131\u015ft\u0131raca\u011f\u0131n\u0131 tan\u0131mlar. \u0130\u015fte g\u00f6r\u00fcnt\u00fc i\u015fleme Lambda'm\u0131z i\u00e7in \u00f6rnek bir <code>buildspec.yml<\/code>:<\/p>\n<pre><code class=\"language-yaml\">\nversion: 0.2\n\nphases:\n  install:\n    commands:\n      # AWS CLI ve SAM CLI'\u0131 y\u00fckleyin (SAM \u015fablonu kullan\u0131yorsan\u0131z)\n      - apt-get update -y\n      - apt-get install -y zip\n      - pip install --upgrade pip\n      - pip install aws-sam-cli\n      - pip install -r src\/requirements.txt -t .aws-sam\/build\/ImageProcessorFunction # Ba\u011f\u0131ml\u0131l\u0131klar\u0131 Lambda katman\u0131 i\u00e7in paketle\n  build:\n    commands:\n      # SAM \u015fablonunu kullanarak Lambda fonksiyonunu derle ve paketle\n      - sam build --template template.yaml --build-dir .aws-sam\/build\n  post_build:\n    commands:\n      # Da\u011f\u0131t\u0131m paketini S3'e y\u00fckle\n      - sam deploy --template-file .aws-sam\/build\/template.yaml --s3-bucket your-artifact-bucket-name --stack-name image-processor-stack --capabilities CAPABILITY_IAM --no-confirm-changeset\nartifacts:\n  files:\n    - .aws-sam\/build\/template.yaml\n  discard-paths: yes\n    <\/pre>\n<p><\/code><\/p>\n<p>Bu <code>buildspec.yml<\/code>, CodeBuild'e \u00f6nce gerekli ba\u011f\u0131ml\u0131l\u0131klar\u0131 y\u00fcklemesini (Pillow gibi), ard\u0131ndan SAM CLI kullanarak Lambda fonksiyonumuzu derlemesini ve bir da\u011f\u0131t\u0131m paketi olu\u015fturmas\u0131n\u0131 s\u00f6yler. <code>post_build<\/code> a\u015famas\u0131nda, bu paketi (veya SAM \u015fablonunu) S3'e y\u00fckleyebilir veya do\u011frudan da\u011f\u0131t\u0131m ad\u0131m\u0131na ge\u00e7irebiliriz. CodeBuild'in \u00e7\u0131kt\u0131lar\u0131 (artifact'ler), daha sonra boru hatt\u0131n\u0131n bir sonraki a\u015famas\u0131 olan da\u011f\u0131t\u0131m i\u00e7in kullan\u0131l\u0131r. Otomatik testlerin burada \u00e7al\u0131\u015ft\u0131r\u0131lmas\u0131, hatal\u0131 kodun \u00fcretime ula\u015fmas\u0131n\u0131 engeller ve geli\u015ftirme s\u00fcrecindeki verimlili\u011fi \u00f6nemli \u00f6l\u00e7\u00fcde art\u0131r\u0131r.<\/p>\n<h3>AWS CodePipeline ile U\u00e7tan Uca S\u00fcrekli Teslimat Nas\u0131l Olu\u015fturulur?<\/h3>\n<p>CodeCommit ve CodeBuild ile temel yap\u0131 ta\u015flar\u0131n\u0131 olu\u015fturduktan sonra, t\u00fcm bu a\u015famalar\u0131 orkestra edecek bir mekanizmaya ihtiyac\u0131m\u0131z var: AWS CodePipeline. CodePipeline, kaynak kodunuzun her bir de\u011fi\u015fikli\u011finde otomatik olarak yay\u0131n d\u00f6ng\u00fcs\u00fcn\u00fcz\u00fc modelleyen, g\u00f6rselle\u015ftiren ve otomatikle\u015ftiren tam olarak y\u00f6netilen bir s\u00fcrekli teslimat hizmetidir. Temel olarak \u00fc\u00e7 ana a\u015famadan olu\u015fur:<\/p>\n<ol>\n<li><strong>Kaynak (Source) A\u015famas\u0131:<\/strong> Bu a\u015fama, boru hatt\u0131n\u0131n ba\u015flang\u0131c\u0131d\u0131r ve kod de\u011fi\u015fikliklerini izler. Genellikle CodeCommit deposunu i\u015faret eder. Bir kod itmesi alg\u0131land\u0131\u011f\u0131nda, boru hatt\u0131n\u0131 tetikler.<\/li>\n<li><strong>Derleme (Build) A\u015famas\u0131:<\/strong> Kaynak a\u015famas\u0131ndan gelen kodu al\u0131r ve CodeBuild projenizi tetikler. CodeBuild, kodu derler, testleri \u00e7al\u0131\u015ft\u0131r\u0131r ve da\u011f\u0131t\u0131ma haz\u0131r bir artifact (\u00e7\u0131kt\u0131) \u00fcretir. Bu artifact, bir S3 bucket'\u0131na kaydedilir.<\/li>\n<li><strong>Da\u011f\u0131t\u0131m (Deploy) A\u015famas\u0131:<\/strong> Derleme a\u015famas\u0131ndan gelen artifact'i al\u0131r ve hedef ortama da\u011f\u0131t\u0131r. Lambda fonksiyonlar\u0131 i\u00e7in bu, genellikle AWS CloudFormation veya AWS SAM arac\u0131l\u0131\u011f\u0131yla ger\u00e7ekle\u015ftirilir. Da\u011f\u0131t\u0131m a\u015famas\u0131, Lambda fonksiyonunun yeni s\u00fcr\u00fcm\u00fcn\u00fc AWS'e y\u00fckler, gerekli izinleri ve tetikleyicileri g\u00fcnceller.<\/li>\n<\/ol>\n<p>Bir CodePipeline olu\u015ftururken, her a\u015faman\u0131n nas\u0131l ba\u011flanaca\u011f\u0131n\u0131 ve hangi hizmetlerin kullan\u0131laca\u011f\u0131n\u0131 belirtirsiniz. \u00d6rne\u011fin, manuel onay ad\u0131mlar\u0131 ekleyebilir, farkl\u0131 ortamlar i\u00e7in (dev, test, prod) ayr\u0131 da\u011f\u0131t\u0131m a\u015famalar\u0131 olu\u015fturabilir veya hatta bir \"mavi\/ye\u015fil\" (blue\/green) da\u011f\u0131t\u0131m stratejisi uygulayarak kesintisiz g\u00fcncellemeler yapabilirsiniz. CodePipeline'\u0131n g\u00f6rsel aray\u00fcz\u00fc, boru hatt\u0131n\u0131z\u0131n her an hangi a\u015famada oldu\u011funu izlemenizi ve olas\u0131 sorunlar\u0131 h\u0131zla tespit etmenizi sa\u011flar. Bu, \"tek bir gerilmi\u015f g\u00f6r\u00fcnt\u00fc\" gibi manuel s\u00fcre\u00e7lerin neden oldu\u011fu gecikmeleri ve hatalar\u0131 tamamen ortadan kald\u0131ran, h\u0131zl\u0131 ve g\u00fcvenilir bir yaz\u0131l\u0131m teslimat d\u00f6ng\u00fcs\u00fc olu\u015fturman\u0131n anahtar\u0131d\u0131r.<\/p>\n<h2 id=\"gelismis-stratejiler\">Geli\u015fmi\u015f Stratejiler ve Optimizasyonlar: Lambda ve CI\/CD \u00c7\u00f6z\u00fcmlerinizi Nas\u0131l \u0130leriye Ta\u015f\u0131rs\u0131n\u0131z?<\/h2>\n<p>Temel bir AWS Lambda kod ge\u00e7i\u015fi ve CI\/CD boru hatt\u0131 kurulumu harika bir ba\u015flang\u0131\u00e7 noktas\u0131d\u0131r, ancak ger\u00e7ek d\u00fcnya uygulamalar\u0131 genellikle daha fazla esneklik, g\u00fcvenlik ve performans optimizasyonu gerektirir. \"Tek bir gerilmi\u015f g\u00f6r\u00fcnt\u00fc\" hikayesi bize basit bir sorunun bile ne kadar karma\u015f\u0131k sistemleri etkileyebilece\u011fini g\u00f6sterdi. \u015eimdi bu \u00f6\u011frenimden yola \u00e7\u0131karak, Lambda ve CI\/CD \u00e7\u00f6z\u00fcmlerinizi daha ileriye ta\u015f\u0131yacak geli\u015fmi\u015f stratejilere ve optimizasyon tekniklerine odaklanal\u0131m. Bu, sadece sisteminizi daha sa\u011flam hale getirmekle kalmayacak, ayn\u0131 zamanda gelecekteki b\u00fcy\u00fcme ve de\u011fi\u015fikliklere kar\u015f\u0131 daha diren\u00e7li olmas\u0131n\u0131 sa\u011flayacakt\u0131r.<\/p>\n<h3>G\u00fcvenli ve Kesintisiz Da\u011f\u0131t\u0131m \u0130\u00e7in Hangi Stratejileri Kullanmal\u0131?<\/h3>\n<p>\u00dcretim ortam\u0131na yap\u0131lan da\u011f\u0131t\u0131mlar her zaman risk ta\u015f\u0131r. Hatal\u0131 bir da\u011f\u0131t\u0131m, uygulama kesintilerine veya veri kayb\u0131na yol a\u00e7abilir. Bu riski minimize etmek i\u00e7in \u00e7e\u015fitli geli\u015fmi\u015f da\u011f\u0131t\u0131m stratejileri mevcuttur:<\/p>\n<ul>\n<li><strong>Kanarya (Canary) Da\u011f\u0131t\u0131m\u0131:<\/strong> Yeni bir s\u00fcr\u00fcm\u00fc, kullan\u0131c\u0131lar\u0131n k\u00fc\u00e7\u00fck bir alt k\u00fcmesine (\u00f6rne\u011fin %1-5) yava\u015f\u00e7a sunars\u0131n\u0131z. Bu k\u00fc\u00e7\u00fck grup \u00fczerinde hata veya performans sorunlar\u0131 olup olmad\u0131\u011f\u0131n\u0131 izlersiniz. E\u011fer her \u015fey yolundaysa, yeni s\u00fcr\u00fcm\u00fc kademeli olarak daha fazla kullan\u0131c\u0131ya yayars\u0131n\u0131z. AWS Lambda'da Alias'lar ve S\u00fcr\u00fcmleme (Versioning) ile CodeDeploy'u kullanarak bu stratejiyi uygulayabilirsiniz. \u00d6rne\u011fin, bir Lambda fonksiyonunun yeni s\u00fcr\u00fcm\u00fcn\u00fc da\u011f\u0131t\u0131rken, CodeDeploy trafi\u011fin %10'unu yeni s\u00fcr\u00fcme y\u00f6nlendirir ve belirli bir s\u00fcre sonra t\u00fcm trafi\u011fi aktar\u0131r.<\/li>\n<li><strong>Mavi\/Ye\u015fil (Blue\/Green) Da\u011f\u0131t\u0131m\u0131:<\/strong> Bu stratejide, mevcut \u00fcretim ortam\u0131n\u0131z (mavi) \u00e7al\u0131\u015f\u0131rken, yeni s\u00fcr\u00fcm\u00fcn\u00fcz i\u00e7in tamamen yeni bir ortam (ye\u015fil) olu\u015fturursunuz. T\u00fcm testler yeni ye\u015fil ortamda yap\u0131ld\u0131ktan sonra, trafi\u011fi bir anda mavi ortamdan ye\u015file y\u00f6nlendirirsiniz. Hata durumunda, traf\u011fi an\u0131nda mavi ortama geri \u00e7evirebilirsiniz. Bu, kesinti s\u00fcresini minimuma indirir ve geri alma i\u015flemlerini kolayla\u015ft\u0131r\u0131r. AWS CodeDeploy, Lambda fonksiyonlar\u0131 i\u00e7in de mavi\/ye\u015fil da\u011f\u0131t\u0131mlar\u0131 destekler.<\/li>\n<li><strong>A\u015famal\u0131 Da\u011f\u0131t\u0131m (Linear\/AllAtOnce):<\/strong> CodeDeploy ayr\u0131ca trafi\u011fi yeni s\u00fcr\u00fcme belirli bir zaman diliminde (\u00f6rn. her 1 dakikada %10 art\u0131rarak) veya do\u011frudan t\u00fcm trafi\u011fi (AllAtOnce) y\u00f6nlendirme se\u00e7enekleri sunar. Se\u00e7im, uygulaman\u0131z\u0131n kritikli\u011fi ve risk tolerans\u0131n\u0131za ba\u011fl\u0131d\u0131r.<\/li>\n<\/ul>\n<p>Bu da\u011f\u0131t\u0131m stratejilerini kullanmak, \u00fcretim ortam\u0131n\u0131z\u0131n istikrar\u0131n\u0131 korurken yeni \u00f6zelliklerin g\u00fcvenli bir \u015fekilde piyasaya s\u00fcr\u00fclmesini sa\u011flar. \u00d6zellikle g\u00f6r\u00fcnt\u00fc i\u015fleme gibi arka plan g\u00f6revlerinde, hatal\u0131 bir s\u00fcr\u00fcm\u00fcn t\u00fcm kullan\u0131c\u0131lar\u0131 etkilemesini \u00f6nlemek i\u00e7in bu t\u00fcr stratejiler kritik \u00f6neme sahiptir.<\/p>\n<h3>Infrastructure as Code (IaC) ile Altyap\u0131n\u0131z\u0131 Nas\u0131l Y\u00f6netirsiniz?<\/h3>\n<p>Manuel olarak AWS kaynaklar\u0131 olu\u015fturmak ve y\u00f6netmek, tekrarlayan ve hataya a\u00e7\u0131k bir s\u00fcre\u00e7tir. Infrastructure as Code (IaC), altyap\u0131n\u0131z\u0131 (sunucular, a\u011flar, veritabanlar\u0131, Lambda fonksiyonlar\u0131 vb.) kod olarak tan\u0131mlaman\u0131z\u0131 ve s\u00fcr\u00fcm kontrol\u00fcne alman\u0131z\u0131 sa\u011flar. Bu, altyap\u0131n\u0131z\u0131 bir yaz\u0131l\u0131m uygulamas\u0131 gibi y\u00f6netmenize olanak tan\u0131r.<\/p>\n<ul>\n<li><strong>AWS CloudFormation:<\/strong> AWS'nin yerel IaC hizmetidir. T\u00fcm AWS kaynaklar\u0131n\u0131 YAML veya JSON \u015fablonlar\u0131 arac\u0131l\u0131\u011f\u0131yla tan\u0131mlaman\u0131za olanak tan\u0131r. CloudFormation, kaynak ba\u011f\u0131ml\u0131l\u0131klar\u0131n\u0131 y\u00f6netir ve kaynaklar\u0131 do\u011fru s\u0131rayla olu\u015fturur veya g\u00fcnceller.<\/li>\n<li><strong>AWS Serverless Application Model (SAM):<\/strong> CloudFormation \u00fczerine in\u015fa edilmi\u015f, sunucusuz uygulamalar\u0131 tan\u0131mlamak i\u00e7in basitle\u015ftirilmi\u015f bir \u00e7er\u00e7evedir. \u00d6zellikle Lambda fonksiyonlar\u0131, API Gateway u\u00e7 noktalar\u0131 ve DynamoDB tablolar\u0131 gibi sunucusuz kaynaklar\u0131 tan\u0131mlamay\u0131 kolayla\u015ft\u0131r\u0131r. Daha \u00f6nce verilen <code>template.yaml<\/code> \u00f6rne\u011fi bir SAM \u015fablonuydu.<\/li>\n<li><strong>Terraform:<\/strong> \u00c7apraz bulut platformlar\u0131n\u0131 destekleyen a\u00e7\u0131k kaynakl\u0131 bir IaC arac\u0131d\u0131r. E\u011fer birden fazla bulut sa\u011flay\u0131c\u0131s\u0131yla \u00e7al\u0131\u015f\u0131yorsan\u0131z veya bulut d\u0131\u015f\u0131ndaki altyap\u0131lar\u0131 da y\u00f6netmeniz gerekiyorsa pop\u00fcler bir se\u00e7enektir.<\/li>\n<\/ul>\n<p>IaC kullanman\u0131n temel faydalar\u0131 aras\u0131nda tekrarlanabilirlik (ayn\u0131 altyap\u0131y\u0131 farkl\u0131 ortamlarda kolayca olu\u015fturabilirsiniz), tutarl\u0131l\u0131k (manuel yap\u0131land\u0131rma farklar\u0131 ortadan kalkar) ve s\u00fcr\u00fcm kontrol\u00fc (altyap\u0131 de\u011fi\u015fikliklerinin ge\u00e7mi\u015fini takip edebilirsiniz) bulunur. Bu, \u00f6zellikle CI\/CD boru hatt\u0131n\u0131zda altyap\u0131 da\u011f\u0131t\u0131m\u0131n\u0131 otomatikle\u015ftirirken vazge\u00e7ilmezdir.<\/p>\n<h3>Performans, G\u00fcvenlik ve Maliyet Optimizasyonlar\u0131 Nas\u0131l Yap\u0131l\u0131r?<\/h3>\n<p>Lambda ve CI\/CD'nin t\u00fcm faydalar\u0131ndan yararlanmak i\u00e7in s\u00fcrekli optimizasyon \u015fartt\u0131r:<\/p>\n<ul>\n<li><strong>Performans Optimizasyonu:<\/strong>\n<ul>\n<li><strong>So\u011fuk Ba\u015flang\u0131\u00e7lar (Cold Starts):<\/strong> \u00d6zellikle d\u00fc\u015f\u00fck gecikme s\u00fcresi gerektiren uygulamalar i\u00e7in bir sorun olabilir. <code>Provisioned Concurrency<\/code> kullanarak belirli bir say\u0131da Lambda \u00f6rne\u011fini her zaman haz\u0131r tutabilir veya fonksiyonunuzun bellek miktar\u0131n\u0131 art\u0131rarak (CPU da artar) ba\u015flatma s\u00fcrelerini k\u0131saltabilirsiniz.<\/li>\n<li><strong>Kod Boyutu:<\/strong> Lambda paketinizin boyutunu minimize edin. Sadece gerekli ba\u011f\u0131ml\u0131l\u0131klar\u0131 ekleyin. Daha k\u00fc\u00e7\u00fck paketler daha h\u0131zl\u0131 indirilir ve ba\u015flat\u0131l\u0131r.<\/li>\n<li><strong>Bellek Ayar\u0131:<\/strong> Lambda fonksiyonunuzun bellek ayar\u0131, ayn\u0131 zamanda CPU g\u00fcc\u00fcn\u00fc de etkiler. Fonksiyonunuzun performans profiline uygun bellek ayar\u0131n\u0131 bulmak i\u00e7in denemeler yap\u0131n (\u00f6rn. AWS Lambda Power Tuning arac\u0131).<\/li>\n<\/ul>\n<\/li>\n<li><strong>G\u00fcvenlik Optimizasyonu:<\/strong>\n<ul>\n<li><strong>En Az Ayr\u0131cal\u0131k \u0130lkesi (Principle of Least Privilege):<\/strong> Lambda fonksiyonlar\u0131n\u0131za sadece i\u015flerini yapmak i\u00e7in gereken minimum IAM izinlerini verin. \u00d6rne\u011fin, g\u00f6r\u00fcnt\u00fc i\u015fleme fonksiyonunuzun sadece belirli S3 bucket'lar\u0131ndan okuma ve belirli S3 bucket'lar\u0131na yazma izni olmal\u0131d\u0131r.<\/li>\n<li><strong>VPC Entegrasyonu:<\/strong> Fonksiyonlar\u0131n\u0131z\u0131n \u00f6zel bir a\u011fa (VPC) eri\u015fmesi gerekiyorsa, Lambda'y\u0131 bir VPC i\u00e7ine yerle\u015ftirebilirsiniz. Bu, veritabanlar\u0131 veya dahili servisler gibi \u00f6zel kaynaklara g\u00fcvenli eri\u015fim sa\u011flar.<\/li>\n<li><strong>Ortam De\u011fi\u015fkenleri ve Gizli Bilgiler:<\/strong> Hassas bilgileri (API anahtarlar\u0131, veritaban\u0131 kimlik bilgileri) do\u011frudan kod i\u00e7inde saklamak yerine, AWS Secrets Manager veya AWS Systems Manager Parameter Store gibi hizmetleri kullanarak g\u00fcvenli bir \u015fekilde y\u00f6netin ve Lambda fonksiyonlar\u0131n\u0131za ortam de\u011fi\u015fkenleri olarak enjekte edin.<\/li>\n<\/ul>\n<\/li>\n<li><strong>Maliyet Optimizasyonu:<\/strong>\n<ul>\n<li><strong>Bellek ve S\u00fcre:<\/strong> Lambda fonksiyonlar\u0131n\u0131n maliyeti, ayr\u0131lan bellek ve \u00e7al\u0131\u015fma s\u00fcresiyle do\u011frudan ili\u015fkilidir. Fonksiyonlar\u0131n\u0131z\u0131 en uygun bellek ayar\u0131yla \u00e7al\u0131\u015facak \u015fekilde optimize ederek maliyetleri d\u00fc\u015f\u00fcrebilirsiniz.<\/li>\n<li><strong>Gereksiz \u00c7a\u011fr\u0131lar\u0131 \u00d6nleme:<\/strong> S3 olaylar\u0131 veya di\u011fer tetikleyicilerle \u00e7al\u0131\u015f\u0131rken, gereksiz fonksiyon \u00e7a\u011fr\u0131lar\u0131n\u0131 tetiklememeye dikkat edin. Filtreleme kurallar\u0131n\u0131 (\u00f6rn. S3 prefix\/suffix) do\u011fru yap\u0131land\u0131r\u0131n.<\/li>\n<li><strong>Loglama:<\/strong> A\u015f\u0131r\u0131ya ka\u00e7an loglama, CloudWatch maliyetlerinizi art\u0131rabilir. Sadece kritik bilgileri loglay\u0131n ve log saklama s\u00fcrelerini optimize edin.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>Bu optimizasyonlar, \"tek bir gerilmi\u015f g\u00f6r\u00fcnt\u00fc\" probleminden yola \u00e7\u0131karak in\u015fa etti\u011fimiz bu modern sistemin sadece \u00e7al\u0131\u015fmas\u0131n\u0131 de\u011fil, ayn\u0131 zamanda verimli, g\u00fcvenli ve uygun maliyetli bir \u015fekilde \u00e7al\u0131\u015fmas\u0131n\u0131 sa\u011flaman\u0131n anahtar\u0131d\u0131r.<\/p>\n<div class=\"uzman-ipucu\">\n        Uzman \u0130pucu: Da\u011f\u0131t\u0131lm\u0131\u015f sistemlerde izleme ve hata ay\u0131klama i\u00e7in AWS X-Ray'i kullan\u0131n. Bu, Lambda fonksiyonlar\u0131n\u0131z\u0131n ve ili\u015fkili servislerin \u00e7a\u011fr\u0131lar\u0131n\u0131 izlemenize olanak tan\u0131r, b\u00f6ylece performans darbo\u011fazlar\u0131n\u0131 veya hatalar\u0131 kolayca tespit edebilirsiniz.\n    <\/div>\n<h2 id=\"vaka-analizi-sonuc\">Vaka Analizi ve Sonu\u00e7: Tek Bir \u0130htiya\u00e7tan Do\u011fan Ba\u015far\u0131 Hikayesi ve S\u0131k\u00e7a Sorulanlar<\/h2>\n<p>\"Tek bir gerilmi\u015f g\u00f6r\u00fcnt\u00fc\" hikayesi, dijital d\u00fcnyadaki bir\u00e7ok organizasyon i\u00e7in bir d\u00f6n\u00fcm noktas\u0131 olabilir. Basit bir g\u00f6r\u00fcnt\u00fc i\u015fleme ihtiyac\u0131ndan yola \u00e7\u0131karak, AWS Lambda'ya kod ge\u00e7i\u015fi ve kapsaml\u0131 bir CI\/CD boru hatt\u0131 kurulumu, sadece o anki problemi \u00e7\u00f6zmekle kalmad\u0131, ayn\u0131 zamanda \u015firketin genel geli\u015ftirme ve operasyonel yakla\u015f\u0131m\u0131n\u0131 da modernle\u015ftirdi. Bu b\u00f6l\u00fcmde, bu d\u00f6n\u00fc\u015f\u00fcm\u00fcn ger\u00e7ek bir senaryoda nas\u0131l uyguland\u0131\u011f\u0131na dair bir vaka analizini ve bu yolculu\u011fun getirdi\u011fi \u00f6nemli kazan\u0131mlar\u0131 inceleyece\u011fiz. Ayr\u0131ca, bu t\u00fcr bir ge\u00e7i\u015fi d\u00fc\u015f\u00fcnenlerin akl\u0131na tak\u0131labilecek s\u0131k\u00e7a sorulan sorulara da yan\u0131t verece\u011fiz.<\/p>\n<h3>Ger\u00e7ek Bir Senaryoda AWS Lambda ve CI\/CD Nas\u0131l Uyguland\u0131?<\/h3>\n<p>Bir e-ticaret \u015firketi d\u00fc\u015f\u00fcn\u00fcn. Her g\u00fcn binlerce yeni \u00fcr\u00fcn g\u00f6rseli y\u00fckleniyor. Bu g\u00f6rsellerin farkl\u0131 platformlar (web, mobil uygulama, sosyal medya) i\u00e7in farkl\u0131 boyutlarda (k\u00fc\u00e7\u00fck \u00f6nizleme, orta detay, b\u00fcy\u00fck zoom), farkl\u0131 \u00e7\u00f6z\u00fcn\u00fcrl\u00fcklerde ve bazen de \u00fczerine \u015firket logosu gibi bir filigran eklenerek haz\u0131rlanmas\u0131 gerekiyordu. Eski sistemde, bu i\u015flemler bir veya iki sunucu \u00fczerinde \u00e7al\u0131\u015fan manuel betikler veya cron i\u015fleri ile yap\u0131l\u0131yordu. S\u00fcre\u00e7 yava\u015f, hataya a\u00e7\u0131k ve \u00f6zellikle kampanya d\u00f6nemlerindeki ani y\u00fck art\u0131\u015flar\u0131nda tamamen yetersiz kal\u0131yordu.<\/p>\n<p>\u0130\u015fte bu \"tek bir gerilmi\u015f g\u00f6r\u00fcnt\u00fc\" problemini \u00e7\u00f6zmek i\u00e7in uygulanan yeni mimari:<\/p>\n<ol>\n<li><strong>Kaynak G\u00f6r\u00fcnt\u00fc Y\u00fckleme:<\/strong> Sat\u0131c\u0131lar, \u00fcr\u00fcn g\u00f6rsellerini do\u011frudan AWS S3'teki \u00f6zel bir \"raw-images\" bucket'\u0131na y\u00fckl\u00fcyor.<\/li>\n<li><strong>Lambda Tetikleyici:<\/strong> S3'e yeni bir nesne (g\u00f6r\u00fcnt\u00fc) y\u00fcklendi\u011finde, bu olay otomatik olarak bir AWS Lambda fonksiyonunu tetikliyor.<\/li>\n<li><strong>Lambda \u0130\u015fleme:<\/strong>\n<ul>\n<li>Lambda fonksiyonu (Python, Pillow k\u00fct\u00fcphanesi ile), tetiklenen g\u00f6r\u00fcnt\u00fcy\u00fc S3'ten al\u0131yor.<\/li>\n<li>G\u00f6r\u00fcnt\u00fcy\u00fc \u00f6nceden tan\u0131mlanm\u0131\u015f farkl\u0131 boyutlara (\u00f6rn. 200px, 800px, 1600px geni\u015flik) ve formatlara d\u00f6n\u00fc\u015ft\u00fcr\u00fcyor.<\/li>\n<li>Her bir i\u015flenmi\u015f g\u00f6r\u00fcnt\u00fcye dinamik olarak bir filigran (\u015firket logosu veya metni) ekliyor.<\/li>\n<li>\u0130\u015flenmi\u015f g\u00f6r\u00fcnt\u00fcleri, ilgili boyut ve format kategorilerine g\u00f6re farkl\u0131 S3 bucket'lar\u0131na (\u00f6rn. \"processed-images\/thumbnails\", \"processed-images\/web\", \"processed-images\/mobile\") kaydediyor.<\/li>\n<\/ul>\n<\/li>\n<li><strong>CI\/CD Boru Hatt\u0131:<\/strong>\n<ul>\n<li>Geli\u015ftiriciler, Lambda fonksiyon kodunda veya altyap\u0131 \u015fablonlar\u0131nda (SAM) herhangi bir de\u011fi\u015fiklik yapt\u0131\u011f\u0131nda, bu de\u011fi\u015fiklikler AWS CodeCommit'e itiliyor.<\/li>\n<li>CodeCommit'teki her itme, bir AWS CodePipeline'\u0131 tetikliyor.<\/li>\n<li>CodePipeline, \u00f6nce AWS CodeBuild'i \u00e7al\u0131\u015ft\u0131r\u0131yor. CodeBuild, kodu derliyor, birim testlerini \u00e7al\u0131\u015ft\u0131r\u0131yor, gerekli ba\u011f\u0131ml\u0131l\u0131klar\u0131 (Pillow k\u00fct\u00fcphanesi gibi) bir Lambda Layer olarak paketliyor ve Lambda fonksiyonunun da\u011f\u0131t\u0131ma haz\u0131r .zip dosyas\u0131n\u0131 olu\u015fturuyor.<\/li>\n<li>Ard\u0131ndan CodePipeline, AWS CloudFormation (SAM arac\u0131l\u0131\u011f\u0131yla) kullanarak Lambda fonksiyonunu ve ili\u015fkili S3 tetikleyicilerini \u00fcretim ortam\u0131na g\u00fcvenli bir \u015fekilde da\u011f\u0131t\u0131yor. Bu da\u011f\u0131t\u0131m a\u015famas\u0131, kesintiyi \u00f6nlemek ve riskleri azaltmak i\u00e7in kanarya veya mavi\/ye\u015fil da\u011f\u0131t\u0131m stratejilerini kullanabiliyor.<\/li>\n<\/ul>\n<\/li>\n<li><strong>Eri\u015fim:<\/strong> Web ve mobil uygulamalar, i\u015flenmi\u015f g\u00f6rsellere do\u011frudan ilgili S3 bucket'lar\u0131ndan veya bir CDN (CloudFront) \u00fczerinden eri\u015fiyor.<\/li>\n<\/ol>\n<h3>D\u00f6n\u00fc\u015f\u00fcm\u00fcn Getirileri Neler Oldu?<\/h3>\n<p>Bu d\u00f6n\u00fc\u015f\u00fcm, \u015firkete somut ve \u00f6nemli faydalar sa\u011flad\u0131:<\/p>\n<ul>\n<li><strong>Otomatik \u00d6l\u00e7eklenebilirlik:<\/strong> Y\u00fcksek trafikli d\u00f6nemlerde (Black Friday gibi), Lambda fonksiyonlar\u0131 talebe g\u00f6re otomatik olarak binlerce e\u015fzamanl\u0131 \u00e7al\u0131\u015fmaya \u00f6l\u00e7eklenerek, hi\u00e7bir manuel m\u00fcdahale olmadan t\u00fcm g\u00f6r\u00fcnt\u00fc i\u015fleme y\u00fck\u00fcn\u00fc kar\u015f\u0131lad\u0131.<\/li>\n<li><strong>Maliyet Verimlili\u011fi:<\/strong> Sunucuya 7\/24 \u00f6deme yapmak yerine, \u015firket sadece Lambda fonksiyonlar\u0131n\u0131n \u00e7al\u0131\u015ft\u0131\u011f\u0131 s\u00fcre ve kulland\u0131\u011f\u0131 kaynak kadar \u00f6deme yapt\u0131. Bu, operasyonel maliyetlerde %60'\u0131n \u00fczerinde d\u00fc\u015f\u00fc\u015f sa\u011flad\u0131.<\/li>\n<li><strong>Geli\u015ftirme H\u0131z\u0131 ve Esnekli\u011fi:<\/strong> CI\/CD boru hatt\u0131 sayesinde, yeni g\u00f6r\u00fcnt\u00fc i\u015fleme gereksinimleri veya filigran de\u011fi\u015fiklikleri, dakikalar i\u00e7inde test edilip \u00fcretime da\u011f\u0131t\u0131labildi. Bu, pazar s\u00fcresini \u00f6nemli \u00f6l\u00e7\u00fcde k\u0131saltt\u0131.<\/li>\n<li><strong>Operasyonel Y\u00fck\u00fcn Azalmas\u0131:<\/strong> Geli\u015ftiriciler sunucu y\u00f6netimi, yamalama veya g\u00fcvenlik g\u00fcncellemeleri gibi g\u00f6revlerden kurtularak, daha fazla inovatif i\u015fe odaklanabildi.<\/li>\n<li><strong>Hata Oran\u0131n\u0131n D\u00fc\u015f\u00fc\u015f\u00fc:<\/strong> Otomatik testler ve da\u011f\u0131t\u0131m s\u00fcre\u00e7leri, manuel hatalar\u0131 ortadan kald\u0131rarak \u00fcretim ortam\u0131ndaki sorunlar\u0131 minimize etti.<\/li>\n<li><strong>Geli\u015fmi\u015f Deneyim:<\/strong> M\u00fc\u015fterilere her platformda h\u0131zl\u0131 y\u00fcklenen, optimize edilmi\u015f ve tutarl\u0131 g\u00f6rseller sunuldu, bu da genel kullan\u0131c\u0131 deneyimini iyile\u015ftirdi.<\/li>\n<\/ul>\n<p>Bu ba\u015far\u0131 hikayesi, ba\u015flang\u0131\u00e7ta k\u00fc\u00e7\u00fck g\u00f6r\u00fcnen bir \"gerilmi\u015f g\u00f6r\u00fcnt\u00fc\" probleminin, do\u011fru mimari ve teknolojik yakla\u015f\u0131mlarla nas\u0131l b\u00fcy\u00fck bir stratejik avantaja d\u00f6n\u00fc\u015ft\u00fcr\u00fclebilece\u011fini a\u00e7\u0131k\u00e7a g\u00f6stermektedir. Serverless ve CI\/CD, sadece m\u00fchendislik pratikleri de\u011fil, ayn\u0131 zamanda i\u015finizi b\u00fcy\u00fctmenize yard\u0131mc\u0131 olan g\u00fc\u00e7l\u00fc i\u015f ara\u00e7lar\u0131d\u0131r.<\/p>\n<h3>S\u0131k\u00e7a Sorulan Sorular: Akl\u0131n\u0131zdaki Cevaplar Burada!<\/h3>\n<p>Bu d\u00f6n\u00fc\u015f\u00fcm yolculu\u011fu hakk\u0131nda s\u0131k\u00e7a sorulan baz\u0131 sorular\u0131 ve cevaplar\u0131n\u0131 a\u015fa\u011f\u0131da bulabilirsiniz:<\/p>\n<ul>\n<li>\n<h4>Lambda'ya ge\u00e7i\u015f her senaryo i\u00e7in uygun mudur?<\/h4>\n<p>Hay\u0131r, her senaryo i\u00e7in uygun de\u011fildir. Lambda, \u00f6zellikle olay g\u00fcd\u00fcml\u00fc, k\u0131sa \u00f6m\u00fcrl\u00fc ve de\u011fi\u015fken i\u015f y\u00fckleri i\u00e7in m\u00fckemmeldir. Uzun s\u00fcreli, durum tutan (stateful) veya s\u00fcrekli \u00e7al\u0131\u015fan (\u00f6rn. web soketleri, s\u00fcrekli veri ak\u0131\u015f\u0131 i\u015fleme) servisler i\u00e7in EC2, ECS veya EKS gibi farkl\u0131 AWS hizmetleri daha uygun olabilir. Mikro servis mimarisi i\u00e7in idealdir, ancak karma\u015f\u0131k monolitik uygulamalar\u0131 do\u011frudan Lambda'ya ta\u015f\u0131mak zorlay\u0131c\u0131 olabilir.<\/p>\n<\/li>\n<li>\n<h4>CI\/CD kurmak k\u00fc\u00e7\u00fck projeler i\u00e7in de gerekli midir?<\/h4>\n<p>Kesinlikle evet! CI\/CD'nin faydalar\u0131, projenin b\u00fcy\u00fckl\u00fc\u011f\u00fcnden ba\u011f\u0131ms\u0131zd\u0131r. K\u00fc\u00e7\u00fck projelerde bile manuel da\u011f\u0131t\u0131mlar\u0131n neden oldu\u011fu hatalar\u0131 azalt\u0131r, geli\u015ftirme s\u00fcrecini h\u0131zland\u0131r\u0131r ve ileride projenin b\u00fcy\u00fcmesi durumunda kolayca \u00f6l\u00e7eklenebilir bir temel olu\u015fturur. Ba\u015flang\u0131\u00e7ta yap\u0131lan yat\u0131r\u0131m, uzun vadede zaman ve efor tasarrufu olarak geri d\u00f6ner.<\/p>\n<\/li>\n<li>\n<h4>Lambda maliyetleri nas\u0131l optimize edilir?<\/h4>\n<p>Maliyetleri optimize etmek i\u00e7in Lambda fonksiyonunuzun bellek ayar\u0131n\u0131 (ayn\u0131 zamanda CPU'yu da etkiler) en uygun seviyede tutun, a\u015f\u0131r\u0131ya ka\u00e7an loglamadan ka\u00e7\u0131n\u0131n ve so\u011fuk ba\u015flang\u0131\u00e7lar\u0131 azaltmak i\u00e7in provizyonlu e\u015fzamanl\u0131l\u0131k kullan\u0131rken dikkatli olun. Gereksiz fonksiyon \u00e7a\u011fr\u0131lar\u0131n\u0131 \u00f6nlemek i\u00e7in S3 tetikleyicilerinde prefix\/suffix filtrelemesi gibi ince ayarlar yap\u0131n.<\/p>\n<\/li>\n<li>\n<h4>Serverless mimaride g\u00fcvenlik nas\u0131l sa\u011flan\u0131r?<\/h4>\n<p>G\u00fcvenlik, en az ayr\u0131cal\u0131k ilkesi (IAM rolleri), VPC entegrasyonu (\u00f6zel a\u011f kaynaklar\u0131na eri\u015fim i\u00e7in), ortam de\u011fi\u015fkenleri ve gizli bilgilerin g\u00fcvenli y\u00f6netimi (Secrets Manager, Parameter Store), ve Lambda katmanlar\u0131n\u0131n (Layer) dikkatli kullan\u0131m\u0131 (g\u00fcvenlik a\u00e7\u0131klar\u0131n\u0131 i\u00e7ermeyen ba\u011f\u0131ml\u0131l\u0131klar) ile sa\u011flan\u0131r. Ayr\u0131ca, CloudWatch ve CloudTrail ile s\u00fcrekli izleme yaparak potansiyel g\u00fcvenlik tehditlerini tespit edebilirsiniz.<\/p>\n<\/li>\n<li>\n<h4>Cold start sorunu nas\u0131l \u00e7\u00f6z\u00fcl\u00fcr?<\/h4>\n<p>Cold start sorununu azaltman\u0131n birka\u00e7 yolu vard\u0131r: Fonksiyonunuzun bellek ayar\u0131n\u0131 art\u0131rarak, <code>Provisioned Concurrency<\/code> kullanarak fonksiyon \u00f6rneklerini her zaman s\u0131cak tutarak, daha k\u00fc\u00e7\u00fck ve hafif kod paketleri olu\u015fturarak ve Python veya Node.js gibi daha h\u0131zl\u0131 ba\u015flatma s\u00fcrelerine sahip dilleri tercih ederek so\u011fuk ba\u015flang\u0131\u00e7 s\u00fcrelerini d\u00fc\u015f\u00fcrebilirsiniz.<\/p>\n<\/li>\n<\/ul>\n<div class=\"uzman-ipucu\">\n        Uzman \u0130pucu: Mobil cihazlarda web uygulaman\u0131z\u0131n performans\u0131n\u0131 ve kullan\u0131c\u0131 deneyimini art\u0131rmak i\u00e7in, sunucusuz mimarinin g\u00fcc\u00fcn\u00fc responsive tasar\u0131m prensipleriyle birle\u015ftirin. \u00d6rne\u011fin, AWS Lambda ile i\u015flenen g\u00f6rselleri farkl\u0131 ekran boyutlar\u0131na g\u00f6re otomatik olarak servis edebilir ve a\u015fa\u011f\u0131daki gibi CSS medya sorgular\u0131 kullanarak cihazlara \u00f6zel d\u00fczenler olu\u015fturabilirsiniz.<\/p>\n<pre><code class=\"language-css\">\n\/* Genel d\u00fczen *\/\n.container {\n    display: flex;\n    flex-wrap: wrap;\n    gap: 20px;\n    padding: 20px;\n}\n\n\/* K\u00fc\u00e7\u00fck ekranlar i\u00e7in (mobil) *\/\n@media screen and (max-width: 768px) {\n    .container {\n        flex-direction: column;\n        align-items: center;\n    }\n    .image-card {\n        width: 100%; \/* Mobil cihazlarda kartlar tam geni\u015flik kaplar *\/\n        max-width: 300px;\n    }\n    .status-panel {\n        font-size: 0.8em;\n    }\n}\n\n\/* Orta ekranlar i\u00e7in (tablet) *\/\n@media screen and (min-width: 769px) and (max-width: 1024px) {\n    .image-card {\n        width: calc(50% - 10px); \/* Tabletlerde iki s\u00fctun *\/\n    }\n}\n\n\/* B\u00fcy\u00fck ekranlar i\u00e7in (masa\u00fcst\u00fc) *\/\n@media screen and (min-width: 1025px) {\n    .image-card {\n        width: calc(33.333% - 13.333px); \/* Masa\u00fcst\u00fcnde \u00fc\u00e7 s\u00fctun *\/\n    }\n}\n        <\/pre>\n<p><\/code><br \/>\n        Bu medya sorgular\u0131, kullan\u0131c\u0131lar\u0131n cihazlar\u0131na g\u00f6re en uygun g\u00f6r\u00fcn\u00fcm\u00fc sunarken, Lambda'n\u0131n dinamik olarak i\u015fledi\u011fi g\u00f6rsellerle birlikte sorunsuz bir deneyim sa\u011flar.\n    <\/div>\n<p><\/body><\/p>\n","protected":false},"excerpt":{"rendered":"Tek Bir Gerilmi\u015f G\u00f6r\u00fcnt\u00fcden AWS Lambda Kod Ge\u00e7i\u015fi ve CI\/CD Kurulumuna Yolculuk Eski sistemlerdeki verimsiz manuel s\u00fcre\u00e7lerden b\u0131kt\u0131n\u0131z&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":[1406],"tags":[],"class_list":{"0":"post-33862","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-aws","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>Tek Bir Gerilmi\u015f G\u00f6r\u00fcnt\u00fcden AWS Lambda Kod Ge\u00e7i\u015fi ve CI\/CD Kurulumuna Yolculuk<\/title>\n<meta name=\"description\" content=\"Tek Bir Gerilmi\u015f G\u00f6r\u00fcnt\u00fcden AWS Lambda Kod Ge\u00e7i\u015fi ve CI\/CD Kurulumuna Yolculuk\" \/>\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\/tek-bir-gerilmis-goruntuden-aws-lambda-kod-gecisi-ve-ci-cd-kurulumuna-yolculuk\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Tek Bir Gerilmi\u015f G\u00f6r\u00fcnt\u00fcden AWS Lambda Kod Ge\u00e7i\u015fi ve CI\/CD Kurulumuna Yolculuk\" \/>\n<meta property=\"og:description\" content=\"Tek Bir Gerilmi\u015f G\u00f6r\u00fcnt\u00fcden AWS Lambda Kod Ge\u00e7i\u015fi ve CI\/CD Kurulumuna Yolculuk\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/tek-bir-gerilmis-goruntuden-aws-lambda-kod-gecisi-ve-ci-cd-kurulumuna-yolculuk\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2025-11-08T01:01:19+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=\"33 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/tek-bir-gerilmis-goruntuden-aws-lambda-kod-gecisi-ve-ci-cd-kurulumuna-yolculuk\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/tek-bir-gerilmis-goruntuden-aws-lambda-kod-gecisi-ve-ci-cd-kurulumuna-yolculuk\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"Tek Bir Gerilmi\u015f G\u00f6r\u00fcnt\u00fcden AWS Lambda Kod Ge\u00e7i\u015fi ve CI\/CD Kurulumuna Yolculuk\",\"datePublished\":\"2025-11-08T01:01:19+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/tek-bir-gerilmis-goruntuden-aws-lambda-kod-gecisi-ve-ci-cd-kurulumuna-yolculuk\/\"},\"wordCount\":6018,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"articleSection\":[\"AWS\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/tek-bir-gerilmis-goruntuden-aws-lambda-kod-gecisi-ve-ci-cd-kurulumuna-yolculuk\/#respond\"]}],\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/tek-bir-gerilmis-goruntuden-aws-lambda-kod-gecisi-ve-ci-cd-kurulumuna-yolculuk\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/tek-bir-gerilmis-goruntuden-aws-lambda-kod-gecisi-ve-ci-cd-kurulumuna-yolculuk\/\",\"name\":\"Tek Bir Gerilmi\u015f G\u00f6r\u00fcnt\u00fcden AWS Lambda Kod Ge\u00e7i\u015fi ve CI\/CD Kurulumuna Yolculuk\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2025-11-08T01:01:19+00:00\",\"description\":\"Tek Bir Gerilmi\u015f G\u00f6r\u00fcnt\u00fcden AWS Lambda Kod Ge\u00e7i\u015fi ve CI\/CD Kurulumuna Yolculuk\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/tek-bir-gerilmis-goruntuden-aws-lambda-kod-gecisi-ve-ci-cd-kurulumuna-yolculuk\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/tek-bir-gerilmis-goruntuden-aws-lambda-kod-gecisi-ve-ci-cd-kurulumuna-yolculuk\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/tek-bir-gerilmis-goruntuden-aws-lambda-kod-gecisi-ve-ci-cd-kurulumuna-yolculuk\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Tek Bir Gerilmi\u015f G\u00f6r\u00fcnt\u00fcden AWS Lambda Kod Ge\u00e7i\u015fi ve CI\/CD Kurulumuna Yolculuk\"}]},{\"@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":"Tek Bir Gerilmi\u015f G\u00f6r\u00fcnt\u00fcden AWS Lambda Kod Ge\u00e7i\u015fi ve CI\/CD Kurulumuna Yolculuk","description":"Tek Bir Gerilmi\u015f G\u00f6r\u00fcnt\u00fcden AWS Lambda Kod Ge\u00e7i\u015fi ve CI\/CD Kurulumuna Yolculuk","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\/tek-bir-gerilmis-goruntuden-aws-lambda-kod-gecisi-ve-ci-cd-kurulumuna-yolculuk\/","og_locale":"tr_TR","og_type":"article","og_title":"Tek Bir Gerilmi\u015f G\u00f6r\u00fcnt\u00fcden AWS Lambda Kod Ge\u00e7i\u015fi ve CI\/CD Kurulumuna Yolculuk","og_description":"Tek Bir Gerilmi\u015f G\u00f6r\u00fcnt\u00fcden AWS Lambda Kod Ge\u00e7i\u015fi ve CI\/CD Kurulumuna Yolculuk","og_url":"https:\/\/fatihsoysal.com\/blog\/tek-bir-gerilmis-goruntuden-aws-lambda-kod-gecisi-ve-ci-cd-kurulumuna-yolculuk\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2025-11-08T01:01:19+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"33 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/tek-bir-gerilmis-goruntuden-aws-lambda-kod-gecisi-ve-ci-cd-kurulumuna-yolculuk\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/tek-bir-gerilmis-goruntuden-aws-lambda-kod-gecisi-ve-ci-cd-kurulumuna-yolculuk\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"Tek Bir Gerilmi\u015f G\u00f6r\u00fcnt\u00fcden AWS Lambda Kod Ge\u00e7i\u015fi ve CI\/CD Kurulumuna Yolculuk","datePublished":"2025-11-08T01:01:19+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/tek-bir-gerilmis-goruntuden-aws-lambda-kod-gecisi-ve-ci-cd-kurulumuna-yolculuk\/"},"wordCount":6018,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"articleSection":["AWS"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/tek-bir-gerilmis-goruntuden-aws-lambda-kod-gecisi-ve-ci-cd-kurulumuna-yolculuk\/#respond"]}],"copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/tek-bir-gerilmis-goruntuden-aws-lambda-kod-gecisi-ve-ci-cd-kurulumuna-yolculuk\/","url":"https:\/\/fatihsoysal.com\/blog\/tek-bir-gerilmis-goruntuden-aws-lambda-kod-gecisi-ve-ci-cd-kurulumuna-yolculuk\/","name":"Tek Bir Gerilmi\u015f G\u00f6r\u00fcnt\u00fcden AWS Lambda Kod Ge\u00e7i\u015fi ve CI\/CD Kurulumuna Yolculuk","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2025-11-08T01:01:19+00:00","description":"Tek Bir Gerilmi\u015f G\u00f6r\u00fcnt\u00fcden AWS Lambda Kod Ge\u00e7i\u015fi ve CI\/CD Kurulumuna Yolculuk","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/tek-bir-gerilmis-goruntuden-aws-lambda-kod-gecisi-ve-ci-cd-kurulumuna-yolculuk\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/tek-bir-gerilmis-goruntuden-aws-lambda-kod-gecisi-ve-ci-cd-kurulumuna-yolculuk\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/tek-bir-gerilmis-goruntuden-aws-lambda-kod-gecisi-ve-ci-cd-kurulumuna-yolculuk\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Tek Bir Gerilmi\u015f G\u00f6r\u00fcnt\u00fcden AWS Lambda Kod Ge\u00e7i\u015fi ve CI\/CD Kurulumuna Yolculuk"}]},{"@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\/33862","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=33862"}],"version-history":[{"count":0,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/33862\/revisions"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=33862"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=33862"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=33862"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}