Neden Cloudflare ve Nasıl Bir Mimari
Frontend kısmındaki senaryolarda fazlasıyla kullandığımız Cloudflare’in hizmetleri neler
Cloudflare çok fazla ücretsiz ve direkt olarak bir probleme yönelik harika araçlar sunan bir platform. Bu platform bünyesinde çok fazla ürünümüz için hizmet alıyoruz. Başlıca kullandığımız hizmetleri DNS yönetimi, Proxy Layer, Pages ve Workers.
Başlıca getirisi güvenlik sağlaması. Proxy Layer ile server’ınızın ip adresini direk kullanmayıp kendinize çok kolay bir şekilde daha güvenli bir ortam sunabiliyorsunuz. Ayrıca Proxy layer ile SSL sertifikasını da çözebiliyorsunuz.
Şu anda 3 farklı proje ve ayrıca bu sitede Cloudflare hizmetlerini aktif olarak kullanmaktayız. Size bu servisleri hangi aşamada kullandığımızı anlatacağım.
DNS Yönetimi
Cloudflare ilk çıktığı zamandan beri DNS yönetimini ücretsiz olarak sunmakta. Bu servisten yararlanmak için Domain sağlayıcınıza Nameserver kaynağı olarak Cloudflare’i tanımlıyorsunuz ve o kadar, Cloudflare üzerinden artık DNS yönetimini yapabilirsiniz.
DNS yönetimini kısmında Proxy seçeneğini seçerek domain’i ilişkilendirdiğiniz server’ın ip adresini domain katmanından bulunmasını engelleyebiliyorsunuz. Ayrıca bunu yapınca SSL sertifikası otomatik olarak geliyor.
Bu servisin ücretsiz olarak kullanımındaki tek kısıtlama tek seviye subdomain kullanabiliyor olmanız. Yani a.b.site.com adresini tanımlayamazsınız, eğer yaparsanız siteniz SSL sertifikası hatası alacaktır.
Cloudflare Pages
Bu servis CDN hizmeti eşliğinde Vue, React veya html içerikli siteleri çok kolay şekilde deploy etmenizi sağlıyor. Buna benzer kullanımları AWS S3 veya gCloud Storage üzerinden de yapabiliyorsunuz ama illaki fazladan ayarlanması gereken noktalar oluşmakta ve bu servisler Cloudflare gibi ücretsiz değiller.
Özellikle gCloud storage üzerinden kullanımda error page olarak index.html verdiğinizde response 404 dönmekte ama site görünüşte açılıyor olmakta. Bu durum maalesef temelde çok problemli bir ortam oluşturmakta. Çünkü SEO araçları veya başka senaryolarda bu 404 status code farklı hatalara yol açacaktır.
Cloudflare ise bunu otomatik olarak ayarlamakta ve bütün response’ları olması gerektiği gibi dönmekte.
Ayrıca Github Workflow ile harika entegrasyonu bulunmakta, bu sayede seçtiğiniz branch’e güncelleme geldiği zaman otomatik şekilde buildini alıp Pages’deki sitenizi güncelleyebiliyorsunuz.
Aynı zamanda birden fazla CDN merkezine siteniz kopyalanıyor, bu sayede dünyanın bir çok noktasında iyi bir performans ile sitenizin frontend kısmına erişim sağlanabiliyor.
Cloudflare Workers
Bu servis serverless olup günde 100.000 tane request’i size ücretsiz olarak sağlayan bir servis. Her request için 10ms CPU time ile sınırlandırmışlar ücretsiz kullanımda. İlk başta bu çok düşük gelse de bu cpu time hesaplamasında I/O calculation bulunmamakta. Yani worker kendi içinde bir request çağırdığı zaman bu CPU time olarak sayılmıyor. Böylece 10ms bir çok işlem için gayet yeterli bir hizmete dönüşüyor.
Özellikle custom Proxy Layer, SSR veya küçük api bazlı servisler için biz kullanıyoruz. SSR entegrasyonu ile Cloudflare Pages’i birlikte kullanabiliyorsunuz. Bu sayede Cloudflare üzerinde frontend kısmını uçtan uca çözmüş oluyorsunuz.
Ek hizmetler
Yukarıda bahsi geçen hizmetler bizim olmazsa olmaz hizmetlerimizdi. Fakat Cloudflare bünyesinde onlarca başka servislerde bulunmakta. Bu servisler özellikle direk bir probleme odaklı olup onu uçtan uca çözmeye yönelik çok harika servisler.
Video Stream Delivery
Video yükleme ve izletme senaryolarını çözen bir hizmet. Private veya public erişim için video yükleyebiliyor ve bu videoları isterseniz watermark ile işaretleyip öyle izletebiliyorsunuz. Bu servis ücretli ama eğer ücretsiz bir platforma yükleme yapmayacaksanız(youtube vb) ve kendiniz yönetmek istiyorsanız bu süreci, bu süreç için üreteceğiniz çözümler ve ayıracağınız kaynak yerine bu servisi kullanmayı deneyebilirsiniz. Ücretleri son derece makul ve erişilebilir.
Email Routing
Cloudflare’e yetkilendirdiğiniz domain için email yönlendirme hizmeti. Örneğin site.com domain’ini eklediğiniz DNS yönetimine, Email Routing hizmeti ile info@site.com adresine gelen emailleri istediğiniz mail adresine yönlendirme yapmakta. Bu servis ücretsiz ve kurulumu yine çok kolay.
Cloudflare Images
Bu servis resim saklamanızı sağlayan harika özellikleri olan bir servis. Bu servisi AWS S3’e de benzetebilirsiniz ama ek olarak resimleri dilediğiniz gibi resize eden bir servis. Resize etmesi on-demand olarak da oluyor. Ücretli bir hizmet ama yine makul bir fiyata ve yine sorunu harika bir şekilde çözen bir hizmet.
Önerdiğim Kullanım Şekli
Cloudflare’e DNS ve Frontend kısmını bırakacak şekilde bir mimari ayarlayabilirsiniz. Bunu yapmak için subdomain’leri de efektif bir şekilde kullanmak gerekiyor. Yani backend için kullandığınız hizmeti api.site.com dibi bir subdomain, site.com adresine de sitenizin frontend kısmını koyarsanız domain katmanından güzel bir şekilde servisleri bölmüş olursunuz.
Daha öncesinde gCloud üzerinden Load Balancer ile frontend ile backend servislerini tek domain altında toplamayı kurgulamıştık. Ama bu durum büyüyen mimariler için zamanla sorun oluşturmakta ve sizi Load Balancer hizmeti aldığınız platforma daha çok bağlamakta.
Şu an uyguladığımız mimaride backend için seçtiğimiz platform kendisine verilen subdomain üzerinden erişime açık ve senaryolar birbirinden ayrı şekilde gidebilmekte. Tabi bunu yaptığınız zaman CORS’u geçmek için backend kısmında ek olarak uygulamanız gereken yöntemler olmakta. Fakat günümüzde bu entegrasyonu yapmak çok kolay.
Sonuç Olarak
Size önerim, Cloudflare’in sitesinden bütün hizmetlere bakmanız ve deneyimlemeniz. Memnun kalacağınızdan ve bir çok şeyin çok kolay çözülebildiğini gördüğünüzde sizin de benim kadar etkileneceğinizden eminim 🙂