{"id":427,"date":"2026-09-02T15:58:21","date_gmt":"2026-09-02T15:58:21","guid":{"rendered":"https:\/\/www.vps.tc\/blog\/?p=427"},"modified":"2026-09-02T09:21:18","modified_gmt":"2026-09-02T09:21:18","slug":"serverless-nedir-avantajlari-ve-kullanim-alanlari","status":"publish","type":"post","link":"https:\/\/www.vps.tc\/blog\/tr\/serverless-nedir-avantajlari-ve-kullanim-alanlari\/","title":{"rendered":"Serverless Nedir? Avantajlar\u0131 ve Kullan\u0131m Alanlar\u0131"},"content":{"rendered":"<div class=\"aiw-toc\" style=\"border:1px solid #dbe3ea;border-radius:8px;padding:16px 20px;margin:0 0 28px\"><strong>\u0130\u00e7indekiler<\/strong><\/p>\n<ol style=\"margin:10px 0 0;padding-left:22px\">\n<li><a href=\"#serverless-nedir-gercekten-sunucusuz-mudur\">Serverless nedir, ger\u00e7ekten sunucusuz mudur?<\/a><\/li>\n<li><a href=\"#modelin-iki-temel-parcasi\">Modelin iki temel par\u00e7as\u0131<\/a><\/li>\n<li><a href=\"#geleneksel-vpsten-farki-ne\">Geleneksel VPS&#039;ten fark\u0131 ne?<\/a><\/li>\n<li><a href=\"#istekten-fonksiyona-calisma-akisi\">\u0130stekten fonksiyona: \u00e7al\u0131\u015fma ak\u0131\u015f\u0131<\/a><\/li>\n<li><a href=\"#avantajlari-nerede-ortaya-cikiyor\">Avantajlar\u0131 nerede ortaya \u00e7\u0131k\u0131yor?<\/a><\/li>\n<li><a href=\"#serverless-hangi-islerde-daha-rahat-eder\">Serverless hangi i\u015flerde daha rahat eder?<\/a><\/li>\n<li><a href=\"#gercek-hayatta-yaptigim-kucuk-bir-zamanlayici-hatasi\">Ger\u00e7ek hayatta yapt\u0131\u011f\u0131m k\u00fc\u00e7\u00fck bir zamanlay\u0131c\u0131 hatas\u0131<\/a><\/li>\n<li><a href=\"#sinirlar-ve-can-sikabilecek-taraflar\">S\u0131n\u0131rlar ve can s\u0131kabilecek taraflar<\/a><\/li>\n<li><a href=\"#guvenlik-tarafinda-neleri-kontrol-ederim\">G\u00fcvenlik taraf\u0131nda neleri kontrol ederim?<\/a><\/li>\n<li><a href=\"#serverless-mi-container-mi-vps-mi\">Serverless m\u0131, container m\u0131, VPS mi?<\/a><\/li>\n<li><a href=\"#ilk-denemeden-once-kontrol-ettiklerim\">\u0130lk denemeden \u00f6nce kontrol ettiklerim<\/a><\/li>\n<li><a href=\"#sik-sorulan-sorular\">S\u0131k Sorulan Sorular<\/a><\/li>\n<\/ol>\n<\/div>\n<h2 id=\"serverless-nedir-gercekten-sunucusuz-mudur\">Serverless nedir, ger\u00e7ekten sunucusuz mudur?<\/h2>\n<p>Gece vardiyas\u0131nda, g\u00fcnde yaln\u0131zca birka\u00e7 dakika \u00e7al\u0131\u015fan k\u00fc\u00e7\u00fck bir webhook servisi i\u00e7in ayr\u0131lm\u0131\u015f VPS&#8217;e bakarken bu soruya tak\u0131lm\u0131\u015ft\u0131m: Bu servis k\u0131sa s\u00fcre \u00e7al\u0131\u015f\u0131yor, geri kalan zamanda neden i\u015fletim sistemi, web sunucusu ve izleme d\u00fczeni ayakta duruyor? Sunucunun bo\u015fta beklemesi tek ba\u015f\u0131na sorun de\u011fil. Yama, kapasite planlamas\u0131, log rotasyonu, yedek ve g\u00fcvenlik sorumlulu\u011fu yine devam ediyor.<\/p>\n<p>Serverless, bu operasyon y\u00fck\u00fcn\u00fcn b\u00fcy\u00fck b\u00f6l\u00fcm\u00fcn\u00fcn bulut sa\u011flay\u0131c\u0131s\u0131na b\u0131rak\u0131ld\u0131\u011f\u0131 bir \u00e7al\u0131\u015fma modelidir. Ad\u0131 sunucusuz olsa da fiziksel ve sanal sunucular ortadan kaybolmaz. Kodunuz h\u00e2l\u00e2 bir makinede \u00e7al\u0131\u015f\u0131r; yaln\u0131zca o makinenin i\u015fletim sistemi, kapasitesi, a\u011f katman\u0131 ve \u00e7o\u011fu zaman \u00e7al\u0131\u015fma zaman\u0131 sizin taraf\u0131n\u0131zdan y\u00f6netilmez.<\/p>\n<p>Benim i\u00e7in serverless nedir sorusunun k\u0131sa cevab\u0131 \u015fu: Uygulamay\u0131 s\u00fcrekli \u00e7al\u0131\u015fan bir sunucu yerine HTTP istekleriyle veya olaylarla tetiklenen k\u00fc\u00e7\u00fck \u00e7al\u0131\u015fma birimleri \u015feklinde \u00e7al\u0131\u015ft\u0131rmakt\u0131r. Sa\u011flay\u0131c\u0131 bu birimleri ihtiya\u00e7 olduk\u00e7a ba\u015flat\u0131r, kaynak tahsis eder ve \u00e7al\u0131\u015fmad\u0131klar\u0131 zaman \u00e7o\u011fu kullan\u0131m modelinde \u00fccretlendirmeyi azalt\u0131r ya da durdurur.<\/p>\n<h2 id=\"modelin-iki-temel-parcasi\">Modelin iki temel par\u00e7as\u0131<\/h2>\n<p>Serverless denince genellikle iki farkl\u0131 hizmet grubu ayn\u0131 c\u00fcmlede an\u0131l\u0131yor. Bunlar\u0131 ay\u0131rmak, mimari karar verirken kafay\u0131 biraz daha rahat tutuyor.<\/p>\n<h3>Function as a Service: FaaS<\/h3>\n<p>FaaS modelinde uygulama kodunu bir fonksiyon olarak y\u00fcklersiniz. Fonksiyon bir HTTP iste\u011fi, kuyruk mesaj\u0131, dosya y\u00fckleme veya zamanlay\u0131c\u0131 taraf\u0131ndan tetiklenebilir. AWS Lambda, Google Cloud Functions ve Azure Functions bu yakla\u015f\u0131m\u0131n bilinen \u00f6rnekleridir.<\/p>\n<p>Fonksiyonun ya\u015fam d\u00f6ng\u00fcs\u00fc klasik bir VPS servisi gibi de\u011fildir. Bir i\u015flem birka\u00e7 saniye \u00e7al\u0131\u015f\u0131p bitebilir. Trafik artt\u0131\u011f\u0131nda ayn\u0131 fonksiyon paralel \u00f6rneklerle \u00e7o\u011falabilir; trafik d\u00fc\u015f\u00fcnce bu \u00f6rneklerin bir k\u0131sm\u0131 kapat\u0131l\u0131r.<\/p>\n<h3>Backend as a Service: BaaS<\/h3>\n<p>Kimlik do\u011frulama, nesne depolama, veritaban\u0131, mesaj kuyru\u011fu veya bildirim g\u00f6nderimi gibi backend par\u00e7alar\u0131n\u0131 y\u00f6netilen servis olarak kullanmak da serverless mimarinin bir par\u00e7as\u0131 say\u0131l\u0131r. Firebase, Amazon DynamoDB, S3 ve \u00e7e\u015fitli y\u00f6netilen kimlik servisleri bu grupta d\u00fc\u015f\u00fcn\u00fclebilir.<\/p>\n<p>Serverless kullanmak, her \u015feyi tek bir sa\u011flay\u0131c\u0131dan almak zorunda oldu\u011funuz anlam\u0131na gelmez. Servisler birbirine s\u0131k\u0131 ba\u011fland\u0131k\u00e7a platform de\u011fi\u015ftirmek zorla\u015f\u0131r. Bu bedeli ba\u015ftan bilmek yeterince de\u011ferlidir.<\/p>\n<h2 id=\"geleneksel-vpsten-farki-ne\">Geleneksel VPS&#8217;ten fark\u0131 ne?<\/h2>\n<p>Bir VPS kiralad\u0131\u011f\u0131n\u0131zda i\u015fletim sistemi ve servislerin sorumlulu\u011fu sizdedir. Nginx kurar, uygulama kullan\u0131c\u0131s\u0131 a\u00e7ar, g\u00fcvenlik g\u00fcncellemelerini yapar, disk dolulu\u011funu izler ve gerekti\u011finde servisi yeniden ba\u015flat\u0131rs\u0131n\u0131z. Serverless modelinde bu i\u015flerin b\u00fcy\u00fck k\u0131sm\u0131 sa\u011flay\u0131c\u0131ya ge\u00e7er; sizin oda\u011f\u0131n\u0131z fonksiyon kodu, veri ak\u0131\u015f\u0131 ve uygulaman\u0131n davran\u0131\u015f\u0131 olur.<\/p>\n<table>\n<thead>\n<tr>\n<th>Konu<\/th>\n<th>VPS<\/th>\n<th>Serverless<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Sunucu y\u00f6netimi<\/td>\n<td>\u0130\u015fletim sistemi ve servisler sizde<\/td>\n<td>Sa\u011flay\u0131c\u0131 taraf\u0131ndan y\u00f6netilir<\/td>\n<\/tr>\n<tr>\n<td>Kapasite<\/td>\n<td>\u00d6nceden kaynak ay\u0131r\u0131l\u0131r<\/td>\n<td>\u0130htiyaca g\u00f6re otomatik \u00f6l\u00e7eklenebilir<\/td>\n<\/tr>\n<tr>\n<td>\u00c7al\u0131\u015fma modeli<\/td>\n<td>Servis genellikle s\u00fcrekli a\u00e7\u0131kt\u0131r<\/td>\n<td>Fonksiyon tetiklenince \u00e7al\u0131\u015f\u0131r<\/td>\n<\/tr>\n<tr>\n<td>Kontrol<\/td>\n<td>Y\u00fcksek sistem kontrol\u00fc<\/td>\n<td>\u00c7al\u0131\u015fma zaman\u0131 ve platform k\u0131s\u0131tlar\u0131 vard\u0131r<\/td>\n<\/tr>\n<tr>\n<td>\u00dccretlendirme<\/td>\n<td>Ayr\u0131lan kaynak ve s\u00fcre bazl\u0131<\/td>\n<td>\u0130stek, \u00e7al\u0131\u015fma s\u00fcresi ve kullan\u0131lan servis bazl\u0131<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Bu tablo serverless&#8217;\u0131n her durumda daha ucuz veya daha iyi oldu\u011funu g\u00f6stermez. S\u00fcrekli \u00e7al\u0131\u015fan ve trafi\u011fi tahmin edilebilir bir uygulamada uygun fiyatl\u0131 VPS daha sade, hatta daha ekonomik olabilir. Trafi\u011fi d\u00fczensiz bir API&#8217;de ise bo\u015fta bekleyen kapasite i\u00e7in \u00f6deme yapmamak anlaml\u0131 bir avantaj sa\u011flar.<\/p>\n<p>VPS ile serverless aras\u0131ndaki se\u00e7imi de\u011ferlendirirken <em><a href=\"https:\/\/www.vps.tc\/blog\/tr\/bulut-sunucu-vs-vps-hangi-senaryoda-dogru-tercih\/\">Bulut Sunucu vs VPS: Hangi Senaryoda Do\u011fru Tercih<\/a><\/em> yaz\u0131s\u0131ndaki kaynak ve kontrol kar\u015f\u0131la\u015ft\u0131rmas\u0131na da bakabilirsiniz.<\/p>\n<h2 id=\"istekten-fonksiyona-calisma-akisi\">\u0130stekten fonksiyona: \u00e7al\u0131\u015fma ak\u0131\u015f\u0131<\/h2>\n<p>Basit bir HTTP fonksiyonunda ak\u0131\u015f \u00e7o\u011funlukla \u015f\u00f6yledir:<\/p>\n<ol>\n<li>Kullan\u0131c\u0131 veya ba\u015fka bir servis HTTP iste\u011fi g\u00f6nderir.<\/li>\n<li>API ge\u00e7idi iste\u011fi ilgili fonksiyona y\u00f6nlendirir.<\/li>\n<li>Sa\u011flay\u0131c\u0131 uygun \u00e7al\u0131\u015fma ortam\u0131n\u0131 haz\u0131rlar veya s\u0131cak bir ortam\u0131 yeniden kullan\u0131r.<\/li>\n<li>Fonksiyon kodu \u00e7al\u0131\u015f\u0131r ve veritaban\u0131na ya da ba\u015fka bir servise eri\u015fir.<\/li>\n<li>Yan\u0131t d\u00f6ner; \u00e7al\u0131\u015fma ortam\u0131 bir s\u00fcre sonra kapat\u0131labilir.<\/li>\n<\/ol>\n<p>\u0130lk ad\u0131mla son ad\u0131m aras\u0131ndaki s\u00fcre, kullan\u0131c\u0131n\u0131n hissetti\u011fi performans\u0131 do\u011frudan etkiler. Fonksiyon uzun s\u00fcre \u00e7a\u011fr\u0131lmad\u0131ysa yeni \u00e7al\u0131\u015fma ortam\u0131n\u0131n haz\u0131rlanmas\u0131 gerekir. Buna cold start denir. Haz\u0131r bir ortam yeniden kullan\u0131l\u0131rsa warm start ya\u015fan\u0131r ve ba\u015flang\u0131\u00e7 gecikmesi genellikle azal\u0131r.<\/p>\n<p>Cold start; kullan\u0131lan dile, ba\u011f\u0131ml\u0131l\u0131klar\u0131n boyutuna, bellek ayar\u0131na ve sa\u011flay\u0131c\u0131n\u0131n \u00e7al\u0131\u015fma zaman\u0131na g\u00f6re de\u011fi\u015fir. Bu y\u00fczden serverless i\u00e7in tek bir gecikme de\u011feri vermek do\u011fru olmaz. Ben \u00f6l\u00e7meden performans iddias\u0131nda bulunmam. Siz de \u00f6nce ger\u00e7ek trafik modelinizi g\u00f6r\u00fcn.<\/p>\n<h2 id=\"avantajlari-nerede-ortaya-cikiyor\">Avantajlar\u0131 nerede ortaya \u00e7\u0131k\u0131yor?<\/h2>\n<h3>Sunucu operasyonu azal\u0131yor<\/h3>\n<p>\u0130\u015fletim sistemi g\u00fcncellemesi, fiziksel disk ar\u0131zas\u0131, sanal makinenin kapasite planlamas\u0131 ve temel a\u011f bile\u015fenleriyle u\u011fra\u015fmazs\u0131n\u0131z. Bu, operasyon i\u015finin tamamen ortadan kalkt\u0131\u011f\u0131 anlam\u0131na gelmez. Yetki y\u00f6netimi, uygulama g\u00fcncellemeleri, gizli anahtarlar, loglar ve maliyet takibi h\u00e2l\u00e2 sizin sorumlulu\u011funuzdad\u0131r.<\/p>\n<p>Hosting taraf\u0131nda k\u00fc\u00e7\u00fck servislerin zaman\u0131n\u0131 \u00e7o\u011fu zaman uygulama kodu de\u011fil, etraf\u0131ndaki bak\u0131m i\u015fleri t\u00fcketiyor. Bir fonksiyon hizmetine ge\u00e7i\u015f bu y\u00fck\u00fc azaltabilir. Tek bir endpoint i\u00e7in ayr\u0131 VPS i\u015fletmek gereksiz h\u00e2le gelebilir.<\/p>\n<h3>De\u011fi\u015fken trafikle ba\u015fa \u00e7\u0131kmak<\/h3>\n<p>Bir kampanya, haber payla\u015f\u0131m\u0131 veya d\u00f6nemsel raporlama servisi g\u00fcn i\u00e7inde \u00e7ok farkl\u0131 trafik alabilir. Serverless fonksiyonlar\u0131 bu dalgalanmay\u0131 y\u00f6netilen \u00f6l\u00e7ekleme mekanizmalar\u0131yla kar\u015f\u0131lar. \u00d6nceden worker ay\u0131rmak yerine ihtiya\u00e7 olu\u015ftu\u011funda yeni \u00f6rnekler a\u00e7\u0131l\u0131r.<\/p>\n<p>Otomatik \u00f6l\u00e7ekleme s\u0131n\u0131rs\u0131z de\u011fildir. E\u015fzamanl\u0131l\u0131k limitleri, API ge\u00e7idi kotalar\u0131, veritaban\u0131 ba\u011flant\u0131 s\u0131n\u0131rlar\u0131 ve kuyruk kapasitesi birlikte d\u00fc\u015f\u00fcn\u00fclmelidir. Fonksiyon say\u0131s\u0131n\u0131 art\u0131r\u0131rken arka taraftaki MySQL ba\u011flant\u0131 havuzunu unutursan\u0131z \u00f6l\u00e7ekleme veritaban\u0131na \u00e7eki\u00e7le dokunur. <a href=\"https:\/\/www.vps.tc\/blog\/tr\/vps-mysql-kurulumu-guvenli-yapilandirma\/\">VPS&#8217;te MySQL Kurulumu ve G\u00fcvenli Yap\u0131land\u0131rma<\/a> rehberinde ba\u011flant\u0131 ve yetki taraf\u0131ndaki temel noktalar\u0131 ayr\u0131ca ele alm\u0131\u015ft\u0131m.<\/p>\n<h3>Kullan\u0131m kadar \u00f6deme<\/h3>\n<p>Serverless servislerde \u00fccret \u00e7o\u011funlukla istek say\u0131s\u0131, fonksiyonun \u00e7al\u0131\u015fma s\u00fcresi, ayr\u0131lan bellek ve kullan\u0131lan ek servisler \u00fczerinden hesaplan\u0131r. D\u00fc\u015f\u00fck ve d\u00fczensiz trafik i\u00e7in bu model avantajl\u0131 olabilir.<\/p>\n<p>Faturay\u0131 yaln\u0131zca fonksiyon \u00e7a\u011fr\u0131lar\u0131 belirlemez. Log depolama, d\u0131\u015far\u0131ya veri transferi, API ge\u00e7idi, veritaban\u0131 okuma-yazma i\u015flemleri ve NAT gibi par\u00e7alar toplam maliyeti b\u00fcy\u00fctebilir. \u0130lk ay k\u00fc\u00e7\u00fck g\u00f6r\u00fcnen bir deneme, izleme kurulmadan b\u0131rak\u0131l\u0131rsa s\u00fcrpriz bir faturaya d\u00f6n\u00fc\u015febilir.<\/p>\n<h2 id=\"serverless-hangi-islerde-daha-rahat-eder\">Serverless hangi i\u015flerde daha rahat eder?<\/h2>\n<h3>Webhook ve hafif API u\u00e7lar\u0131<\/h3>\n<p>\u00d6deme bildirimi, Git deposu olay\u0131, form g\u00f6nderimi veya \u00fc\u00e7\u00fcnc\u00fc taraf bir servisten gelen webhook&#8217;lar iyi adaylard\u0131r. \u0130stek gelir, do\u011frulama yap\u0131l\u0131r, veri kuyru\u011fa b\u0131rak\u0131l\u0131r ve h\u0131zl\u0131 bir yan\u0131t d\u00f6nd\u00fcr\u00fcl\u00fcr.<\/p>\n<p>Webhook i\u015fleyicisini uzun s\u00fcren i\u015flerle doldurmay\u0131n. G\u00f6rsel d\u00f6n\u00fc\u015ft\u00fcrme, PDF \u00fcretme veya b\u00fcy\u00fck rapor haz\u0131rlama gibi i\u015fleri do\u011frudan HTTP iste\u011fi i\u00e7inde yapmak yerine kuyru\u011fa yaz\u0131p ayr\u0131 bir worker fonksiyonla i\u015flemek daha g\u00fcvenlidir.<\/p>\n<h3>Dosya y\u00fckleme ve medya i\u015fleme<\/h3>\n<p>Kullan\u0131c\u0131 bir dosyay\u0131 nesne depolamaya y\u00fckledi\u011finde tetiklenen fonksiyon k\u00fc\u00e7\u00fck resim \u00fcretebilir, metadata okuyabilir veya vir\u00fcs taramas\u0131 ba\u015flatabilir. Trafik yaln\u0131zca dosya y\u00fcklenirken olu\u015ftu\u011fu i\u00e7in s\u00fcrekli a\u00e7\u0131k bir worker yerine olay tabanl\u0131 yap\u0131 mant\u0131kl\u0131d\u0131r.<\/p>\n<p>B\u00fcy\u00fck dosyalar ve uzun s\u00fcren video i\u015flemleri i\u00e7in sa\u011flay\u0131c\u0131n\u0131n fonksiyon \u00e7al\u0131\u015fma s\u00fcresini, ge\u00e7ici disk alan\u0131n\u0131 ve bellek limitlerini kontrol edin. Her medya i\u015fi serverless&#8217;a s\u0131\u011fmaz. Bazen kuyruk t\u00fcketen bir VPS veya container daha do\u011fru se\u00e7imdir.<\/p>\n<h3>Zamanlanm\u0131\u015f g\u00f6revler<\/h3>\n<p>Her gece rapor \u00fcretmek, eski kay\u0131tlar\u0131 temizlemek veya bir API&#8217;den veri \u00e7ekmek i\u00e7in cron benzeri zamanlay\u0131c\u0131lar kullan\u0131labilir. Serverless cron yakla\u015f\u0131m\u0131nda sunucuda crontab d\u00fczenlemek yerine sa\u011flay\u0131c\u0131n\u0131n scheduler servisi fonksiyonu tetikler.<\/p>\n<p>Bu g\u00f6revleri idempotent tasarlay\u0131n. Ayn\u0131 tetikleme iki kez ger\u00e7ekle\u015firse kay\u0131tlar bozulmamal\u0131, iki kez e-posta g\u00f6nderilmemeli. Da\u011f\u0131t\u0131k sistemlerde tam bir kez \u00e7al\u0131\u015f\u0131r varsay\u0131m\u0131, benim birka\u00e7 kez g\u00f6rd\u00fc\u011f\u00fcm gibi, pahal\u0131 bir varsay\u0131md\u0131r.<\/p>\n<h3>IoT ve olay i\u015fleme<\/h3>\n<p>Sens\u00f6r verisi, kuyruk mesaj\u0131 veya uygulama logu bir olay olarak fonksiyona aktar\u0131labilir. Fonksiyon veriyi filtreler, alarm \u00fcretir ya da zaman serisi veritaban\u0131na yazar. \u00c7ok y\u00fcksek hacimli ve s\u00fcrekli veri ak\u0131\u015f\u0131nda kuyruk, stream ve depolama maliyetlerini birlikte hesaplamak gerekir.<\/p>\n<h2 id=\"gercek-hayatta-yaptigim-kucuk-bir-zamanlayici-hatasi\">Ger\u00e7ek hayatta yapt\u0131\u011f\u0131m k\u00fc\u00e7\u00fck bir zamanlay\u0131c\u0131 hatas\u0131<\/h2>\n<p>Serverless kararlar\u0131n\u0131 de\u011ferlendirirken zamanlanm\u0131\u015f g\u00f6revlerin g\u00f6r\u00fcnmez risklerini \u00f6zellikle kontrol ediyorum. Bunun nedeni, birka\u00e7 y\u0131l \u00f6nce cron&#8217;a fazladan bir y\u0131ld\u0131z yazd\u0131\u011f\u0131m bir gece. Yedek scripti saatlik \u00e7al\u0131\u015facak san\u0131yordum; hatal\u0131 ifade y\u00fcz\u00fcnden her dakika tetiklendi ve k\u0131sa s\u00fcrede posta kuyru\u011funda yakla\u015f\u0131k 40 bin bildirim birikti.<\/p>\n<p>\u0130lk refleksim servisi yeniden ba\u015flatmak oldu. Neyse ki loglara bakt\u0131m ve <code>journalctl<\/code> ile scriptin ger\u00e7ekten her dakika \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 g\u00f6rd\u00fcm. Kuyru\u011fu k\u00f6rlemesine silmek yerine scripti durdurdum, g\u00f6nderilmeyi bekleyen iletileri ay\u0131rd\u0131m ve cron ifadesini d\u00fczelttim. Sonra staging ortam\u0131nda birka\u00e7 saat g\u00f6zlem yapt\u0131m.<\/p>\n<p>Serverless scheduler kullan\u0131rken crontab hatas\u0131 ya\u015famazs\u0131n\u0131z; fakat ayn\u0131 s\u0131n\u0131ftaki sorunlar yine vard\u0131r. Yanl\u0131\u015f aral\u0131k, tekrar teslim edilen olay, ba\u015far\u0131s\u0131z i\u015fin otomatik yeniden denenmesi veya paralel \u00e7al\u0131\u015fan g\u00f6revler beklenmedik maliyet ve veri tekrarlar\u0131 yaratabilir. Zamanlay\u0131c\u0131y\u0131 kurmak kolayd\u0131r. Davran\u0131\u015f\u0131n\u0131 s\u0131namak gerekir.<\/p>\n<h2 id=\"sinirlar-ve-can-sikabilecek-taraflar\">S\u0131n\u0131rlar ve can s\u0131kabilecek taraflar<\/h2>\n<h3>Cold start ve gecikme<\/h3>\n<p>Kullan\u0131c\u0131 her istekte sabit ve \u00e7ok d\u00fc\u015f\u00fck gecikme bekliyorsa cold start kabul edilemeyebilir. Sa\u011flay\u0131c\u0131lar\u0131n provisioned concurrency veya benzeri se\u00e7enekleri bu durumu azaltabilir; haz\u0131r kapasitenin de maliyeti vard\u0131r.<\/p>\n<p>Fonksiyon paketlerini k\u00fc\u00e7\u00fcltmek, gereksiz ba\u011f\u0131ml\u0131l\u0131klar\u0131 kald\u0131rmak ve a\u011f\u0131r ba\u015flang\u0131\u00e7 i\u015flemlerini azaltmak daha temel \u00e7\u00f6z\u00fcmlerdir. Tek endpoint i\u00e7in bir framework&#8217;\u00fc al\u0131\u015fkanl\u0131kla pakete eklemek gereksiz y\u00fck yaratabilir.<\/p>\n<h3>Durum saklama ve veritaban\u0131 ba\u011flant\u0131lar\u0131<\/h3>\n<p>Fonksiyon \u00e7al\u0131\u015fma alan\u0131n\u0131n kal\u0131c\u0131 disk gibi davranaca\u011f\u0131n\u0131 varsaymay\u0131n. Ge\u00e7ici dosyalar ortam kapand\u0131\u011f\u0131nda silinebilir. Kal\u0131c\u0131 veriyi nesne depolama, y\u00f6netilen veritaban\u0131 veya ayr\u0131 bir depolama katman\u0131nda tutun.<\/p>\n<p>Her yeni fonksiyon \u00f6rne\u011finin veritaban\u0131na yeni ba\u011flant\u0131lar a\u00e7mas\u0131 da tehlikelidir. Ba\u011flant\u0131 havuzu, kuyruk ve \u00f6nbellek tasar\u0131m\u0131 olmadan \u00f6l\u00e7ekleme veritaban\u0131n\u0131 bo\u011fabilir. Serverless uygulaman\u0131n arkas\u0131nda h\u00e2l\u00e2 dikkatle y\u00f6netilmesi gereken bir veri katman\u0131 bulunur.<\/p>\n<h3>Sa\u011flay\u0131c\u0131ya ba\u011f\u0131ml\u0131l\u0131k<\/h3>\n<p>Bir sa\u011flay\u0131c\u0131n\u0131n event format\u0131, kimlik servisi, \u00f6zel veritaban\u0131 sorgular\u0131 veya da\u011f\u0131t\u0131m ara\u00e7lar\u0131 kullan\u0131ld\u0131k\u00e7a ta\u015f\u0131ma maliyeti artar. Bu ba\u011f\u0131ml\u0131l\u0131k her zaman yanl\u0131\u015f de\u011fildir. K\u00fc\u00e7\u00fck bir ekip i\u00e7in y\u00f6netilen servisin sa\u011flad\u0131\u011f\u0131 h\u0131z, olas\u0131 ta\u015f\u0131ma maliyetinden daha de\u011ferli olabilir.<\/p>\n<p>Kritik i\u015f mant\u0131\u011f\u0131n\u0131 sa\u011flay\u0131c\u0131ya \u00f6zg\u00fc koddan ay\u0131rmak, veri d\u0131\u015fa aktarma y\u00f6ntemini bilmek ve fonksiyonlar\u0131 yerel ortamda test edebilmek iyi bir sigortad\u0131r. Ben yeni bir servise ge\u00e7erken \u00f6nce &#8220;yar\u0131n bunu nas\u0131l geri al\u0131r\u0131m?&#8221; diye soruyorum.<\/p>\n<h3>\u0130zleme ve hata ay\u0131klama<\/h3>\n<p>VPS \u00fczerinde <code>journalctl<\/code>, Nginx access logu ve s\u00fcre\u00e7 listesiyle iz s\u00fcrd\u00fc\u011f\u00fcn\u00fcz bir ar\u0131za serverless ortam\u0131nda birka\u00e7 servise da\u011f\u0131labilir. \u0130stek kimli\u011fi, korelasyon ID&#8217;si, yap\u0131land\u0131r\u0131lm\u0131\u015f log ve da\u011f\u0131t\u0131k izleme ihtiyac\u0131 burada daha belirgin h\u00e2le gelir.<\/p>\n<p>Fonksiyonun ba\u015far\u0131l\u0131 d\u00f6nmesi i\u015fin ger\u00e7ekten tamamland\u0131\u011f\u0131n\u0131 g\u00f6stermeyebilir. Kuyruk mesaj\u0131 ba\u015far\u0131s\u0131z olmu\u015f, veritaban\u0131 yaz\u0131m\u0131 geri al\u0131nm\u0131\u015f veya \u00fc\u00e7\u00fcnc\u00fc taraf API yan\u0131t vermemi\u015f olabilir. Ba\u015far\u0131 metri\u011fini yaln\u0131zca HTTP 200 ile s\u0131n\u0131rlamay\u0131n.<\/p>\n<h2 id=\"guvenlik-tarafinda-neleri-kontrol-ederim\">G\u00fcvenlik taraf\u0131nda neleri kontrol ederim?<\/h2>\n<p>Serverless hizmette sunucuya SSH ile girmemek sald\u0131r\u0131 y\u00fczeyinin tamam\u0131n\u0131n ortadan kalkt\u0131\u011f\u0131 anlam\u0131na gelmez. Fonksiyonun hangi kaynaklara eri\u015fti\u011fini a\u00e7\u0131k\u00e7a tan\u0131mlay\u0131n. G\u00f6r\u00fcnt\u00fc i\u015fleme fonksiyonunun t\u00fcm veritaban\u0131na yazma yetkisi olmamal\u0131; yaln\u0131zca gereken bucket ve tabloya eri\u015febilmelidir.<\/p>\n<ul>\n<li>Gizli anahtarlar\u0131 kaynak koduna veya d\u00fcz metin yap\u0131land\u0131rma dosyas\u0131na koymay\u0131n.<\/li>\n<li>Fonksiyon ba\u015f\u0131na en az yetki prensibini uygulay\u0131n.<\/li>\n<li>Gelen webhook imzas\u0131n\u0131 do\u011frulay\u0131n ve tekrar oynatma sald\u0131r\u0131lar\u0131n\u0131 d\u00fc\u015f\u00fcn\u00fcn.<\/li>\n<li>\u0130stek g\u00f6vdesi, dosya boyutu ve \u00e7al\u0131\u015fma s\u00fcresi i\u00e7in limit belirleyin.<\/li>\n<li>Ba\u015far\u0131s\u0131z \u00e7a\u011fr\u0131lar ve ola\u011fan d\u0131\u015f\u0131 maliyet art\u0131\u015flar\u0131 i\u00e7in alarm kurun.<\/li>\n<li>Ba\u011f\u0131ml\u0131l\u0131klar\u0131 d\u00fczenli g\u00fcncelleyin ve \u00fcretim paketini gereksiz dosyalardan ar\u0131nd\u0131r\u0131n.<\/li>\n<\/ul>\n<p>Serverless g\u00fcvenli\u011fini sa\u011flay\u0131c\u0131n\u0131n sorumlulu\u011funa b\u0131rakmak do\u011fru de\u011fildir. Sa\u011flay\u0131c\u0131 fiziksel altyap\u0131y\u0131 ve platformu korur; uygulama izinleri, verinin gizlili\u011fi ve kodun g\u00fcvenli\u011fi yine sizin alan\u0131n\u0131zdad\u0131r.<\/p>\n<h2 id=\"serverless-mi-container-mi-vps-mi\">Serverless m\u0131, container m\u0131, VPS mi?<\/h2>\n<p>Karar\u0131 teknoloji modas\u0131na g\u00f6re de\u011fil, i\u015f y\u00fck\u00fcn\u00fcn davran\u0131\u015f\u0131na g\u00f6re veriyorum. K\u0131sa s\u00fcre \u00e7al\u0131\u015fan, olayla tetiklenen ve stateless tasarlanabilen bir i\u015f i\u00e7in serverless g\u00fc\u00e7l\u00fc adayd\u0131r. S\u00fcrekli ba\u011flant\u0131 tutan, \u00f6zel sistem paketlerine ihtiya\u00e7 duyan veya uzun s\u00fcre \u00e7al\u0131\u015fan bir servis i\u00e7in container ya da VPS daha rahat olabilir.<\/p>\n<p>Container kullanmak, sunucu y\u00f6netiminin tamam\u0131n\u0131 ortadan kald\u0131rmaz; uygulaman\u0131n paketlenmesini ve ta\u015f\u0131nmas\u0131n\u0131 kolayla\u015ft\u0131r\u0131r. Kendi VPS&#8217;inizde Docker kullanacaksan\u0131z <a href=\"https:\/\/www.vps.tc\/blog\/tr\/vps-docker-kurulumu-ilk-konteyner\/\">VPS&#8217;te Docker Kurulumu ve \u0130lk Konteyneri \u00c7al\u0131\u015ft\u0131rma<\/a> rehberindeki temel g\u00fcvenlik ad\u0131mlar\u0131na bakabilirsiniz.<\/p>\n<p>Sunucu \u00fczerinde tam kontrol, sabit ayl\u0131k maliyet, \u00f6zel a\u011f yap\u0131land\u0131rmas\u0131 veya s\u00fcrekli \u00e7al\u0131\u015fan bir veritaban\u0131 gerekiyorsa VPS h\u00e2l\u00e2 g\u00fc\u00e7l\u00fc bir \u00e7\u00f6z\u00fcmd\u00fcr. Serverless&#8217;\u0131 sunucunun yeni ve her zaman daha iyi h\u00e2li gibi g\u00f6rmeyin. Belirli i\u015f ak\u0131\u015flar\u0131na uygun bir \u00e7al\u0131\u015fma modelidir.<\/p>\n<h2 id=\"ilk-denemeden-once-kontrol-ettiklerim\">\u0130lk denemeden \u00f6nce kontrol ettiklerim<\/h2>\n<ol>\n<li>\u0130\u015f y\u00fck\u00fcn\u00fcn neyle tetiklendi\u011fini yaz\u0131n: HTTP, kuyruk, dosya olay\u0131 veya zamanlay\u0131c\u0131.<\/li>\n<li>Fonksiyonun en uzun \u00e7al\u0131\u015fma s\u00fcresini ve beklenen bellek ihtiyac\u0131n\u0131 \u00f6l\u00e7\u00fcn.<\/li>\n<li>Tekrar \u00e7al\u0131\u015ft\u0131rma, zaman a\u015f\u0131m\u0131 ve k\u0131smi hata senaryolar\u0131n\u0131 tasarlay\u0131n.<\/li>\n<li>Veriyi nerede kal\u0131c\u0131 tutaca\u011f\u0131n\u0131z\u0131 ve ba\u011flant\u0131 limitlerini belirleyin.<\/li>\n<li>\u0130stek, log, depolama ve a\u011f maliyetlerini birlikte hesaplay\u0131n.<\/li>\n<li>Yerel test, staging ve \u00fcretim ortamlar\u0131n\u0131 birbirinden ay\u0131r\u0131n.<\/li>\n<li>Alarm, log arama ve gerekti\u011finde geri alma prosed\u00fcr\u00fcn\u00fc \u00e7al\u0131\u015ft\u0131r\u0131n.<\/li>\n<\/ol>\n<p>\u0130lk denemeyi k\u00fc\u00e7\u00fck bir webhook veya g\u00f6r\u00fcnt\u00fc metadata i\u015fleyicisiyle yapmak mant\u0131kl\u0131 olabilir. \u00dcretim hesab\u0131nda s\u0131n\u0131rs\u0131z izinlerle deneme yapmak yerine ayr\u0131 bir proje, b\u00fct\u00e7e alarm\u0131 ve dar yetkili servis hesab\u0131 a\u00e7\u0131n. Cron hatamdan sonra zamanlay\u0131c\u0131lar\u0131 yaln\u0131zca kurup b\u0131rakm\u0131yorum; ka\u00e7 kez \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 ve ba\u015far\u0131s\u0131z oldu\u011funda ne yapt\u0131\u011f\u0131n\u0131 da izliyorum.<\/p>\n<h2 id=\"sik-sorulan-sorular\">S\u0131k Sorulan Sorular<\/h2>\n<h3>Serverless \u00fccretsiz midir?<\/h3>\n<p>Genellikle tamamen \u00fccretsiz de\u011fildir. Baz\u0131 sa\u011flay\u0131c\u0131lar d\u00fc\u015f\u00fck kullan\u0131m i\u00e7in \u00fccretsiz kota sunar; fakat istek, \u00e7al\u0131\u015fma s\u00fcresi, log, veri aktar\u0131m\u0131 ve kullan\u0131lan veritaban\u0131 gibi kalemleri ayr\u0131ca kontrol etmek gerekir.<\/p>\n<h3>Serverless uygulama i\u00e7in VPS gerekir mi?<\/h3>\n<p>Fonksiyonun \u00e7al\u0131\u015fmas\u0131 i\u00e7in ayr\u0131ca VPS kiralaman\u0131z gerekmez. \u00d6zel bir veritaban\u0131, VPN, s\u00fcrekli \u00e7al\u0131\u015fan worker veya sa\u011flay\u0131c\u0131n\u0131n sunmad\u0131\u011f\u0131 bir bile\u015fen gerekiyorsa mimarinin bir b\u00f6l\u00fcm\u00fcnde VPS ya da container kullanabilirsiniz.<\/p>\n<h3>Serverless y\u00fcksek trafikte \u00e7al\u0131\u015f\u0131r m\u0131?<\/h3>\n<p>\u00c7al\u0131\u015fabilir; otomatik \u00f6l\u00e7ekleme bu modelin g\u00fc\u00e7l\u00fc taraflar\u0131ndan biridir. Kota, e\u015fzamanl\u0131l\u0131k, veritaban\u0131 ba\u011flant\u0131lar\u0131, kuyruk kapasitesi ve maliyet limitleri test edilmeden y\u00fcksek trafik varsay\u0131m\u0131yla \u00fcretime \u00e7\u0131kmay\u0131n.<\/p>\n<h3>Serverless ile cold start nas\u0131l azalt\u0131l\u0131r?<\/h3>\n<p>Fonksiyon paketini ve ba\u011f\u0131ml\u0131l\u0131klar\u0131 k\u00fc\u00e7\u00fcltmek, ba\u015flang\u0131\u00e7ta yap\u0131lan i\u015fi azaltmak ve uygun \u00e7al\u0131\u015fma zaman\u0131 se\u00e7mek ilk ad\u0131mlard\u0131r. Daha d\u00fc\u015f\u00fck cold start i\u00e7in sa\u011flay\u0131c\u0131n\u0131n s\u00fcrekli haz\u0131r \u00f6rnek se\u00e7enekleri kullan\u0131labilir; kar\u015f\u0131l\u0131\u011f\u0131nda ek \u00fccret olu\u015fabilir.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Serverless mimarinin ne oldu\u011funu, FaaS ve BaaS fark\u0131n\u0131, avantajlar\u0131n\u0131, s\u0131n\u0131rlar\u0131n\u0131 ve hangi projelerde VPS yerine tercih edilebilece\u011fini anlat\u0131yorum.<\/p>\n","protected":false},"author":2,"featured_media":425,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[279],"tags":[1528,849,1526,1530,1524,166],"class_list":["post-427","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-nedir","tag-baas","tag-bulut-bilisim","tag-faas","tag-fonksiyon","tag-serverless","tag-sunucu-yonetimi"],"lang":"tr","translations":{"tr":427,"en":428},"pll_sync_post":[],"_links":{"self":[{"href":"https:\/\/www.vps.tc\/blog\/wp-json\/wp\/v2\/posts\/427","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.vps.tc\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.vps.tc\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.vps.tc\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.vps.tc\/blog\/wp-json\/wp\/v2\/comments?post=427"}],"version-history":[{"count":1,"href":"https:\/\/www.vps.tc\/blog\/wp-json\/wp\/v2\/posts\/427\/revisions"}],"predecessor-version":[{"id":429,"href":"https:\/\/www.vps.tc\/blog\/wp-json\/wp\/v2\/posts\/427\/revisions\/429"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.vps.tc\/blog\/wp-json\/wp\/v2\/media\/425"}],"wp:attachment":[{"href":"https:\/\/www.vps.tc\/blog\/wp-json\/wp\/v2\/media?parent=427"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.vps.tc\/blog\/wp-json\/wp\/v2\/categories?post=427"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.vps.tc\/blog\/wp-json\/wp\/v2\/tags?post=427"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}