Sunucusuz Mimari: Web Uygulamalarında Ölçeklenebilirlik ve Yönetim
Sunucusuz mimari (serverless), uygulama kodunun çalışması için gereken sunucu kaynaklarının kurulum, ölçeklendirme ve bakım sorumluluğunun bulut hizmet sağlayıcısına bırakıldığı bir yürütme modelidir. Bu modelde geliştirme ekipleri fiziksel sunucu, sanal makine veya konteyner kümesi yönetimiyle doğrudan ilgilenmez; belirli bir işi yerine getiren fonksiyonları ve yönetilen arka uç hizmetlerini yazar. "Sunucusuz" ifadesi ortamda hiç sunucu bulunmadığı anlamına gelmez; sunucuların sağlanması, yamalanması ve kapasitesinin ayarlanması işlerinin geliştiricinin doğrudan sorumluluğunda olmadığını anlatır. Kod, olaylar tetiklendiğinde çalışır ve yürütme tamamlandığında ayrılan kaynaklar serbest bırakılır. Bu yönüyle model, geleneksel olarak sürekli açık tutulan uygulama sunucularından farklı bir kaynak tüketim mantığına dayanır.
Sunucusuz Mimarinin Temel İlkeleri
Sunucusuz yaklaşımın ayırt edici özelliği, yürütme birimlerinin olaylar tarafından tetiklenmesidir. Bir HTTP isteği, bir dosya yüklemesi, bir kuyruk mesajı, bir veritabanı değişikliği veya zamanlanmış bir görev, fonksiyonun çalışmasını başlatabilir. Fonksiyon isteği işler, sonucu döndürür ve sonlanır. Bu nedenle uygulama mantığının durum bilgisiz (stateless) biçimde kurgulanması beklenir; oturum, kullanıcı verisi veya yarıda kalan işlem durumu gibi bilgiler harici bir veritabanında, önbellek katmanında ya da nesne depolamada tutulur.
İkinci ilke, altyapının soyutlanmasıdır. Geliştirici yalnızca çalıştırma zamanını, bellek miktarını, zaman aşımı süresini ve ortam değişkenlerini tanımlar; işletim sistemi güncellemeleri, güvenlik yamaları ve donanım arızaları sağlayıcının sorumluluğundadır. Üçüncü ilke ise tüketime dayalı ücretlendirmedir: kaynaklar yalnızca kod çalıştığı süre boyunca tahsis edilir ve kullanım miktarı üzerinden hesaplanır. Bu üç ilke birlikte, değişken trafik koşullarında kapasite planlamasını büyük ölçüde otomatikleştirir.
FaaS ve BaaS: Sunucusuz Yapının İki Bileşeni
Sunucusuz mimari uygulamada iki temel bileşenle tarif edilir: fonksiyon hizmetleri ve yönetilen arka uç hizmetleri. Bu ayrım, sorumluluk sınırlarının anlaşılması açısından yararlıdır.
Fonksiyon Hizmetleri (FaaS)
FaaS (Function as a Service), tek bir işlevi yerine getiren kod parçalarının olaylar karşısında çalıştırılmasını sağlayan yürütme ortamıdır. Fonksiyonlar bağımsız olarak dağıtılır, sürümlenir ve ölçeklenir. Her çağrı ayrı bir yürütme örneğinde gerçekleşebilir; eşzamanlı çağrı sayısı arttığında ortam otomatik olarak yeni örnekler oluşturur. Fonksiyonların kısa süreli ve tek amaçlı olacak biçimde tasarlanması, hem hata izolasyonunu hem de bağımsız güncelleme kolaylığını beraberinde getirir.
Yönetilen Arka Uç Hizmetleri (BaaS)
BaaS (Backend as a Service) kapsamına kimlik doğrulama, ilişkisel veya belge tabanlı veritabanı, nesne depolama, mesaj kuyruğu, arama ve bildirim gibi hazır servisler girer. Bu servisler de sağlayıcı tarafından işletilir ve ölçeklendirilir. Bir web uygulamasında kullanıcı oturumlarının yönetimi, dosya yüklemelerinin saklanması veya işlem kuyruğunun işlenmesi gibi görevler çoğunlukla bu hizmetlere devredilir. Böylece uygulama kodu, altyapı ayrıntıları yerine iş kurallarına odaklanır.
Ölçeklenebilirlik Davranışı ve Otomatik Genişleme
Sunucusuz ortamlarda ölçeklenme, sabit bir sunucu kapasitesinin önceden ayarlanmasına değil, gelen istek sayısına göre dinamik kaynak tahsisine dayanır. Trafik arttığında platform paralel yürütme örneklerini çoğaltır; trafik azaldığında bu örnekleri kademeli olarak kapatır. Kullanıcı tarafında bu süreç, çoğu uygulama için kesintisiz görünür. Ölçeklenme davranışını etkileyen başlıca etkenler şunlardır:
- Eşzamanlılık sınırları: Hesaplar ve fonksiyonlar için tanımlanmış varsayılan paralel yürütme kotaları bulunur; bu kotalar talep üzerine artırılabilir.
- Bölge ve bölge içi dağıtım: Fonksiyonlar birden fazla coğrafi bölgede çalıştırılarak kullanıcıya yakın yürütme ve bölgesel hata toleransı sağlanabilir.
- Bağımlı servis kapasitesi: Veritabanı bağlantı havuzları ve harici servis limitleri, toplam ölçeklenme kapasitesini sınırlayan unsurlar arasındadır.
- Kuyruk tabanlı yük dengeleme: Ani talep dalgalanmaları, doğrudan fonksiyona yönlendirmek yerine kuyruk üzerinden tamponlanarak işlenebilir.
Bu yapı, kampanya dönemlerinde veya düzensiz trafik alan uygulamalarda kapasite planlaması yükünü azaltır. Bununla birlikte otomatik ölçeklenme, veritabanı gibi durum tutan bileşenlerin de aynı hızda ölçeklendiği anlamına gelmez; mimari tasarımda bu katmanların ayrıca ele alınması gerekir.
Soğuk Başlangıç ve Gecikme Yönetimi
Bir fonksiyon belirli bir süre çağrılmadığında yürütme ortamı kapatılabilir. Yeni bir çağrı geldiğinde ortamın yeniden hazırlanması gerekir ve bu ilk yanıt süresi, sıcak yürütmelere kıyasla daha uzun olabilir. Literatürde soğuk başlangıç (cold start) olarak adlandırılan bu durum, yürütme ortamının dili, paket boyutu ve bağımlılık sayısıyla ilişkilidir. Paketin küçük tutulması, başlatma sırasında yapılan işlerin azaltılması, düzenli trafik alan fonksiyonlarda eşzamanlılığın önceden hazır tutulması ve gecikmeye duyarlı iş yüklerinin ayrıştırılması, bu etkinin azaltılmasında kullanılan yaygın yaklaşımlardır. Gecikme hedefleri belirlenirken ortalama süre yerine dağılımın üst ucundaki değerlerin izlenmesi daha doğru bir değerlendirme sağlar.
Yönetim Kolaylıkları ve Sorumluluk Paylaşımı
Sunucusuz modelde sorumluluklar sağlayıcı ile geliştirici arasında paylaşılır. Sağlayıcı veri merkezi altyapısını, sanallaştırma katmanını, çalıştırma zamanının bakımını ve platform güvenlik güncellemelerini üstlenir. Geliştirici ise uygulama kodundan, kimlik ve yetki yapılandırmasından, ortam değişkenlerinden, bağımlılık yönetiminden ve veri modelinden sorumludur. Bu paylaşım, operasyonel iş yükünü azaltırken yapılandırma hatalarının etkisini de artırabilir; bu nedenle dağıtım süreçlerinin otomasyona bağlanması ve değişikliklerin sürüm kontrolünde izlenmesi önem taşır.
Yönetim açısından öne çıkan kolaylıklar arasında altyapı tanımının kod biçiminde saklanabilmesi, fonksiyonların bağımsız olarak dağıtılabilmesi, trafik yönlendirme ile kademeli sürüm yayınlamanın desteklenmesi ve ortamların birbirinden yalıtılması sayılabilir. Bu özellikler, ekiplerin küçük ve sık değişiklikler yayınlamasına olanak tanır.
Maliyet Yapısı ve Kaynak Tüketimi
Sunucusuz hizmetlerde ücretlendirme genellikle çağrı sayısı, yürütme süresi ve bellek tahsisi üzerinden hesaplanır; bazı yönetilen servislerde ise depolama, veri transferi ve okuma-yazma işlemleri esas alınır. Sürekli açık tutulan sunuculara kıyasla, düşük ve düzensiz trafikte maliyetin kullanımla orantılı olması beklenir. Buna karşılık yüksek ve istikrarlı trafikte, birim yürütme maliyetleri toplamda farklı bir tablo oluşturabilir. Maliyet değerlendirmesi yapılırken fonksiyon sürelerinin, bellek yapılandırmasının, harici servis çağrılarının ve veri çıkış trafiğinin birlikte izlenmesi gerekir. Gereksiz ağ çağrılarının azaltılması ve yürütme sürelerinin kısaltılması, hem performans hem de maliyet açısından doğrudan etkilidir.
Web Uygulamalarında Kullanım Senaryoları
Sunucusuz mimari, her uygulama için uygun bir çözüm değildir; ancak belirli iş yüklerinde belirgin avantajlar sunar. Yaygın kullanım alanları şu başlıklarda toplanabilir:
- API uç noktaları: Form gönderimi, arama, kimlik doğrulama ve veri sorgulama gibi kısa süreli isteklerin işlenmesi.
- Arka plan işleri: Görsel işleme, rapor üretimi, e-posta gönderimi ve veri dönüştürme gibi zamanlanmış veya kuyruk tabanlı görevler.
- İçerik işleme akışları: Yüklenen dosyaların biçim dönüştürme, küçük resim üretme ve meta veri çıkarma adımları.
- Web kancaları ve entegrasyonlar: Üçüncü taraf sistemlerden gelen olayların karşılanması ve yönlendirilmesi.
- Statik içerik sunumu: Önceden üretilmiş sayfaların dağıtım ağları üzerinden sunulması ve dinamik bölümlerin fonksiyonlarla tamamlanması.
Uzun süreli bağlantı gerektiren, sürekli hesaplama yapan veya çok düşük ve öngörülemez gecikme eşiği bulunan iş yüklerinde ise mimarinin sınırları dikkate alınmalıdır.
Sınırlamalar ve Dikkat Edilmesi Gereken Noktalar
Sunucusuz yürütme ortamları, yürütme süresi, paket boyutu, eşzamanlılık ve geçici disk alanı gibi konularda belirli sınırlar tanımlar. Fonksiyonlar arasında durum paylaşımı bulunmadığı için uygulama mantığının bu kısıta göre kurgulanması gerekir. Dağıtık yapı, hata ayıklamayı ve uçtan uca izlemeyi geleneksel tek süreçli uygulamalara göre daha karmaşık hale getirebilir. Ayrıca sağlayıcıya bağımlılık, taşınabilirlik ve uzun vadeli maliyet planlaması açısından değerlendirilmesi gereken bir konudur. Bu nedenle mimari kararlar, iş yükünün trafik profili, veri hassasiyeti ve ekip yetkinlikleriyle birlikte ele alınmalıdır.
Güvenlik ve Uyumluluk Yaklaşımı
Sunucusuz ortamlarda güvenlik, büyük ölçüde kimlik ve yetki yönetimine dayanır. Her fonksiyona yalnızca ihtiyaç duyduğu kaynaklara erişim veren en az yetki ilkesi uygulanmalıdır. Gizli bilgilerin kod içine gömülmesi yerine yönetilen gizli anahtar servislerinde saklanması, ortam değişkenlerinin hassas veri içermemesi ve bağımlılıkların düzenli olarak güncellenmesi temel uygulamalardır. Gelen isteklerin doğrulanması, hız sınırlaması ve günlük kayıtlarının merkezi olarak toplanması da saldırı yüzeyinin yönetilmesine katkı sağlar. Kişisel veri işleyen uygulamalarda saklama süreleri, veri konumu ve erişim kayıtları gibi yükümlülükler mimari tasarımın parçası olarak planlanmalıdır.
İzleme, Gözlemlenebilirlik ve Sürüm Yönetimi
Dağıtık ve kısa ömürlü yürütme birimlerinde gözlemlenebilirlik, metrik, günlük ve iz (trace) verilerinin birlikte toplanmasını gerektirir. Çağrı sayısı, hata oranı, yürütme süresi dağılımı, soğuk başlangıç sıklığı ve eşzamanlılık kullanımı izlenmesi gereken başlıca göstergelerdir. İsteklerin birden fazla fonksiyon ve yönetilen servis arasında ilerlediği durumlarda, bir isteğin tüm adımlarını tek bir kimlik üzerinden takip edebilmek sorun giderme süresini kısaltır. Sürüm yönetimi tarafında, fonksiyonların sürümlenmesi, takma adlar üzerinden trafik yönlendirmesi ve kademeli yayın stratejileri, geri alma işlemlerini kolaylaştırır.
Alan Adı, DNS ve Sertifika Yönetimiyle İlişkisi
Sunucusuz olarak dağıtılan bir web uygulamasında kullanıcı deneyimi, büyük ölçüde ad çözümlemesi ve sertifika yapılandırmasına bağlıdır. Uygulamanın özel alan adı üzerinden sunulması için DNS kayıtlarının ilgili dağıtım uç noktasına yönlendirilmesi gerekir; kök alan adı için kullanılan kayıt türleri ile alt alan adları için kullanılan kayıt türleri farklılık gösterebilir. TLS sertifikalarının yönetimi çoğunlukla platform tarafından otomatikleştirilir; ancak sertifika yenileme süreçlerinin ve alan adı doğrulamasının izlenmesi, kesintilerin önlenmesi açısından önemlidir. İçerik dağıtım ağı ve önbellekleme yapılandırması, dinamik fonksiyon çağrılarının sayısını azaltarak hem gecikmeyi hem de maliyeti etkiler. Arama motoru görünürlüğü açısından ise sunucu tarafında üretilen yanıtların durum kodları, yönlendirme kuralları ve site haritası erişilebilirliği tutarlı olmalıdır; tek sayfa uygulamalarında içeriğin istemci tarafında üretilmesi, tarama ve indeksleme davranışını doğrudan etkileyebilir.
Mimari Değerlendirme Ölçütleri
Sunucusuz mimarinin bir projeye uygunluğu değerlendirilirken birkaç ölçüt birlikte ele alınabilir. Trafik profilinin düzensiz veya öngörülemez olması, otomatik ölçeklenmenin sağladığı esnekliği anlamlı kılar. İş yükünün kısa süreli ve bağımsız görevlere ayrılabiliyor olması, fonksiyon tabanlı tasarımı kolaylaştırır. Ekibin yönetilen servislerle çalışma deneyimi, dağıtım ve izleme süreçlerinin olgunluğunu belirler. Veri tutarlılığı, gecikme hassasiyeti ve düzenleyici yükümlülükler ise tasarımın sınırlarını çizer. Bu ölçütlerin yazılı biçimde kayıt altına alınması, hem teknik kararların gerekçelendirilmesini hem de ilerleyen dönemlerde mimarinin yeniden değerlendirilmesini kolaylaştırır.