Moderne dağıtık sistemler dünyasında, giriş noktası genellikle mimarinizdeki en kritik darboğazdır. Mikroservisler yaygınlaştıkça, trafiğin kenarda nasıl yönlendirildiği, izlendiği ve güvence altına alındığı, tüm platformunuzun ölçeklenebilirliğini ve dayanıklılığını belirler. Katman 4 (Taşıma) ve Katman 7 (Uygulama) yük dengeleme arasındaki tartışma yalnızca akademik bir mesele değildir; gecikme süresini, veri akışını ve geliştirici hızını etkileyen temel bir mimari karardır.
OSI Modeli Ayrımı
Doğru aracı seçmek için, bu araçların üzerinde çalıştığı veriyi anlamamız gerekir. Katman 4 yük dengeleyicileri, Taşıma Katmanı'nda çalışır ve öncelikle TCP/UDP başlıklarıyla ilgilenir. Yönlendirme kararlarını kaynak ve hedef IP adreslerine ve portlara dayanarak verirler. Yükü (payload) incelemedikleri için karar verme süreci son derece hızlıdır; bu da minimum ek yük ve yüksek veri akışı sağlar.
Buna karşılık, Katman 7 yük dengeleyicileri Uygulama Katmanı'nda çalışır. İsteğin gerçek içeriğini—HTTP başlıklarını, URL yollarını, çerezleri ve mesaj gövdelerini—incelerler. Bu derin paket denetimi, gelişmiş yönlendirme mantığına olanak tanır ancak hesaplama ek yükü de getirir. Katman 4 ham performansta öne çıkarken, Katman 7 karmaşık mikroservis yönetimi için gerekli olan bağlamı sunar.
Katman 4 Ne Zaman Kullanılır: Ham Performans
Katman 4 yük dengeleme, hızın ön planda olduğu ve trafik protokolünün standart olduğu senaryolar için idealdir. Yaygın kullanım durumları şunları içerir:
- TCP/UDP Vekilliği (Proxying): HTTP semantiklerinin geçerli olmadığı veritabanları, Redis kümeleri veya oyun sunucuları için trafiği yönlendirme.
- SSL Sonlandırma (Offloading): TLS bağlantılarını yük dengeleyicide sonlandırarak arka uç hizmetlerindeki hesaplama yükünü azaltma.
- Basit Hata Yönlendirme (Failover): Belirli uygulama mantığına bakmaksızın, mevcut sağlıklı herhangi bir örneğe trafiği yönlendirme.
Örneğin, HAProxy gibi bir ortamda basit bir TCP yük dengeleyici yapılandırmak, HTTP dışı trafik için doğrudan ve son derece verimlidir.
Katman 7 Ne Zaman Kullanılır: Akıllı Yönlendirme
Katman 7, modern mikroservis mimarilerinin omurgasıdır. Katman 4'te imkansız olan özellikleri etkinleştirir, örneğin:
- İçerik Tabanlı Yönlendirme:
/api/v1/userstrafiğini hizmet A'ya ve/api/v1/orderstrafiğini hizmet B'ye yönlendirme; bunlar aynı giriş IP'sini ve portunu paylaşsa bile. - Kimlik Doğrulama ve Yetkilendirme: İstek arka ucunuza ulaşmadan önce JWT belirteçlerini veya API anahtarlarını doğrulama.
- Yük Dengeleme Algoritmaları: Yapışkan oturumları (sticky sessions) korumak için oturum kimliklerine dayalı tutarlı hashleme uygulama.
Pratik Örnek: Nginx Ingress Yapılandırması
İşte Nginx Ingress Controller'ı yapılandırarak, ana bilgisayar ve yol bazında trafik yönlendiren Katman 7 yeteneklerini nasıl gösterebileceğinize dair bir örnek:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: microservices-ingress
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- host: api.example.com
http:
paths:
- path: /v1/auth
pathType: Prefix
backend:
service:
name: auth-service
port:
number: 8080
- path: /v1/data
pathType: Prefix
backend:
service:
name: data-service
port:
number: 8080
Hibrit Mimariler: En İyi İki Dünya
Çoğu yüksek performanslı sistem birini diğerine tercih etmek yerine, her ikisini de kullanır. Yaygın bir desen "iki katmanlı" yaklaşımdır. Dış katman, SSL sonlandırma yapar ve trafiği bir Katman 7 vekili (Nginx, Envoy veya HAProxy gibi) havuzuna dağıtan Katman 4 yük dengeleyicilerinden (AWS ELB veya Cloudflare gibi) oluşur. Bu katman dayanıklılık sağlar ve saldırı yüzeyini azaltırken, iç Katman 7 katmanı mikroservisleriniz tarafından gereken karmaşık yönlendirme mantığını işler.
Sonuç
Katman 4 ve Katman 7 arasında seçim yapmak, hangisinin "daha iyi" olduğundan ziyade, spesifik kısıtlamalarınız için hangisinin uygun olduğuna dair bir karardır. Ham veri akışı ve basit protokol işleme için Katman 4 hâlâ liderdir. Dinamik mikroservis ekosistemleri için gereken esneklik ve zeka için Katman 7 vazgeçilmezdir. Hibrit bir giriş katmanı mimarisi kurarak, modern web uygulamalarının gerektirdiği yüksek kullanılabilirliği ve düşük gecikme süresini elde edebilirsiniz.