Cloudflare Workers ile Sunucu Taraflı Fonksiyonlar Oluşturma
Günümüzde web uygulamalarının performansı ve güvenliği, kullanıcı deneyimi açısından kritik bir öneme sahiptir. Cloudflare Workers, geliştiricilere global Cloudflare ağı üzerinde sunucu taraflı fonksiyonlar çalıştırma imkanı sunar. Bu sayede, uygulamalarınızı daha hızlı ve güvenli hale getirirken, sunucu yüklerini de optimize edebilirsiniz.
Cloudflare Workers Nedir?
Cloudflare Workers, JavaScript tabanlı sunucu taraflı kodları Cloudflare’ın edge ağında çalıştırmanızı sağlayan bir platformdur. Bu platform, sunucu altyapısı yönetme ihtiyacını ortadan kaldırarak, kodlarınızın dünya genelinde kullanıcılara yakın noktalarda çalışmasını sağlar.
Neden Cloudflare Workers Kullanmalıyız?
– Düşük Gecikme Süreleri: Kodunuz kullanıcılara en yakın noktada çalışır, bu da daha hızlı yanıt süreleri anlamına gelir.
– Kolay Ölçeklenebilirlik: Altyapı yönetimiyle uğraşmadan, uygulamanızın talebe göre ölçeklenmesini sağlar.
– Güvenlik: Cloudflare’ın güvenlik katmanlarından faydalanarak, uygulamanızı DDoS gibi saldırılara karşı koruyabilirsiniz.
– Sunucu Yönetim Maliyeti Yok: Fiziksel veya sanal sunucu yönetimi yapmadan, direkt kodunuza odaklanabilirsiniz.
Cloudflare Workers ile İlk Fonksiyonumuzu Oluşturalım
Aşağıda, adım adım bir Cloudflare Worker fonksiyonunun nasıl oluşturulacağını ve dağıtılacağını inceleyeceğiz.
1. Cloudflare Hesabı Oluşturma ve Workers Dashboard’una Erişim
– Cloudflare Hesabı Oluşturun: Eğer henüz bir hesabınız yoksa, cloudflare.com üzerinden ücretsiz bir hesap oluşturun.
– Workers Dashboard’a Erişin: Hesabınıza giriş yaptıktan sonra, üst menüden Workers sekmesine tıklayın.
2. Yeni Bir Worker Oluşturma
– Create a Worker: Workers Dashboard üzerinde “Create a Worker” butonuna tıklayın.
– Kod Editörü: Açılan kod editörü üzerinde örnek bir kod parçacığı bulunacaktır. Bu kodu kendi fonksiyonumuza göre düzenleyeceğiz.
3. Basit Bir “Hello World” Fonksiyonu Yazma
Aşağıdaki kod, istemciden gelen isteğe yanıt olarak “Hello World” dönen basit bir fonksiyonu gösterir:
addEventListener('fetch', event => { event.respondWith(handleRequest(event.request)) }) async function handleRequest(request) { return new Response('Hello World', { headers: { 'content-type': 'text/plain' }, }) }
4. Fonksiyonu Test Etme
– Preview Özelliği: Kod editörünün sağ tarafında bulunan “Preview” sekmesi ile fonksiyonunuzu test edebilirsiniz.
– Canlı Güncelleme: Kodunuzda yaptığınız değişiklikler anında ön izleme ekranına yansır.
5. Fonksiyonu Yayına Alma
– Deploy: Kodunuz istediğiniz gibi çalışıyorsa, üst menüden “Deploy” butonuna tıklayarak fonksiyonunuzu yayınlayabilirsiniz.
– URL Üzerinden Erişim: Fonksiyonunuz otomatik olarak bir alt etki alanı üzerinden erişilebilir hale gelecektir (ör. https://your-subdomain.workers.dev
).
Sunucu Taraflı İşlemler ve Veri İşleme
Cloudflare Workers, sadece basit metin yanıtları döndürmekle kalmaz, aynı zamanda API çağrıları yapabilir, verileri işleyebilir ve hatta sunucu taraflı render işlemleri gerçekleştirebilir.
Örnek: API’den Veri Çekme ve İşleme
Kullanıcıya, bir üçüncü taraf API’den çekilen verileri sunan bir fonksiyon yazalım:
addEventListener('fetch', event => { event.respondWith(handleRequest(event.request)) }) async function handleRequest(request) { const apiResponse = await fetch('https://api.example.com/data') const data = await apiResponse.json() const processedData = processData(data) return new Response(JSON.stringify(processedData), { headers: { 'content-type': 'application/json' }, }) } function processData(data) { // Veri işleme işlemleri return data.map(item => { return { id: item.id, value: item.value * 2 } }) }
KV Storage ile Veri Saklama
Workers KV, anahtar-değer depolama hizmeti sunarak, verilerinizi global olarak dağıtılmış bir şekilde saklamanızı sağlar.
Örnek:
const USER_DATA = 'USER_DATA' addEventListener('fetch', event => { event.respondWith(handleRequest(event.request)) }) async function handleRequest(request) { if (request.method === 'POST') { const userData = await request.json() await KV_NAMESPACE.put(USER_DATA, JSON.stringify(userData)) return new Response('Data saved', { status: 200 }) } else if (request.method === 'GET') { const data = await KV_NAMESPACE.get(USER_DATA) return new Response(data, { headers: { 'content-type': 'application/json' }, }) } }
Not: KV_NAMESPACE
, Workers ayarlarından tanımlamanız gereken bir değişkendir.
Gerçek Dünya Uygulamaları
– A/B Testleri: Farklı kullanıcı segmentlerine farklı içerikler sunabilirsiniz.
– İçerik Optimizasyonu: İsteği inceleyerek dinamik olarak optimize edilmiş içerik sunabilirsiniz.
– Güvenlik Katmanları: İsteği analiz edip kötü amaçlı talepleri engelleyebilirsiniz.
Sunucu Altyapısı İhtiyaçlarınız için Çözümler
Cloudflare Workers, birçok durumda sunucu ihtiyacını ortadan kaldırsa da, bazı uygulamalar için hala kapsamlı sunucu altyapılarına ihtiyaç duyabilirsiniz. İleri düzey projeleriniz için cloud sunucu veya dedicated sunucu seçeneklerini değerlendirebilirsiniz.
Sonuç
Cloudflare Workers, geliştiricilere esnek ve güçlü bir platform sunarak, sunucu taraflı fonksiyonları hızlı ve ölçeklenebilir bir şekilde çalıştırma imkanı tanır. Bu rehberde, temel adımları ve bazı ileri seviye uygulamaları ele aldık. Kendi projelerinizde Workers’ı kullanarak, kullanıcılarınıza daha iyi bir deneyim sunabilirsiniz.