1. Ana Sayfa
  2. Üretici Teknolojileri
  3. Cloudflare Workers – Bölüm 12

Cloudflare Workers – Bölüm 12

CloudFlare-650x434
JFORCE - Dell Technologies İşbirliği Başlıyor!

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://www.npmjs.com/get-npm

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 ” + 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ı https://forum.mshowto.org linkini kullanarak ulaşacağınız forum sayfamızda sorabilirsiniz.

Referanslar

www.mshowto.org

www.cloudflare.com

https://developers.cloudflare.com/

TAGs: Cloudflare, Cloudflare Workers

JFORCE - Dell Technologies İşbirliği Başlıyor!
Yorum Yap

Yazar Hakkında

Bilgisayar Mühendisliği Doktora programında öğrenciliğim devam etmektedir. Bir Vakıf üniversitesinde 2016 yılı itibariyle Bilgisayar Mühendisi 2020 yılı itibariyle ise Ofis Yöneticisi mühendis olarak çalışmaktayım.  Başlıca uzmanlık alanlarım arasında Asp.Net Web Forms, Asp.Net MVC, .Net Core, C# ve SQL Server gelmektedir. Bunların yanı sıra iş hayatımda sistem ve siber güvenlik konularında da çalışmalarım devam etmektedir. Çeşitli AB destek projelerinde yazılım sorumlusu olarak görev yapıyor ve çalışmalarımı Secure Design Pattern, Yazılım Güvenliği, Siber Güvenlik, Bilgi Güvenliği konularında sürdürüyorum. Asp.net ile Proje Geliştirme ve Bilgisayar Mühendisliğine Giriş isimli kitapların yazarıyım.

Yorum Yap