Cloudflare Genel

Cloudflare Workers ile Sunucu Tabanlı İşlemler Nasıl Yapılır

Cloudflare Workers ile Sunucu Tabanlı İşlemler Nasıl Yapılır

Cloudflare Workers ile Sunucu Tabanlı İşlemler Nasıl Yapılır

Günümüzde web uygulamalarının performansı ve ölçeklenebilirliği, kullanıcı deneyimi açısından kritik bir öneme sahiptir. Cloudflare Workers, sunucuya ihtiyaç duymadan JavaScript kodlarınızı sunucu tarafında çalıştırmanızı sağlayan güçlü bir platformdur. Peki, Cloudflare Workers ile sunucu tabanlı işlemleri nasıl gerçekleştirebiliriz? Bu makalede, adım adım detaylı bir şekilde bu süreci ele alacağız.

Cloudflare Workers Nedir?

Cloudflare Workers, Cloudflare’in sunucusuz (serverless) uygulama platformudur. Bu platform, JavaScript kodlarınızı Cloudflare’ın global ağı üzerinde çalıştırmanıza izin verir. Böylece, uygulamanız kullanıcıya en yakın noktada çalışır ve gecikme süreleri en aza iner.

Neden Cloudflare Workers Kullanmalısınız?

Düşük Gecikme Süresi: Kodunuz, kullanıcının coğrafi konumuna en yakın sunucuda çalışır.
Kolay Ölçeklenebilirlik: Trafik arttığında manuel bir müdahaleye gerek kalmadan ölçeklenir.
Maliyet Etkinliği: Kullanılan kaynak bazlı fiyatlandırma ile maliyetleri kontrol altında tutabilirsiniz.

Başlamadan Önce Gereksinimler

Cloudflare Hesabı: Eğer yoksa Cloudflare üzerinden bir hesap oluşturabilirsiniz.
Workers KV veya Durable Objects: Veri depolama ihtiyaçlarınız için.

Adım Adım Cloudflare Workers ile Sunucu Tabanlı İşlemler

1. Cloudflare Workers’a Erişim Sağlama

Cloudflare hesabınıza giriş yapın ve sol menüden ”Workers” sekmesine tıklayın.

2. Yeni Bir Worker Oluşturma

Create a Service butonuna tıklayın.
– Servisinize bir isim verin, örneğin: sunucu-tabanli-islem.

3. Kod Editörünü Kullanma

Karşınıza çıkan kod editöründe, Workers için kodunuzu yazabilirsiniz. Örnek olarak, gelen bir isteği yanıtlayan basit bir kod:

addEventListener('fetch', event => {
  event.respondWith(handleRequest(event.request))
})

async function handleRequest(request) {
  return new Response('Merhaba Dünya!', {
    headers: { 'content-type': 'text/plain' },
  })
}

4. Sunucu Tabanlı İşlemlerin Eklenmesi

Sunucu tabanlı işlemler için örnek olarak, bir API’den veri çekip kullanıcıya sunalı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()
  return new Response(JSON.stringify(data), {
    headers: { 'content-type': 'application/json' },
  })
}

5. Veri Depolama ile İşlemler

Eğer veri depolama ihtiyacınız varsa, Workers KV kullanabilirsiniz.

KV Store’a Veri Yazma:

const NAMESPACE = 'MY_KV_NAMESPACE'

addEventListener('fetch', event => {
  event.respondWith(handleRequest(event.request))
})

async function handleRequest(request) {
  await MY_KV_NAMESPACE.put('anahtar', 'deger')
  return new Response('Veri kaydedildi.')
}

KV Store’dan Veri Okuma:

async function handleRequest(request) {
  const value = await MY_KV_NAMESPACE.get('anahtar')
  return new Response(Değer: ${value})
}

6. Çevresel Değişkenlerin Tanımlanması

Çevresel değişkenleri kullanarak hassas bilgileri yönetebilirsiniz.

Variables sekmesinden yeni bir değişken ekleyin.
– Kodu güncelleyin:

async function handleRequest(request) {
  const apiKey = MY_API_KEY
  // apiKey'i kullanarak işlemler
}

7. Worker’ı Yayına Alma

Kodunuz hazır olduğunda, ”Deploy” butonuna tıklayarak worker’ınızı yayına alabilirsiniz.

8. Router Ayarları ile Trafiği Yönlendirme

Belirli yolları worker’ınıza yönlendirebilirsiniz.

Triggers sekmesinden ”Add route” tıklayın.
– Domain ve yol belirtin: ornek.com/api/*

9. Gerçek Dünya Senaryosu: CDN Olarak Kullanma

Statik dosyalarınızı sunmak için Workers ile bir CDN oluşturabilirsiniz.

async function handleRequest(request) {
  const url = new URL(request.url)
  const cacheKey = url.pathname
  let response = await caches.default.match(cacheKey)
  if (!response) {
    response = await fetch(https://origin-server.com${url.pathname})
    response = new Response(response.body, response)
    response.headers.append('Cache-Control', 'public, max-age=31536000')
    event.waitUntil(caches.default.put(cacheKey, response.clone()))
  }
  return response
}

İleri Seviye Konular

WebSockets Desteği

Cloudflare Workers, WebSocket bağlantılarını da destekler. Gerçek zamanlı uygulamalarınızı Workers üzerinden çalıştırabilirsiniz.

Sunucu Tabanlı İşlemler için Sanal Sunucular

Eğer daha fazla kontrol ve özelleştirme gerekiyorsa, sanal sunucu hizmetlerinden faydalanabilirsiniz.

Yurtdışı Lokasyonlu Sunucular

Global erişim için yurtdışı lokasyon sanal sunucular tercih ederek, kullanıcılarınıza daha hızlı hizmet verebilirsiniz.

Sonuç

Cloudflare Workers ile sunucu tabanlı işlemleri kolayca gerçekleştirebilir, uygulamalarınızı ölçeklendirebilir ve performanslarını artırabilirsiniz. Sunucusuz mimarinin getirdiği avantajları değerlendirerek, işletmenizin ihtiyaçlarına uygun çözümler üretebilirsiniz.

Eğer geleneksel sunucu ihtiyaçlarınız varsa, cloud sunucu hizmetlerimizi inceleyebilir, işletmenize en uygun altyapıyı seçebilirsiniz.