Sunucusuz Mimariyle Uygulama Geliştirme Rehberi
Beceri rehberi

Sunucusuz Mimariyle Uygulama Geliştirme Rehberi

Hazırlayan: Mindset Institute EditörlüğüGüncellendi: 5 dk okuma

Sunucusuz uygulama geliştirme adımları: olay tetikleyiciler, fonksiyon tasarımı, dağıtım, güvenlik, gözlemlenebilirlik, eşzamanlılık ve maliyet kontrolü.

Sunucusuz mimari ne demek?

Sunucusuz (serverless) mimaride kodunuzu sunucu makinelerini yönetmeden çalıştırırsınız. Sunucular elbette vardır, ancak sağlama, yama, ölçekleme ve kapasite planı bulut sağlayıcısının sorumluluğundadır. Geliştirici, bir olay geldiğinde çalışan küçük fonksiyonlar yazar ve platform fonksiyonu gereken sayıda çalıştırır.

Bu modelin belirgin özellikleri vardır. Biri olay güdümlü çalışmasıdır: fonksiyon bir HTTP isteği, kuyruğa düşen bir mesaj, depolamaya yüklenen bir dosya ya da zamanlanmış bir saat darbesiyle tetiklenir. Diğeri kullanım kadar ödeme eğilimidir: kaynak yalnızca fonksiyon çalışırken faturalanır. Bu, değişken ya da öngörülemeyen yüklerde cazip olur; ancak sürekli yüksek yükte maliyet hesabı yeniden yapılmalıdır.

Hangi işler sunucusuz mimariye uygun?

Sunucusuz model her uygulamanın yerine geçmez. Daha çok uyan işler genellikle kısa ömürlü, bağımsız ve olay tetiklemeli olanlardır: • Yüklenen görsellerin boyutlandırılması veya belgelerin işlenmesi • Zamanlanmış temizlik, rapor ve veri senkronizasyon işleri • Webhook alıcıları ve harici servis entegrasyonları • Hafif API uçları ve mobil uygulama arka uçları • Kuyruktaki mesajları tüketen olay işleyicileri

Uygun olmayan durumlar da vardır: uzun süre kesintisiz çalışan hesaplamalar, sürekli açık bağlantı tutan servisler, çok düşük ve öngörülebilir gecikme gerektiren işler ya da çalışma ortamı üzerinde tam kontrol isteyen uygulamalar. Bu durumlarda konteyner ya da sanal makine tabanlı çözüm daha doğal olabilir. Doğru soru "sunucusuz mu, değil mi" değil, "bu iş yükü için hangi çalışma biçimi daha az çaba ve risk getirir" sorusudur.

Fonksiyon geliştirme temelleri

İyi bir sunucusuz fonksiyon belirli bir sorumluluk taşır, durumsuzdur ve olay girdisini beklenen biçimde işler. Fonksiyon her çağrıda farklı bir örnekte çalışabileceğinden bellekte ya da yerel diskte kalıcı durum tutulmaz; kalıcı veri bir veritabanı ya da depolama servisine yazılır. Çağrılar arasında yeniden kullanılabilecek pahalı kaynaklar, örneğin veritabanı bağlantısı, fonksiyon gövdesinin dışında başlatılarak sıcak örneklerde tekrar kullanılabilir.

Girdi doğrulaması, zaman aşımı yönetimi ve idempotent tasarım temel alışkanlıklardır. Platformlar çoğu olay kaynağında "en az bir kez" teslim sağladığından aynı olay yinelenerek gelebilir; fonksiyon bunu zarar vermeden işlemelidir. Yerelde geliştirme için platformun emülatörleri veya olayı taklit eden test girdileri kullanılır; böylece her denemede buluta dağıtım gerekmez.

Tetikleyiciler, olay kaynakları ve iş akışı desenleri

