AWS CloudFront — Detaylı Anlatım

Berkay Kulak
6 min readMar 16, 2023

--

AWS CloudFront, AWS (Amazon Web Services) tarafından sunulan bir CDN (Content Delivery Network) servisidir. Bu hizmet, statik ve dinamik web içeriklerinin, uygulama verilerinin ve medya dosyalarının küresel bir ağ üzerinden hızlı ve güvenli bir şekilde dağıtımını sağlar.

CloudFront, istemciye en yakın konumda bulunan bir Edge Location (kenar konumu) aracılığıyla web içeriğini dağıtır ve bu sayede kullanıcılara daha hızlı yanıt süreleri ve daha iyi bir performans sunar. Bu Edge Location’lar, dünya genelinde farklı lokasyonlarda bulunur ve her bir Edge Location, Amazon’un küresel ağına bağlıdır.

CloudFront’un en büyük avantajlarından biri, yüksek veri transfer hızlarıdır. Bu sayede, kullanıcılar web içeriklerine daha hızlı erişirler ve web uygulamaları daha hızlı yanıt verir. Ayrıca, CloudFront kullanarak web içeriklerini dağıtmak, web sunucularının yükünü azaltır ve daha düşük bir maliyetle daha yüksek bir ölçeklenebilirlik sağlar.

CloudFront, diğer AWS hizmetleriyle de entegre çalışabilir. Örneğin, Amazon S3'te barındırılan bir web sitesi, CloudFront üzerinden dağıtılabilir. Ayrıca, AWS Lambda gibi diğer hizmetler de CloudFront ile kullanılabilir.

Genel olarak, AWS CloudFront, yüksek performanslı, ölçeklenebilir ve güvenli bir şekilde web içeriklerinin dağıtımını sağlayan bir CDN hizmetidir.

Hızlı ve Dünya Çapında Dağıtım: CloudFront, dünya genelinde birçok yerdeki veri merkezlerinden yararlanarak içeriğinizi mümkün olan en kısa sürede müşterilerinize ulaştırır.

Maliyet Tasarrufu: CloudFront, kullanılan bant genişliği ve kaynak sayısına göre ölçeklenebilir. Bu, yalnızca kullandığınız kaynaklar için ödeme yapmanızı sağlar ve bu da maliyetlerinizi düşürür.

Yüksek Güvenilirlik: CloudFront, Amazon’un global ölçekteki altyapısını kullanır ve yüksek ölçekte toleranslı bir mimariye sahiptir. Bu nedenle, kullanıcılarınızın içeriğe hızlı ve güvenilir bir şekilde erişmesi sağlanır.

DDoS Koruması: CloudFront, DDoS saldırılarına karşı otomatik koruma sağlar. Bu nedenle, müşterilerinize daha güvenli bir hizmet sunarsınız.

Kolay Yönetim: CloudFront, AWS Management Console aracılığıyla kolayca yapılandırılabilir ve yönetilebilir. Ayrıca, API’ler ve AWS SDK’ları kullanarak da programatik olarak yönetilebilir

CloudFront Oluşturalım

AWS Management Console’a erişin ve CloudFront hizmetini seçin.

