YAZILIM

DigitalOcean Functions Nedir, Ne İşe Yarar

DigitalOcean Functions Nedir, Ne İşe Yarar yazısının kapak görseli

Bu seride şimdiye kadar Droplet, App Platform, Managed Database, Spaces ve Kubernetes’i ele almıştım. DigitalOcean’ın ürün ailesinde bir de Functions var, serverless (sunucusuz) hesaplama modeliyle çalışan, belki de en az bilinen ama doğru senaryoda oldukça değerli bir çözüm. Bu yazıda DigitalOcean Functions’ın ne olduğunu, nasıl çalıştığını ve hangi durumlarda gerçekten işe yaradığını anlatıyorum.

Serverless Ne Anlama Geliyor

“Sunucusuz” ismi biraz yanıltıcı, çünkü ortada elbette bir sunucu var, sadece bu sunucuyla geliştiricinin hiçbir doğrudan teması olmuyor. Bir Droplet’te sunucu sürekli açık duruyor ve kaynak kullanılmasa bile ücretlendiriliyor. App Platform’da uygulama sürekli çalışan bir süreç olarak ayakta kalıyor. Functions’ta ise kod sadece bir olay (event) tetiklendiğinde çalışıyor, işini bitirdiğinde ortadan kayboluyor. Ücretlendirme de sadece bu çalışma süresi üzerinden yapılıyor.

Bu model, kısa süreli ve düzensiz aralıklarla çalışması gereken işler için oldukça verimli bir yaklaşım sunuyor. Bir fonksiyon günde on kere çalışıyorsa, sadece o on çalıştırmanın toplam süresi kadar ücret ödeniyor, aradaki boşta geçen zaman için herhangi bir maliyet oluşmuyor.

DigitalOcean Functions Nasıl Çalışıyor

Bir fonksiyon, belirli bir tetikleyiciye bağlı olarak çalışan küçük bir kod parçası. Bu tetikleyici bir HTTP isteği olabilir, belirli bir zaman aralığı (cron benzeri bir zamanlama) olabilir ya da başka bir DigitalOcean servisinden gelen bir olay olabilir. Node.js, Python, Go ve PHP gibi yaygın dillerde yazılabiliyor, bu da mevcut bilgiyle hızlıca başlanabilmesini sağlıyor.

Fonksiyonlar, App Platform üzerinden bir uygulamanın parçası olarak da eklenebiliyor, bu da mevcut bir projeye küçük serverless bileşenler entegre etmeyi kolaylaştırıyor. Ayrıca DigitalOcean Managed Database gibi diğer servislere de güvenli bir şekilde bağlanabiliyor, bu bağlantı uygulama oluşturma sürecinde tanımlanabiliyor.

Geliştirme süreci genellikle doctl komut satırı aracı üzerinden yürütülüyor. Fonksiyon yerel ortamda yazılıp test edildikten sonra tek bir komutla buluta gönderilebiliyor, bu da hızlı bir geliştirme döngüsü sağlıyor.

Fiyatlandırma Mantığı

Functions’ın ücretlendirmesi GiB-saniye (GiB-second) birimi üzerinden hesaplanıyor. Bu birim, bir fonksiyonun kaç kez çalıştığı, ne kadar bellek kullandığı ve ne kadar sürdüğü çarpılarak bulunuyor. Her hesap için aylık belirli bir ücretsiz kullanım kotası sunuluyor, bu kota küçük ölçekli projelerin ya da denemelerin çoğu zaman herhangi bir ücret ödemeden çalışabilmesine imkan tanıyor. Kota aşıldığında ise kullanım milisaniye hassasiyetinde ölçülüp buna göre ücretlendiriliyor.

Bu fiyatlandırma modeli, özellikle trafiği düzensiz ya da öngörülemeyen işler için oldukça avantajlı oluyor. Sürekli açık duran bir Droplet’e kıyasla, ayda birkaç kez tetiklenen bir işlem için Functions çoğu zaman çok daha ekonomik bir seçenek oluyor.

Hangi Senaryolarda Kullanılır

Webhook’ları karşılamak, Functions’ın en tipik kullanım alanlarından biri. Bir ödeme sağlayıcısından ya da üçüncü parti bir servisten gelen bildirimleri işlemek için sürekli açık bir sunucu tutmaya gerek kalmadan, sadece ilgili istek geldiğinde çalışan bir fonksiyon tanımlanabiliyor.

Zamanlanmış görevler de sık karşılaşılan bir diğer senaryo. Her gece çalışması gereken bir veri temizleme işlemi, haftalık bir rapor oluşturma süreci ya da periyodik bir yedekleme tetikleyicisi, bir cron job gibi Functions üzerinden zamanlanabiliyor.

Görsel işleme, format dönüştürme, basit API entegrasyonları da Functions için uygun işler arasında. Örneğin bir kullanıcı bir görsel yüklediğinde bu görseli otomatik olarak küçük boyutlara dönüştürmek isteyen bir sistem, bu işlemi bir fonksiyon üzerinden tetikleyebiliyor.

Hafif makine öğrenmesi modellerinin çıkarım (inference) işlemleri için de Functions kullanılabiliyor. Önceden eğitilmiş bir model yüklenip bir API çağrısıyla tetiklenerek hızlı tahminler üretilebiliyor, bu da sürekli çalışan ağır bir altyapı kurmadan model servis etmenin ekonomik bir yolunu sunuyor.

Hangi Durumlarda Uygun Değil

Functions, sürekli açık kalması gereken bağlantılar (örneğin bir WebSocket sunucusu) ya da çağrılar arasında bellekte durum tutması gereken süreçler için uygun bir seçenek değil. Her çalıştırma bağımsız ve kısa ömürlü olduğu için, arka planda sürekli çalışması gereken bir işlem söz konusuysa Droplet ya da App Platform’daki bir Worker bileşeni çok daha uygun bir çözüm oluyor.

Ayrıca fonksiyonlar DigitalOcean’ın kendi altyapısına ve doctl iş akışına bağlı çalıştığı için, başka bir bulut sağlayıcısına taşınabilirlik önemli bir gereksinimse bu bağımlılık göz önünde bulundurulmalı.

Sonraki Adımlar

DigitalOcean Functions, doğru problem için tasarlanmış küçük ve ekonomik bir araç. Sürekli çalışan bir sunucuya ihtiyaç duymayan, olay bazlı ve kısa süreli işler için mevcut bir Droplet ya da App Platform kurulumuna ek bir maliyet ve karmaşıklık getirmeden bu tür işlevleri eklemenin pratik bir yolunu sunuyor.

Kendi fonksiyonunu yazıp denemek istersen, referans linkim üzerinden kayıt olarak bana destek olabilirsin.

Tüm projelerim ve üzerinde çalıştığım konuları incelemek istersen https://hub.barisgunduz.com/ adresini ziyaret edebilirsin.

Web ve mobil teknolojilere ilgi duyuyorum. Yaklaşık 14 yıldır web geliştirme ve internet reklamcılığı üzerinde çalışıyorum. Web yazılım teknolojileri ve yönetimi konusunda uzmanım. Birçok şirkete teknoloji ve reklamcılık danışmanlığı verdim. Hâlâ bazılarına destek vermeye devam ediyorum. Kendi projelerimle ilgili bazı çalışmalarım var. Çoğu içerik üreticiliği ile ilgili. Projelerimin hepsi Gündüz Medya markası altında toplanmıştır.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir