
Serverless Mimari Nedir? Ne Zaman Tercih Edilmeli?

Serverless mimari, sunucu yönetimini geliştiriciden büyük ölçüde alan ve uygulamaların ihtiyaç duyduğu kaynakları bulut sağlayıcı üzerinden çalıştıran bir geliştirme yaklaşımıdır. Bu yazıda serverless mimarinin nasıl çalıştığını, avantajlarını, dezavantajlarını ve hangi projelerde tercih edilebileceğini inceleyeceğiz.
Serverless mimari nedir?
Serverless mimari, uygulama geliştirirken sunucuların fiziksel veya sanal altyapısının geliştirici tarafından doğrudan yönetilmesini gerektirmeyen bir yaklaşımdır. Adında “server” bulunmasına rağmen bu sistemlerde sunucular ortadan kalkmaz. Sunucuların kurulumu, bakımı ve ölçeklendirilmesi bulut sağlayıcı tarafından yönetilir.
Geliştirici ise daha çok uygulamanın koduna ve işlevlerine odaklanır. Kullanılan kaynak miktarı ve çalışma süresi gibi faktörlere göre bulut altyapısı uygulamanın ihtiyaçlarını karşılayacak şekilde yönetilir.
Serverless mimari nasıl çalışır?
Serverless yapılarda uygulamanın belirli işlevleri genellikle fonksiyonlar şeklinde çalıştırılır. Kullanıcı bir işlem gerçekleştirdiğinde veya sistemde belirli bir olay meydana geldiğinde ilgili fonksiyon tetiklenir.
Örneğin bir kullanıcı web sitesine dosya yüklediğinde bu işlemi karşılayan bir fonksiyon çalışabilir. Fonksiyon görevi tamamladıktan sonra sürekli açık bir sunucu üzerinde çalışmaya devam etmek zorunda değildir.
Serverless çalışma modelinde temel akış genellikle şöyledir:
- Bir kullanıcı veya sistem bir işlem başlatır.
- İlgili olay serverless fonksiyonu tetikler.
- Bulut sağlayıcı gerekli çalışma ortamını hazırlar.
- Fonksiyon ilgili işlemi gerçekleştirir.
- İşlem tamamlandığında kaynak kullanımı sona erer veya ortam yeniden kullanılmak üzere hazır tutulabilir.
Bu yapı, uygulamanın sürekli yüksek kaynak tüketmesine gerek olmayan senaryolarda kullanılabilir.
Serverless mimarinin avantajları nelerdir?
Serverless mimarinin en önemli özelliklerinden biri altyapı yönetiminin önemli bölümünü bulut sağlayıcıya bırakmasıdır. Böylece geliştirici, sunucu kurulumu ve kapasite planlaması gibi operasyonel işlerden ziyade uygulamanın işlevlerine odaklanabilir.
Öne çıkan avantajları şunlardır:
- Sunucu yönetimi azalır: İşletim sistemi, donanım ve altyapı bakımının önemli bölümü sağlayıcı tarafından yönetilir.
- Otomatik ölçeklendirme: İhtiyaca göre kaynakların artırılması veya azaltılması mümkün olabilir.
- Hızlı geliştirme: Küçük ve bağımsız fonksiyonlarla uygulama geliştirme süreci kolaylaşabilir.
- Esnek kaynak kullanımı: Uygulamanın kullanım yoğunluğuna göre kaynak ihtiyacı değişebilir.
- Operasyonel yük azalır: Geliştirici ekibin altyapı yönetimine ayırdığı zaman azalabilir.
Serverless mimarinin dezavantajları nelerdir?
Serverless mimari her proje için uygun değildir. Bulut sağlayıcısına olan bağımlılık, çalışma modeli ve performans davranışları bazı projelerde dikkate alınması gereken noktalar oluşturur.
Özellikle fonksiyonların çalışma süresi, sağlayıcı limitleri ve soğuk başlatma olarak adlandırılan gecikmeler proje tasarımında değerlendirilmelidir.
Başlıca dezavantajlar şöyle sıralanabilir:
- Sağlayıcı bağımlılığı: Belirli bir bulut platformunun servislerine yoğun şekilde bağlı kalınabilir.
- Soğuk başlatma: Uzun süre çalışmayan bir fonksiyonun yeniden başlatılması ek gecikme oluşturabilir.
- Çalışma limitleri: Fonksiyon süresi, kaynak kullanımı veya istek sayısı gibi sınırlamalar bulunabilir.
- Hata ayıklama: Dağıtık fonksiyonların izlenmesi geleneksel uygulamalara göre daha karmaşık olabilir.
- Mimari karmaşıklık: Fonksiyon sayısı arttıkça uygulamanın yönetimi zorlaşabilir.
Serverless ile geleneksel sunucu mimarisi arasındaki fark nedir?
Geleneksel mimaride uygulamanın çalışacağı sunucuların kurulması, yapılandırılması ve kapasitesinin yönetilmesi geliştirici veya operasyon ekiplerinin sorumluluğunda olabilir. Sunucular uygulamanın trafiğine göre sürekli çalışır.
Serverless yaklaşımda ise altyapının büyük bölümü bulut sağlayıcı tarafından yönetilir. Uygulama belirli fonksiyonlara ayrılabilir ve bu fonksiyonlar ihtiyaç olduğunda çalıştırılabilir.
Bu nedenle iki yaklaşım arasındaki temel fark yalnızca sunucunun kullanılıp kullanılmaması değildir. Asıl fark, altyapının kim tarafından ve nasıl yönetildiğidir.
Serverless mimari ne zaman tercih edilmeli?
Serverless mimari, uygulamanın belirli olaylar sonucunda çalışan bağımsız işlevlerden oluştuğu projelerde değerlendirilebilir. Özellikle trafiğin değişken olduğu ve altyapının otomatik olarak ölçeklenmesinin istendiği uygulamalarda bu yaklaşım öne çıkabilir.
Serverless tercih edilirken şu noktalar değerlendirilebilir:
- Uygulamanın trafiği gün içinde önemli ölçüde değişiyor mu?
- Altyapı yönetimini azaltmak isteniyor mu?
- Uygulama olay tabanlı çalışmaya uygun mu?
- Fonksiyonların çalışma süresi ve kaynak ihtiyaçları platform limitleriyle uyumlu mu?
- Kullanılan bulut sağlayıcısına bağımlılık kabul edilebilir mi?
- Uygulamanın izlenmesi ve hata ayıklaması için uygun araçlar mevcut mu?
Bu soruların yanıtları, serverless mimarinin proje için uygun olup olmadığını anlamaya yardımcı olabilir.
Serverless mimari hangi projelerde kullanılır?
Serverless yaklaşım, özellikle belirli bir olayın uygulama içinde işlem başlattığı projelerde kullanılabilir. Web uygulamalarından otomasyon sistemlerine kadar farklı senaryolarda değerlendirilebilir.
Yaygın kullanım alanlarından bazıları şunlardır:
- Web API'leri: İstemcilerden gelen istekleri karşılayan backend fonksiyonları oluşturulabilir.
- Dosya işleme: Yüklenen dosyaları dönüştürme, analiz etme veya sınıflandırma işlemleri tetiklenebilir.
- Bildirim sistemleri: Belirli olaylar gerçekleştiğinde e-posta veya diğer bildirim süreçleri başlatılabilir.
- Veri işleme: Veritabanına eklenen veya güncellenen veriler üzerinde otomatik işlemler yapılabilir.
- Zamanlanmış görevler: Belirli aralıklarla çalışması gereken otomasyonlar oluşturulabilir.
- Backend işlemleri: Mobil ve web uygulamalarının ihtiyaç duyduğu bazı backend işlevleri serverless fonksiyonlarla gerçekleştirilebilir.
Serverless mimaride hangi teknolojiler kullanılır?
Serverless ekosisteminde farklı bulut sağlayıcılarının sunduğu fonksiyon servisleri ve destekleyici araçlar bulunur. Bu servisler sayesinde geliştiriciler kodlarını belirli olaylara bağlı olarak çalıştırabilir ve uygulamanın diğer bileşenleriyle bağlantı kurabilir.
Örneğin AWS Lambda, Azure Functions ve Google Cloud Functions gibi servisler serverless fonksiyon çalıştırma modeli sunar. Bunun yanında veritabanı, API yönetimi, kimlik doğrulama ve izleme gibi ihtiyaçlar için farklı bulut servisleri de mimariye dahil edilebilir.
Serverless mimari ile mikroservis aynı şey midir?
Serverless ve mikroservis aynı kavram değildir. Mikroservis, büyük bir uygulamanın daha küçük ve bağımsız servislerden oluşacak şekilde tasarlanmasını ifade eder. Serverless ise uygulama bileşenlerinin altyapısının nasıl çalıştırıldığı ve yönetildiğiyle ilgilidir.
Bu iki yaklaşım birlikte kullanılabilir. Örneğin bir mikroservis mimarisindeki bazı servisler serverless fonksiyonlar kullanılarak çalıştırılabilir. Ancak her mikroservis uygulamasının serverless olması gerekmez.
Serverless mimariye geçerken nelere dikkat edilmeli?
Serverless bir projeye başlamadan önce yalnızca altyapı yönetiminin kolaylaşmasına odaklanmak yeterli değildir. Uygulamanın çalışma modeli, veri akışı, performans ihtiyaçları ve kullanılan servislerin sınırları birlikte değerlendirilmelidir.
Özellikle uygulamanın hangi olaylarla tetikleneceği ve fonksiyonların birbirleriyle nasıl iletişim kuracağı önceden tasarlanmalıdır. Loglama, izleme, hata yönetimi ve güvenlik süreçleri de mimarinin bir parçası olarak ele alınmalıdır.
Serverless mimari, sunucuları ortadan kaldıran değil, sunucu yönetimini büyük ölçüde bulut sağlayıcısına devreden bir yaklaşımdır. Değişken trafik, olay tabanlı işlemler ve bağımsız backend fonksiyonları için güçlü bir seçenek olabilir. Ancak her projede ihtiyaçlara göre değerlendirilmelidir.



