Cloudflare Workers ile Sunucusuz Fonksiyonlar Oluşturma
Günümüzde web uygulamalarının ölçeklenebilirliği ve performansı, kullanıcı deneyimini doğrudan etkileyen kritik faktörler haline gelmiştir. Cloudflare Workers, geliştiricilere sunucusuz fonksiyonlar oluşturma ve dağıtma imkanı sunarak, sunucu yönetimiyle uğraşmadan yüksek performanslı uygulamalar geliştirmeyi mümkün kılar. Bu makalede, Cloudflare Workers ile nasıl sunucusuz fonksiyonlar oluşturabileceğinizi adım adım ele alacağız.
Cloudflare Workers Nedir?
Cloudflare Workers, Cloudflare’ın küresel ağında çalışan ve JavaScript, Rust, C ve C++ gibi dilleri destekleyen sunucusuz bir platformdur. Bu platform sayesinde kodlarınız, dünya genelindeki kullanıcılarınıza en yakın noktalarda çalıştırılır, böylece gecikme süreleri minimize edilir ve performans artırılır.
Neden Cloudflare Workers Kullanmalısınız?
– Küresel Dağıtım: Kodu, Cloudflare’ın 200’den fazla konumunda çalıştırarak kullanıcılara en yakın noktada hizmet sunabilirsiniz.
– Ölçeklenebilirlik: Trafik artışlarından etkilenmeden, uygulamanız otomatik olarak ölçeklenir.
– Kolay Entegrasyon: Mevcut uygulamalarınıza kolayca entegre edebilirsiniz.
– Maliyet Etkinliği: Kullanılan kaynaklar için ödeme yaparsınız, ön yatırım maliyeti yoktur.
Başlamadan Önce Gereksinimler
– Cloudflare Hesabı: Eğer bir hesabınız yoksa Cloudflare üzerinden ücretsiz olarak oluşturabilirsiniz.
– wrangler CLI: Cloudflare Workers projelerini yönetmek için kullanılan bir komut satırı aracıdır.
– Node.js: wrangler CLI’nin çalışması için gereklidir.
Adım Adım Cloudflare Workers Oluşturma
1. Wrangler CLI Kurulumu
Öncelikle wrangler CLI aracını global olarak kurmamız gerekiyor:
npm install -g wrangler
Kurulumun başarılı olup olmadığını kontrol etmek için:
wrangler --version
2. Cloudflare ile Kimlik Doğrulama
Cloudflare hesabınızla wrangler aracını bağlamak için:
wrangler login
Bu komut sizi varsayılan tarayıcınızda Cloudflare’a yönlendirecek ve yetkilendirme işlemini tamamlayacaktır.
3. Proje Oluşturma
Yeni bir Workers projesi oluşturmak için:
wrangler init my-worker
Bu komut, my-worker
adında bir dizin oluşturur ve temel dosyaları içerisine yerleştirir.
4. Kodun Düzenlenmesi
Oluşturulan dizine gidin ve index.js
veya src/index.js
dosyasını açın. Burada HTTP isteğine yanıt veren basit bir örnek bulunmaktadır:
addEventListener('fetch', event => { event.respondWith(handleRequest(event.request)) }) async function handleRequest(request) { return new Response('Hello World', { headers: { 'content-type': 'text/plain' }, }) }
Bu kodu ihtiyaçlarınıza göre düzenleyebilirsiniz. Örneğin, JSON formatında bir yanıt döndürmek için:
async function handleRequest(request) { const data = { message: 'Merhaba Dünya' } return new Response(JSON.stringify(data), { headers: { 'content-type': 'application/json' }, }) }
5. Projeyi Test Etme
Workers projenizi yerel olarak test etmek için:
wrangler dev
Bu komut, kodunuzda yaptığınız değişiklikleri anında görebileceğiniz bir geliştirme sunucusu başlatır.
6. Projeyi Yayına Alma
Kodunuz hazır olduğunda, Workers projenizi Cloudflare ağına dağıtmak için:
wrangler publish
Bu komut sonunda size projenizin URL’si verilecektir, örneğin:
https://my-worker.yourusername.workers.dev
7. Özel Alan Adı (Domain) Kullanma
Workers uygulamanızı kendi alan adınız üzerinden çalıştırmak için aşağıdaki adımları izleyin:
– Alan Adını Cloudflare’a Ekleyin: Eğer henüz eklemediyseniz, alan adınızı Cloudflare’a ekleyin ve DNS yönlendirmelerinizi yapın.
– Route Tanımlama: wrangler.toml
dosyasına aşağıdaki satırları ekleyin:
routes = ["https://api.yourdomain.com/*"]
– DNS Kaydı Oluşturma: Cloudflare kontrol panelinden api.yourdomain.com
için bir DNS kaydı oluşturun.
8. Ortam Değişkenleri ve Gizli Anahtarlar
Güvenli bilgiler veya yapılandırmalar için çevre değişkenleri kullanabilirsiniz:
wrangler secret put DATABASE_URL
Bu komut sizden değer girmenizi isteyecektir. Kodunuzda bu değeri şu şekilde kullanabilirsiniz:
const dbUrl = process.env.DATABASE_URL
İleri Seviye Konular
KV Storage Kullanımı
Cloudflare Workers, isteklere düşük gecikmeli erişim için dağıtılmış bir anahtar-değer deposu olan Workers KV’yi sunar.
KV’yi Ayarlama:
– KV Namespace Oluşturma:
wrangler kv:namespace create "MY_KV"
– wrangler.toml
Dosyasına Ekleyin:
kv_namespaces = [ { binding = "MY_KV", id = "namespace_id" } ]
– KV Kullanımı:
async function handleRequest(request) { await MY_KV.put('key', 'value') const value = await MY_KV.get('key') return new Response(value) }
WebAssembly (WASM) ile Entegrasyon
Performansın kritik olduğu durumlarda, WebAssembly modüllerini Workers ile kullanabilirsiniz.
– WASM Dosyasını Projeye Ekleyin:
Proje dizinine .wasm
dosyanızı yerleştirin.
– wrangler.toml
Dosyasına Ekleyin:
[build.upload] format = "modules" main = "index.js" rules = [ { type = "CompiledWasm", globs = ["\/*.wasm"] } ]
– Kodda WASM Modülünü Yükleyin:
import wasmModule from './module.wasm' async function handleRequest(request) { const result = wasmModule.someFunction() return new Response(result) }
Çalışma Zamanı İstatistikleri ve Loglama
Workers üzerinden gerçekleşen isteklere ait logları ve istatistikleri incelemek için:
– Real-time Log Erişimi:
wrangler tail
– Analitik Verilere Erişim: Cloudflare kontrol panelinden Workers sekmesine gidin ve uygulamanıza ait istatistikleri görüntüleyin.
En İyi Uygulamalar
– Edge Cache Kullanımı: Sık kullanılan verileri önbelleğe alarak performansı artırabilirsiniz.
– Boyutu Küçük Tutun: Kodunuzun boyutunu olabildiğince küçük tutarak daha hızlı dağıtım ve çalışma süreleri elde edebilirsiniz.
– Güvenlik: Girdi doğrulama ve çıktı kodlamaları ile güvenlik açıklarını önleyin.
Sonuç
Cloudflare Workers ile sunucusuz fonksiyonlar oluşturarak, uygulamalarınızın performansını ve ölçeklenebilirliğini önemli ölçüde artırabilirsiniz. Geleneksel sunucu yönetimi ile uğraşmadan, global ölçekte hızlı ve güvenilir hizmetler sunabilirsiniz.
—
Eğer kendi sunucularınız üzerinde benzer çözümler arıyorsanız, yüksek performanslı Bulut Sunucu hizmetlerimize göz atabilirsiniz. Ayrıca, projeleriniz için tam kontrol sunan Fiziksel Sunucu seçeneklerimiz de mevcuttur.