Mimari kararların çoğu olay kaynağı seçiminde verilir. Eşzamanlı yanıt isteyen istemciler için API ağ geçidi üzerinden HTTP tetikleyicisi kullanılır. Yanıtın hemen verilmesi gerekmeyen işler için kuyruk ve konu (topic) tabanlı tetikleyiciler tercih edilir; kuyruk, ani yükleri sönümler ve başarısız işleri yeniden denemeye imkân verir. Depolama olayları, bir dosya yüklendiği anda işlemeyi başlatır. Zamanlayıcı tetikleyicileri düzenli işleri çalıştırır.

Birden çok adımı olan iş akışlarında fonksiyonları birbirine zincirlemek kırılgandır. Platformların sunduğu iş akışı orkestrasyonu, adımlar arası durumu, yeniden denemeyi ve telafi mantığını yönetir. Azure tarafındaki Durable Functions bu amaçla kullanılan örneklerden biridir. Hata durumunda başarısız olayları atılmak yerine bir ölü mektup kuyruğuna yönlendirmek, sorunu sonradan incelemenizi sağlar.

Paketleme, dağıtım, güvenlik ve ağ

Fonksiyon kodu ve bağımlılıkları bir paket ya da konteyner imajı olarak dağıtılır. Paket boyutu, başlangıç süresini etkiler; kullanılmayan bağımlılıkları ayıklamak hem hızı hem güvenliği iyileştirir. Ortak kütüphaneler katman (layer) mekanizmasıyla paylaşılabilir. Altyapının kod olarak tanımlanması (IaC) ve dağıtımın bir hat üzerinden yapılması, ortamlar arasında tutarlılık sağlar.

Güvenlikte temel ilke en az yetkidir: her fonksiyonun yalnızca ihtiyaç duyduğu kaynaklara erişim izni olmalıdır. Gizli bilgiler koda yazılmaz; platformun gizli yönetim servisinden okunur. Fonksiyonun özel ağ kaynaklarına, örneğin bir veritabanına, erişmesi gerekiyorsa ağ yapılandırması yapılır; bunun başlangıç süresine etkisi hesaba katılır. Girdi doğrulaması ve bağımlılık güncellemesi, sunucusuz ortamda da geçerli güvenlik sorumluluklarındandır.

Gözlemlenebilirlik, performans ve eşzamanlılık

Sunucusuz uygulamada hata ayıklamak zordur çünkü çalışan bir makineye bağlanamazsınız. Bu yüzden yapılandırılmış günlükler, her isteği izleyen bir korelasyon kimliği ve dağıtık izleme baştan kurulmalıdır. Hata sayısı, süre, azaltılan (throttled) çağrı ve kuyruk gecikmesi gibi göstergeler için uyarılar tanımlanır.

Performansta en çok konuşulan kavram soğuk başlangıçtır: uzun süre çağrılmayan fonksiyonun ilk çağrıda yeni bir ortam hazırlaması nedeniyle gecikmesi. Etkisi, çalışma zamanına, paket boyutuna, bellek ayarına ve ağ yapılandırmasına bağlıdır. Hafif paket, uygun bellek ayarı ve gerekirse önceden ısıtma seçenekleri yardımcı olur. Eşzamanlılık sınırı ise bir denge konusudur: sınırsız ölçekleme, aşağı akıştaki veritabanını ezebilir. Bu yüzden bağımlı sistemleri koruyan eşzamanlılık sınırları ve yeniden deneme politikaları tasarlanmalıdır.

Maliyet yönetimi ve sık hatalar

Kullanım kadar ödeme, kontrolsüz maliyetin olmadığı anlamına gelmez. Sonsuz döngüde kendini tetikleyen bir fonksiyon, hatalı yeniden deneme ya da beklenmedik trafik artışı faturayı hızla büyütebilir. Bütçe uyarıları, çağrı başına süre ve bellek ölçümü, gereksiz çağrıların süzülmesi ve eşzamanlılık sınırları maliyet kontrolünün temel araçlarıdır. İş yükü sürekli ve yoğun hale gelirse alternatif çalışma biçimiyle karşılaştırma yapılmalıdır.

