Serverless Nedir? Serverless Bilişim Basitçe Anlatıldı
Serverless, kendiniz hiçbir sunucu kurmadan ya da yönetmeden kod çalıştırma yöntemidir. Kodunuzu bir bulut sağlayıcısına verirsiniz; kod yalnızca bir şey onu tetiklediğinde — bir web isteği, yüklenen bir dosya, bir ödeme bildirimi — çalışır ve sonra durur. Genellikle boşta duran bir makine için değil, kodunuzun gerçekten çalıştığı süre için ödeme yaparsınız.
Yapay zekayla inşa ederken serverless neden önemlidir
Yapay zekayla bir uygulama inşa edip barındırma seçeneklerine ya da koda baktığınızda “serverless fonksiyonlar”, “edge fonksiyonlar” ya da “bulut fonksiyonları” ile karşılaşırsınız. Birçok barındırma platformu bunları sunar ve bazı yapay zeka inşa ediciler backend’leri bu şekilde yayınlar. Modeli anlamak üç pratik soruda yardımcı olur:
- Maliyet. Kimse kullanmazken uygulamanız para harcar mı?
- Hız. Sessiz bir dönemden sonraki ilk istek neden daha yavaş?
- Sınırlar. Uzun bir görev — büyük bir rapor üretmek, bir video işlemek — neden zaman aşımına uğradı?
Serverless’ın olmadığını bilmek de faydalıdır: backend’in olmaması anlamına gelmez. Hâlâ sunucu tarafı kodunuz vardır; yalnızca makineleri başka biri çalıştırır. Temel bilgiler için sunucu nedir rehberine bakın.
Günlük hayattan bir benzetme
Geleneksel bir sunucu, bir araba sahibi olmak gibidir. Her zaman oradadır, anında hazırdır; ama sürseniz de sürmeseniz de — sigorta, park, bakım — ödersiniz.
Serverless ise taksi çağırmak gibidir. Yalnızca yaptığınız yolculuklar için ödersiniz ve aynı anda yüz kişi taksi isterse yüz taksi gelir. Ama arabanın gelmesi için kısa bir bekleme olabilir (soğuk başlatma), her yolculuğun bir en uzun süresi vardır ve şoför son yolculuğunuzu hatırlamaz (fonksiyonlar durumsuzdur — stateless).
Serverless fonksiyonlar nasıl çalışır
En yaygın biçiminde, functions as a service denir:
- Bir fonksiyon yazarsınız —
/api/bookingsadresine gelen bir POST’u işleyen gibi, tek tür bir olayı ele alan küçük bir kod parçası. - Yayınlarsınız. Sağlayıcı onu saklar ve bir tetikleyiciye bağlar: bir URL, bir zamanlama, depoya yeni bir dosya, bir kuyruktaki mesaj.
- Bir olay gelir. Sağlayıcı fonksiyonunuzun bir kopyasını başlatır (ya da sıcak bir kopyayı yeniden kullanır), çalıştırır ve sonucu döndürür.
- Kendiliğinden ölçeklenir. Aynı anda bin istek gelirse, sağlayıcı hesabınızın limitlerine kadar birçok kopyayı paralel çalıştırır.
- Boşa çıkar. Trafik durduğunda kopyalar kapatılır. Hiçbir şey çalışmıyorsa, işlem gücü için hiçbir şey ödemezsiniz.
JavaScript’te küçük bir serverless fonksiyon şöyle görünebilir:
export default async function handler(request) {
const { name } = await request.json();
return Response.json({ message: `Hello, ${name}` });
}
Sunucu başlatmak, bir port açmak ya da bir süreci ayakta tutmak için kod yoktur. Tüm bunları platform yönetir.
“Serverless” terimi, otomatik ölçeklenen ve kullanıma göre faturalanan diğer yönetilen hizmetler için de daha gevşek biçimde kullanılır — örneğin boştayken duraklayan serverless veritabanları gibi.
Temel terimler
| Terim | Anlamı |
|---|---|
| Fonksiyon (FaaS) | Sağlayıcının talep üzerine çalıştırdığı küçük bir kod birimi. |
| Tetikleyici / olay | Fonksiyonu başlatan şey — bir HTTP isteği, dosya yüklemesi, zamanlayıcı, kuyruk mesajı. |
| Soğuk başlatma | Bir isteği işlemeden önce fonksiyonun yeni bir kopyasının başlaması gereken gecikme. |
| Sıcak | Zaten çalışan ve hemen yanıt verebilen bir kopya. |
| Durumsuz (stateless) | Fonksiyon çalışmalar arasında bellek tutmaz. Kalıcı olması gereken her şey bir veritabanına ya da depolamaya konur. |
| Zaman aşımı (timeout) | Bir çalışmaya izin verilen en fazla süre. Örneğin AWS Lambda’nın üst sınırı 15 dakikadır; birçok platformun varsayılanı çok daha kısadır. |
| Edge fonksiyon | Kullanıcılara yakın birçok konumda çalıştırılan ve çoğu zaman daha sıkı sınırları olan fonksiyon. |
| Sıfıra ölçekleme (scale to zero) | Trafik yokken hiçbir şey çalıştırmamak ve işlem gücü için hiçbir şey ödememek. |
Uygulamalı örnek: küçük bir randevu sitesi
Bir yoga stüdyosunun randevu sitesi, yeni program yayınlandığında her pazar akşamı bir ziyaret patlamasına, haftanın geri kalanında ise çok az ziyarete maruz kalır.
- Sürekli açık bir sunucuda, stüdyo pazar akşamının zirvesine göre boyutlandırılmış bir makine için 7/24 ödeme yapar ve geri kalan zamanın çoğunda makine boşta durur.
- Serverless fonksiyonlarla,
GET /api/classesvePOST /api/bookingsfonksiyonlardır. Pazarki yoğunluk otomatik olarak birçok kopya başlatır; sakin bir salı sabahında neredeyse hiçbir şey çalışmaz ve fatura sıfıra yakın olur.
Ödünleşimler de ortaya çıkar. Salı sabahı siteyi ilk açan kişi soğuk başlatma nedeniyle biraz ekstra bekleyebilir. Veritabanı, birçok fonksiyon kopyasından gelen çok sayıda kısa ömürlü bağlantıyı yönetmek zorundadır; bu da bir bağlantı havuzlayıcısı (connection pooler) gerektirebilir. Ve stüdyo daha sonra “herkesin yıllık katılım PDF’sini üret” gibi bir görev isterse, fonksiyonun zaman sınırını aşabilir ve başka bir yerde çalışması gerekebilir.
Serverless ne zaman uyar — ne zaman uymaz
| İyi uyum | Daha az uygun |
|---|---|
| Düşük, ani ya da öngörülemeyen trafik | Sürekli yoğun trafik; bu durumda sürekli açık sunucu daha ucuz olabilir |
| Kısa istek/yanıt işleri: API’ler, form işleyicileri, webhook’lar | Uzun süren işler: büyük video işleme, büyük veri içe aktarımları |
| Sunucu yönetmek istemeyen küçük ekipler | Canlı bağlantıları açık tutan uygulamalar (bazı sohbet ya da çok oyunculu özellikler), platform bunu desteklemiyorsa |
| Olay işleme: “bir dosya yüklendiğinde küçük resim oluştur” | İstekler arasında çok fazla bellek tutması gereken uygulamalar |
Yaygın yanlış anlamalar
- “Serverless backend olmadığı anlamına gelir.” Yönetilecek sunucu olmadığı anlamına gelir. Hâlâ backend kodu yazar ve güvenliğini sağlarsınız.
- “Serverless her zaman daha ucuzdur.” Düşük hacimde ucuzdur, ama yüksek ve sürekli hacimde istek başına fiyatlandırma birikebilir.
- “Serverless sonsuz ölçeklenir.” Platformların eşzamanlılık limitleri vardır ve veritabanınız fonksiyonlardan çok önce darboğaz olabilir.
- “Bir fonksiyonda kaydedilen dosyalar bir dahaki sefere de orada olur.” Yerel depolama geçicidir. Veritabanı ya da dosya depolama kullanın.
- “Scale-to-zero, serverless ile aynıdır.” İlişkilidir ama aynı değildir. Bazı platformlar uygulamanızı, boşken uyuyan ve bir sonraki istekte uyanan olağan bir sunucu olarak çalıştırır — benzer tasarruf ve benzer ilk istek gecikmesi, ama istek başına fonksiyon tarzı zaman sınırları olmadan.
Yapay zeka inşa edicinizden ne istemelisiniz
- “Bu backend serverless fonksiyonlar olarak mı çalışacak, yoksa sürekli açık ya da uyuyan bir sunucu olarak mı? Bunun maliyet açısından anlamı nedir?”
- “Herhangi bir görev platformun zaman sınırını aşabilir mi? Öyleyse bunları nasıl ele almalıyız?”
- “Kalıcı olması gereken her şeyi bellekte ya da yerel dosyalarda değil, veritabanında ya da dosya depolamada tut.”
- “Birçok kopya aynı anda çalışırsa veritabanı bağlantıları nasıl yönetilmeli?”
- “Uygulama bir süre boşta kaldıktan sonraki ilk istekte gecikme ne kadar?”
Mythex uygulamaları nasıl barındırır
Mythex, barındırmasını serverless fonksiyonlar olarak tanımlamaz. Yayınladığınızda uygulamanız, Mythex’in sizin için yönettiği normal bir web uygulaması ya da container olarak çalışır — kurulacak bir barındırma yoktur. Bu sıfıra ölçeklemedir: Yayınlanmış uygulamalar ve veritabanları boştayken uyur, bir sonraki ziyarette uyanır; uyuyan bir uygulama işlem gücü için hiçbir şey harcamaz ve ek makineler yalnızca trafik yoğun olduğunda başlar (Pro’da hizmet başına en fazla 3). Bağlı Postgres veritabanı da 5 dakika boşta kaldıktan sonra uyur ve yalnızca uyanık kaldığı süre için faturalandırılır. Böylece “kullandığın kadar öde” avantajının büyük kısmını, sessiz bir dönemden sonra aynı tür ilk istek gecikmesiyle birlikte elde edersiniz. Dokümantasyondaki barındırma limitleri bölümüne ve rehberlerimizden web barındırma nedir ve barındırma maliyetlerini düşürme rehberlerine bakın.
Sorular
Serverless basitçe ne demek?
Serverless, kodunuzu bir bulut sağlayıcısına verdiğinizde, sunucu kurmadan ya da onlarla ilgilenmeden kodun yalnızca gerektiğinde, örneğin bir istek geldiğinde çalışması demektir. Genellikle sürekli açık bir makine için değil, kodunuzun gerçekten çalıştığı süre için ödeme yaparsınız.
Serverless’ta gerçekten sunucu yok mu?
Sunucular vardır; sadece siz onları yönetmezsiniz. Sağlayıcı kodunuzu kendi makinelerinde çalıştırır, istekler geldiğinde başlatır, yük altında ölçeklendirir ve boştayken kapatır.
Soğuk başlatma (cold start) nedir?
Soğuk başlatma, bir serverless fonksiyon boşta kaldıktan sonra çalıştığında oluşan ek gecikmedir; çünkü sağlayıcının önce yeni bir kopyasını başlatması gerekir. Platforma, dile ve kod boyutuna göre neredeyse fark edilmezden bir saniye ya da daha fazlasına kadar değişebilir.
Serverless normal bir sunucudan daha ucuz mu?
Düşük ya da dalgalı trafiği olan uygulamalar için çoğu zaman evet, çünkü boştayken neredeyse hiçbir şey ödemezsiniz. Yoğun ve sürekli trafiği olan uygulamalarda ise sürekli açık bir sunucu daha ucuza gelebilir. Bu, kullanım şekline ve sağlayıcının fiyatlandırmasına bağlıdır.
Serverless platformlarına örnekler nelerdir?
Bilinen örnekler arasında AWS Lambda, Google Cloud Run functions, Azure Functions, Cloudflare Workers ve Vercel ile Netlify gibi barındırma platformlarının fonksiyon özellikleri bulunur.