Cloudflare yapısını incelediğimiz makale serimizde on ikinci bölüme gelmiş bulunmaktayız. Bu bölümde Cloudflare arayüzünde sırayla değindiğimiz özelliklerden Workers menüsünden bahsedeceğiz.
Cloudflare Workers özelliğini CF, doğrudan CF’nin dünya genelinde çalışan 120’den fazla uç üzerinde çalışabilecek JavaScript tabanlı worker uygulamaları yazabilmeye olanak sağlayan bir özellik olarak tanımlamaktadır. Yazabileceğiniz bu JavaScript ile CF’de çalışan sitelerimizin http isteklerini ve yanıtlarını değiştirebilir, senkron isteklerde bulunabiliriz. CF Workers yaklaşımı, W3C hizmet standardına benzer bir şekilde yazılır. Ek olarak bu gibi işlemleri gerçekleştirmek üzere geliştirilen JavaScript’ler son kullanıcının tarayıcısının içinde çalışırken, CF workers hizmeti kendi (CF) sunucularında çalışmaktadır. Bu özellikle de CF workers uygulamasının tarayıcı ayırt etmeksizin kesintisiz çalışacağı anlamına gelmektedir.
Biraz daha somutlaştırmamız gerekirse CF Workers modülü ile nelerin yapılabildiğine göz atalım:
Performansı iyileştirebilmek için uç noktalarında önbelleğe alınacak olan istekleri optimize etmek ve önbellek isabet oranını iyileştirmek için aşağıdaki özellikleri standart hale getirmekte fayda olacaktır.
- Sunucularımızdan sadece dinamik istekleri çağırarak HTML şablonlarını doğrudan CF uç noktalarında genişletebiliriz.
- Gelen istekleri farklı sunucularda birden çok paralel isteğe böldükten sonra istekleri birleştirebiliriz.
- Bayraksız istekleri kaynak sunucuyla hiç iletişim kurmadan doğrudan uç noktasından gerekli cevap verilebilir.
Güvenliği iyileştirmek ve sürekli geliştirmek için aşağıdaki iki maddeyi uygulamakta fayda olacaktır.
- Özel kimlik doğrulama ve yetkilendirme mekanizmalarını uygulamak çok faydalı bir işlemdir ve yapılması önerilmektedir.
- Özel güvenlik kuralları ve filtrelerin de uygulanmış olması önerilen ikinci durumdur.
Güvenilirliği artırmak için ise yapılması önerilen birkaç işlem daha bulunmaktadır.
- Workers uygulamaları ile kendi sunucularımızı güncellememize gerek kalmadan sitelerimize saniyeler içerisinde düzeltmeler yapabiliriz.
- Kaynak sunucularımıza ulaşılmadığında dinamik olarak verilecek yanıtları ayarlayabiliriz.
- Özel yük dengeleme ve yük devretme mantığını uygulayabiliriz.
Belirttiğimiz birkaç özelliğinden bir yorum yapmamız gerekirse CloudFlare Workers aslında alt yapı ürünlerimizde köklü yapılandırmalar yapmadan veya güncellemelerini tam olarak sağlamadan da istediğimiz yeni politikaları geliştirmemize olanak sağlayan ve bu işlemi yaparken de bizden bir sunucu kaynağı istemeyen bir ortamdır.
Resim-1
CloudFlare Workers özelliğini kullanabilmek için, Workers hesabına üye olunması gerekmektedir. Üyelik işleminden sonra Workers CLI’i yüklemeniz gerekecektir. Workers üzerinde projeler geliştirebilmek, ön izleme ve yayınlayabilmek için CLI kullanılması gerekmektedir.
Linkler:
https://github.com/cloudflare/wrangler
https://developers.cloudflare.com/workers/cli-wrangler/install-update
$ npm install -g @cloudflare/wrangler
Yukarıdaki linklerden Workers ile geliştirme yapabilmek için gerekli ortamları indirdikten sonra çalışma ortamınız hazır ise bir gelenek haline gelen ilk örneği Merhaba Dünya! İle gerçekleştiren örneği inceleyelim.
addEventListener(“fetch”, event => { event.respondWith(handleRequest(event.request))})
async function handleRequest(request) { return new Response(“Merhaba Dünya!”)}
CF örneklerinden birkaç tanesini inceleyelim.
Return HTML örneği:
const html = `<!DOCTYPE html><body> <h1>Merhaba Dünya</h1> <p>This markup was generated by a Cloudflare Worker.</p></body>`
async function handleRequest(request) { return new Response(html, { headers: { “content-type”: “text/html;charset=UTF-8”, }, })}
addEventListener(“fetch”, event => { return event.respondWith(handleRequest(event.request))})
Redirect örneği:
const destinationURL = “https://example.com”const statusCode = 301
async function handleRequest(request) { return Response.redirect(destinationURL, statusCode)}
addEventListener(“fetch”, async event => { event.respondWith(handleRequest(event.request))})
Block on TLS örneği:
async function handleRequest(request) { try { const tlsVersion = request.cf.tlsVersion
// Allow only TLS versions 1.2 and 1.3 if (tlsVersion != “TLSv1.2” && tlsVersion != “TLSv1.3”) { return new Response(“Please use TLS version 1.2 or higher.”, { status: 403, }) }
return fetch(request) } catch (err) { console.error( “request.cf does not exist in the previewer, only in production”, ) return new Response(“Error in workers script” + err.message, { status: 500, }) }}
addEventListener(“fetch”, event => { event.respondWith(handleRequest(event.request))})
Daha fazla örnek incelemek isterseniz Cloudflare workers sayfasını inceleyebilirsiniz. Tamamen ihtiyaca yönelik uygulamalar geliştirilebileceğinden CF’nin kendi örneklerini vermeyi yeterli buluyorum.
Bir sonraki CF yazısında görüşmek üzere.
Bu konuyla ilgili sorularınızı alt kısımda bulunan yorumlar alanını kullanarak sorabilirsiniz.
Referanslar
https://developers.cloudflare.com/
TAGs: Cloudflare, Cloudflare Workers