Sık hatalar: • Fonksiyonu büyük bir monolit gibi yazmak ve tüm sorumlulukları aynı pakete yüklemek • Yeniden denemeye ve mükerrer olaya karşı koruma koymamak • Fonksiyonlar arasında uzun zincirli çağrılar kurmak • Aşağı akış sistemin kapasitesini düşünmeden ölçeklemeye izin vermek • Günlük ve izleme olmadan canlıya çıkmak • Sağlayıcıya aşırı bağlanıp taşınabilirliği hiç düşünmemek

Mindset programlarında sunucusuz geliştirme

Mindset'in AWS Lambda ile Sunucusuz Uygulama Geliştirme eğitimi şu modülleri içerir: sunucusuz mimari ilkeleri, fonksiyon geliştirme temelleri, olay kaynakları ve tetikleyiciler, paketleme, katmanlar ve dağıtım, güvenlik ve ağ yapılandırması, gözlemlenebilirlik ve hata ayıklama, performans ve eşzamanlılık yönetimi, maliyet yönetimi ve uçtan uca proje.

Azure Functions ile Sunucusuz Geliştirme eğitimi ise Functions temelleri, tetikleyiciler ve bindingler, Durable Functions ile iş akışı desenleri, barındırma planları ve ölçekleme, güvenlik, yapılandırma ve entegrasyon, izleme ve uçtan uca sunucusuz proje başlıklarını kapsar.

İlgili Mindset programı

AWS Lambda ile Sunucusuz Uygulama Geliştirme

Sık sorulanlar

Sık sorulan sorular

Sunucusuz mimaride gerçekten sunucu yok mu?

Sunucular vardır, ancak yönetimi sizin değil bulut sağlayıcısının sorumluluğundadır. Makine sağlama, işletim sistemi yamaları ve ölçekleme sağlayıcıda kalır; siz yalnızca kodu ve yapılandırmayı yönetirsiniz. Bu nedenle "sunucusuz" ifadesi, sunucuyu görmeme deneyimini anlatır.

AWS Lambda ile Azure Functions arasındaki temel fark nedir?

İkisi de olay tetiklemeli fonksiyon çalıştırır. Farklar olay kaynakları, yapılandırma modeli, barındırma planları ve iş akışı araçlarında ortaya çıkar; örneğin Azure tarafında Durable Functions ile durumlu iş akışı yazılabilir. Seçim çoğunlukla kurumun mevcut bulut ekosistemine göre yapılır.

Soğuk başlangıç nedir, nasıl azaltılır?

Bir süre çağrılmayan fonksiyon, ilk çağrıda yeni çalışma ortamı hazırladığı için gecikir. Hafif paket, uygun bellek ayarı, gereksiz bağımlılıkların ayıklanması ve gerekirse önceden ısıtma seçenekleri etkiyi azaltır. Gecikmeye çok duyarlı iş yüklerinde alternatif barındırma da değerlendirilir.

Sunucusuz mimari her zaman daha ucuz mudur?

Değişken ve düşük trafikte genellikle avantajlıdır çünkü yalnızca çalışma anı faturalanır. Sürekli ve yoğun yükte ya da hatalı yeniden denemelerde maliyet beklenmedik biçimde artabilir. Karar vermeden önce tahmini çağrı hacmi ve süre üzerinden karşılaştırmalı hesap yapılmalıdır.

Sunucusuz uygulamada veritabanı nasıl kullanılır?

Fonksiyonlar durumsuz olduğu için veri harici bir veritabanında ya da depolama servisinde tutulur. Çok sayıda eşzamanlı fonksiyon bağlantı sınırlarını aşabileceğinden bağlantı havuzu yönetimi, eşzamanlılık sınırı veya sunucusuz uyumlu veri servisleri tercih edilir.

Sunucusuz (Serverless) Uygulama Nasıl Geliştirilir