Yük Dengeleyiciler (Load Balancers)
Bir web sitesinin trafiği artmaya başladığında ya da yüksek erişilebilirlik gerektiren bir uygulama çalıştırıldığında, tek bir web sunucusu artık yeterli olmayabilir. Yük dengeleyiciler, bu noktada devreye girerek iki temel işlev sağlar:
-
Yüksek trafikli web sitelerinin bu trafiği kaldırabilmesini sağlar.
-
Bir sunucu yanıt vermez hale gelirse, yedekleme (failover) sağlayarak sistemi ayakta tutar.
Bir yük dengeleyici kullanılan web sitesine istekte bulunduğunuzda, ilk olarak isteğiniz yük dengeleyiciye gider. Daha sonra bu istek, arkasında yer alan birden fazla sunucudan birine yönlendirilir. Hangi sunucuya yönlendirileceğine karar vermek için yük dengeleyici çeşitli algoritmalar kullanır.
Birkaç örnek algoritma:
-
Round-robin (sırayla): Her isteği sırayla bir sonraki sunucuya gönderir.
-
Weighted (ağırlıklı): Her bir sunucunun şu anda kaç istekle meşgul olduğunu kontrol eder ve en az yoğun olan sunucuya gönderir.
Ayrıca, yük dengeleyiciler her bir sunucunun düzgün çalışıp çalışmadığını düzenli olarak kontrol eder. Bu işleme sağlık kontrolü (health check) denir. Eğer bir sunucu uygun şekilde yanıt vermezse, yük dengeleyici o sunucuya istek göndermeyi durdurur. Sunucu yeniden düzgün yanıt verdiğinde, tekrar devreye alınır.
📦 CDN (İçerik Dağıtım Ağı – Content Delivery Network)
CDN, yoğun trafiğe sahip bir web sitesinin yükünü azaltmak için harika bir kaynaktır. Web sitenizdeki statik dosyaları (JavaScript, CSS, görseller, videolar vb.) dünyanın dört bir yanındaki binlerce sunucuda barındırmanıza olanak tanır.
Bir kullanıcı bu dosyalardan birini istediğinde, CDN en yakın sunucunun nerede olduğunu tespit eder ve isteği oraya yönlendirir. Bu sayede veriler, dünyanın öbür ucundan gelmek yerine kullanıcının bulunduğu yere en yakın noktadan iletilir, bu da hızı ve performansı artırır.
🗃️ Veritabanları (Databases)
Web siteleri genellikle kullanıcıları için bilgi depolamak zorundadır. Web sunucuları, verileri saklamak ve geri almak için veritabanlarıyla iletişim kurar.
Veritabanları, basit bir düz metin dosyasından başlayarak, birden fazla sunucudan oluşan karmaşık ve hızlı kümelere kadar çeşitlilik gösterebilir.
Yaygın kullanılan bazı veritabanları:
-
MySQL
-
MSSQL
-
MongoDB
-
PostgreSQL
-
ve diğerleri...
Her veritabanı farklı özellikler ve avantajlar sunar.
🔐 WAF (Web Uygulama Güvenlik Duvarı – Web Application Firewall)
WAF, web isteği ile web sunucusu arasına konumlanan bir güvenlik katmanıdır. Temel amacı, web sunucusunu hackleme girişimlerinden ve hizmet dışı bırakma (DoS) saldırılarından korumaktır.
-
Gelen web isteklerini analiz eder.
-
Gerçek bir tarayıcıdan mı yoksa bir bot’tan mı geldiğini kontrol eder.
-
"Rate limiting" adı verilen bir teknikle, belirli bir IP’den saniyede kaç istek geldiğini sınırlar.
Eğer bir istek potansiyel bir saldırı olarak değerlendirilirse, bu istek sunucuya hiç ulaşmadan engellenir (drop edilir).
***🌐 Web Sunucuları Nasıl Çalışır?
Web Sunucusu Nedir?
Bir web sunucusu, gelen bağlantıları dinleyen ve HTTP protokolünü kullanarak web içeriğini istemcilere sunan bir yazılımdır. En yaygın kullanılan web sunucusu yazılımları arasında Apache, Nginx, IIS ve NodeJS yer alır.
Web sunucuları, “kök dizin (root directory)” adı verilen bir klasörden dosyaları sunar. Bu dizin, yazılımın ayarlarında tanımlanmıştır.
Örneğin:
-
Nginx ve Apache (Linux’ta):
/var/www/html
-
IIS (Windows’ta):
C:\inetpub\wwwroot
Yani, tarayıcıdan http://www.example.com/picture.jpg
adresi istenirse, sunucu sabit diskinden /var/www/html/picture.jpg
dosyasını gönderir.
🔀 Virtual Hosts (Sanal Sunucular)
Bir web sunucusu, farklı alan adlarına (domain) sahip birden fazla web sitesi barındırabilir. Bunu virtual hosts (sanal barındırma) ile yapar. Sunucu, HTTP başlıklarından gelen alan adını (hostname) kontrol eder ve bunu kendi yapılandırma dosyalarındaki sanal sunucularla eşleştirir.
Eşleşme bulunursa doğru site gösterilir; eşleşme yoksa varsayılan site açılır.
Örnek:
-
one.com
➝/var/www/website_one
-
two.com
➝/var/www/website_two
Bir web sunucusunda barındırılabilecek site sayısında teorik olarak bir sınır yoktur.
📄 Statik ve Dinamik İçerik
-
Statik İçerik: Değişmeyen içeriktir. Örneğin: resimler, CSS, JavaScript dosyaları ve sabit HTML dosyaları. Bu dosyalar doğrudan sunucudan gönderilir.
-
Dinamik İçerik: Ziyaretçiye veya isteğe göre değişen içeriktir. Örnek: bir blog ana sayfası her yeni yazıyla birlikte güncellenir veya blog içi arama sonuçları farklı sonuçlar gösterir.
Dinamik içerik, arka uç (Backend) adı verilen kısımda programlama dilleriyle işlenir. Bu işlem tarayıcıdan görülmez. Tarayıcıda gördüğünüz her şey ön uç (Frontend) olarak adlandırılır.
💻 Backend (Sunucu Tarafı) Dilleri ve Scriptler
Backend dilleri, web sitesine etkileşimli özellikler kazandırır. Bu diller veri tabanlarıyla iletişim kurabilir, dış servislerle bağlantı sağlayabilir, kullanıcı verisini işleyebilir vb.
Bazı örnek diller:
-
PHP
-
Python
-
Ruby
-
NodeJS
-
Perl
Basit bir PHP örneği:
İstek:
http://example.com/index.php?name=adam
Kod:
Tarayıcıya dönen çıktı:
Dikkat: Kullanıcı tarayıcıda PHP kodunu göremez çünkü bu kod sunucu tarafında çalışır. Bu interaktivite, aynı zamanda web uygulamalarında güvenlik açıklarının oluşabileceği noktadır.