CloudFront ana sayfasında, “Create Distribution” seçeneğine tıklayın

  • Origin domain: Önbelleklenen veya dağıtılan kaynağın URL’sini belirtir. Örneğin, “example.com” gibi bir alan adı olabilir.
  • Origin path: Kaynağın hangi yolunu önbelleğe almak veya dağıtmak istediğinizi belirtir. Örneğin, “/images” gibi bir yol olabilir.
  • Name: Origin için belirlediğiniz bir isimdir ve birden fazla origin kullanıyorsanız, origin kaynakları arasında ayırt etmek için kullanılabilir.
  • Add custom header: Bu alan, isteklere eklemek istediğiniz özel HTTP başlıklarını belirlemenizi sağlar.
  • Enable Origin Shield: Bu özellik, bir AWS Shield Advanced koruma katmanı oluşturur ve kaynağınızı DDoS saldırılarına karşı korur.
  • Path pattern: Bu alan, istemci tarafından gönderilen istek URL’sindeki yolu belirleyen ve bu yolun hangi önbelleklenmiş nesneleri etkileyeceğini belirleyen bir önbellek kalıbıdır. Örneğin, “/images/*” kalıbı, “/images” altındaki tüm nesneleri önbelleğe alacaktır.
  • Compress objects automatically: Bu alan, önbelleğe alınan nesnelerin otomatik olarak sıkıştırılıp sıkıştırılmayacağını belirler.
  • Viewer protocol policy: Bu alan, istemci tarafından kullanılacak protokolü belirler. HTTP veya HTTPS protokollerinden biri seçilebilir.
  • Allowed HTTP methods: Bu alan, istemci tarafından kullanılabilen HTTP yöntemlerini belirler. Örneğin, “GET” veya “POST” yöntemleri seçilebilir.
  • Restrict viewer access: Bu alan, önbelleğe alınan nesnelere erişimi sınırlandırmak için kullanılır. Örneğin, IP adresi veya HTTP başlığı doğrulaması yapılabilir.
  • Cache policy and origin request policy: Bu alanlar, önbellekleme davranışını ve önbellek dışındaki nesnelerin nasıl işleneceğini belirlemek için kullanılır.
  • Legacy cache settings: Bu alan, CloudFront’da önbellekleme yapılandırmalarını kontrol etmek için eski yöntemleri kullanmak isteyen kullanıcılar için kullanılır.
  • Response headers policy: Bu alan, yanıt başlıklarının hangilerinin önbelleğe alınacağını ve hangilerinin önbelleğe alınmayacağını belirler.

Bu seçeneklerden hangisini seçersem ne olur ?

  • Compress objects automatically: Bu ayarın ‘yes’ olarak ayarlanması durumunda, CloudFront, belirli içerik türlerini (HTML, CSS, JS, vs.) otomatik olarak sıkıştırır. Bu ayar ‘no’ olarak ayarlanırsa, CloudFront sıkıştırmayı yapmaz ve orijinal dosyaları sunar.
  • Viewer kısmındaki:
  • HTTP and HTTPS: CloudFront, hem HTTP hem de HTTPS isteklerini kabul eder.
  • Redirect HTTP to HTTPS: CloudFront, tüm HTTP isteklerini otomatik olarak HTTPS’e yönlendirir.
  • HTTPS only: CloudFront, yalnızca HTTPS isteklerini kabul eder.
  • Allowed HTTP methods: Bu ayar, CloudFront’un hangi HTTP yöntemlerini kabul edeceğini belirler. Örneğin, yalnızca GET ve HEAD isteklerini kabul etmek isterseniz, ‘GET, HEAD’ seçeneğini seçebilirsiniz.
  • Restrict viewer access: Bu ayar, belirli IP adresleri veya IP aralıklarını belirleyerek, yalnızca belirli kullanıcıların CloudFront dağıtımınızı görüntülemesine izin verir. ‘No’ seçeneği seçildiğinde, herhangi bir kısıtlama olmaz ve herkes dağıtımı görüntüleyebilir.
  • Viewer Request: İstemci tarafından yapılan istekleri işlemek için kullanılır. Bu kategori altında özelleştirilmiş bir Lambda fonksiyonu, gelen istekleri değiştirebilir veya iptal edebilir.
  • Viewer Response: İstemci tarafından alınan yanıtları işlemek için kullanılır. Bu kategori altındaki özelleştirilmiş bir Lambda fonksiyonu, gönderilen yanıtları değiştirebilir veya iptal edebilir.
  • Origin Request: CloudFront’un backend’deki kaynaklara gönderilen istekleri işlemek için kullanılır. Bu kategori altındaki özelleştirilmiş bir Lambda fonksiyonu, backend isteklerini değiştirebilir veya iptal edebilir.
  • Origin Response: Backend tarafından alınan yanıtları işlemek için kullanılır. Bu kategori altındaki özelleştirilmiş bir Lambda fonksiyonu, alınan yanıtları değiştirebilir veya iptal edebilir.

Settings kısmındaki Price class tarafındaki Use all edge locations (best performance): Bu seçenek, isteklerin tüm AWS CloudFront edge konumlarına yönlendirilmesini sağlar. Use only North America and Europe: Bu seçenek, isteklerin sadece Kuzey Amerika ve Avrupa’daki edge konumlarına yönlendirilmesini sağlar. Use North America, Europe, Asia, Middle East, and Africa: Bu seçenek, isteklerin Kuzey Amerika, Avrupa, Asya, Ortadoğu ve Afrika’daki edge konumlarına yönlendirilmesini sağlar.

AWS WAF web ACL — optional: Bu, bir AWS WAF web ACL’siyle ilişkilendirmek istiyorsanız belirteceğiniz bir alandır.

Alternate domain name (CNAME) — optional: Bu alana, CloudFront dağıtımınız için alternatif bir domain adı (CNAME) ekleyebilirsiniz.

Custom SSL certificate — optional: Bu seçenek, CloudFront dağıtımınızda kullanmak için özel bir SSL sertifikası yüklemenizi sağlar.

Supported HTTP versions: Bu alanda, CloudFront dağıtımınızın desteklediği HTTP sürümlerini belirleyebilirsiniz.

Default root object — optional: Bu alanda, CloudFront dağıtımınızın varsayılan ana sayfasını belirleyebilirsiniz.

Standard logging: Bu seçenek, dağıtımınızdaki her isteği kaydederek istatistikleri görüntülemenizi ve analiz etmenizi sağlar.

IPv6 on/off: Bu seçenek, dağıtımınızda IPv6 adreslerinin kullanılıp kullanılmayacağını belirler.

CloudFront ile kendi sunucularımız yorulmuyor. Cloudfront resimi çekmek için her seferinde sunucuya gitmiyor önbelleğine alıyor. Bizim belirlediğimiz TTL değeri boyunca bu resimi üzerinde tutuyor ve isteyenlere resmi gönderiyor. İkinci olarak artık daha hızlı erişebiliyoruz. Mesela benim sunucum Almanyada ama ben Türkiyedeyim CloudFront Türkiye’ye daha yakın gibi …

Neden Redis kullanıp verilerimizi önbellekmiyoruz da CloudFront kullanıyoruz aradaki fark nedir ?

Redis ve CloudFront, farklı amaçlar için tasarlanmış farklı hizmetlerdir. Redis, hafızada veri depolama ve önbellek yönetimi için kullanılan bir açık kaynaklı veritabanıdır. CloudFront ise, statik ve dinamik içeriğin dağıtımı için kullanılan bir içerik dağıtım ağıdır.

Örneğin, bir e-ticaret web sitesi için, Redis ve CloudFront farklı senaryolarda kullanılabilir. Web sitesinde sıkça erişilen ürünlerin önbelleğe alınmasını sağlamak için Redis kullanılabilir. Bu, ürün sayfalarının daha hızlı yüklenmesine ve site performansının artmasına yardımcı olabilir. Aynı zamanda, Redis’in hafıza tabanlı veri depolama yapısı sayesinde, site performansı artırılabilir.

Diğer yandan, web sitesindeki statik içeriğin (örneğin, resimler, CSS dosyaları vb.) daha hızlı yüklenmesini sağlamak için CloudFront kullanılabilir. CloudFront, statik içeriğin tüm dünyada yaygın bir şekilde dağıtımını sağlayarak, sitenin erişilebilirliğini artırır. Ayrıca, CloudFront, müşteriye en yakın konumda bulunan sunuculara yönlendirerek, içeriğin daha hızlı yüklenmesine yardımcı olur.

Örneğin, bir e-ticaret sitesi, site performansını artırmak ve içeriği daha hızlı yüklemek için Redis ve CloudFront’ı birlikte kullanabilir. Redis, ürün sayfalarının hızlı yüklenmesini sağlar ve CloudFront, statik içeriğin hızlı dağıtımını sağlar. Bu, müşterilerin siteyi daha hızlı açmalarını sağlar ve e-ticaret sitesinin daha iyi bir kullanıcı deneyimi sunmasına yardımcı olur.

Okuduğunuz için teşekkürler.

--

--

Berkay Kulak

Hayatı recursive bir şekilde ele alır. Sorunları çözerken her adımda kendini çağırır. İnsanlar için return, sadece son değil, birçok başlangıçtır.