# Application Load Balancer (ALB)

* **HTTP Katmanında Çalışır:**\
  OSI katman modeli bazında 7. katman (Application Layer) yük dengeleyicisidir.
* **Makineden Makineye HTTP Uygulama Trafiğini Yönlendirir:**\
  Uygulamalar arası HTTP/S trafiğini analiz eder ve uygun hedefe yönlendirir.
* **Birden Fazla Uygulamayı Yönlendirebilir:**\
  Host-based (`host-header`) veya path-based (`path-pattern`) routing ile aynı ALB altında birden fazla uygulama çalıştırılabilir.\
  Örnek:
  * `api.ornek.com → service A`
  * `web.ornek.com → service B`
  * `/admin → admin backend`
* **HTTP'den HTTPS’e Otomatik Yönlendirme Yapar:**\
  Güvenliği artırmak için gelen tüm HTTP isteklerini otomatik olarak HTTPS'e yönlendirme (redirect) desteği sunar.
* **HTTP/2 ve WebSocket Desteği Vardır:**\
  Modern uygulamalar için daha verimli bağlantı yönetimi ve düşük gecikme sağlayan HTTP/2 ile birlikte, WebSocket üzerinden gerçek zamanlı iletişim imkânı sunar.

<figure><img src="https://898869988-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F9GNfPnZHcJcPKLgWCT7h%2Fuploads%2FdjlTcAlvFPjfPGLQbUXw%2Fimage.png?alt=media&#x26;token=f8f03e05-a19e-4a33-9ed9-10d057d38040" alt=""><figcaption><p>HTTP trafiği bazında ALB Tanımı</p></figcaption></figure>

## Target Group (Hedef Grup)

* **EC2 instance’ları** (Auto Scaling Group ile yönetilebilir) → HTTP üzerinden hedeflenebilir
* **ECS görevleri (tasks)** → ECS tarafından yönetilir, HTTP trafiğini alabilir
* **Lambda fonksiyonları** → Gelen HTTP isteği bir JSON olayı (event) olarak çevrilir ve Lambda’ya iletilir
* **IP Adresleri** → Sadece özel (private) IP adresleri desteklenir

#### Yönlendirme ve Sağlık Kontrolleri

* **ALB**, birden fazla hedef gruba (target group) trafik yönlendirebilir
* **Sağlık kontrolleri**, hedef grup seviyesinde tanımlanır ve uygulanır

**Farklı hedef gruplara yönlendirme kuralları:**

* **URL yolu (path) bazlı yönlendirme:**\
  Örnek: `example.com/users` veya `example.com/posts`
* **Hostname (alan adı) bazlı yönlendirme:**\
  Örnek: `one.example.com`, `other.example.com`
* **Sorgu parametresi veya header bazlı yönlendirme:**\
  Örnek: `example.com/users?id=123&order=false`

<figure><img src="https://898869988-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F9GNfPnZHcJcPKLgWCT7h%2Fuploads%2F0BGJWQN5bbsEa4O04ZDc%2Fimage.png?alt=media&#x26;token=58581041-6caf-4ff5-aed5-0db6c6e7cb81" alt=""><figcaption><p>Query Header Paramater Routing</p></figcaption></figure>

#### ALB'nin Avantajları

* **Mikro servisler ve container tabanlı uygulamalar için idealdir**\
  (Örnek: Docker, Amazon ECS)
* **ECS için dinamik port yönlendirme (port mapping) desteği sunar**
* **Karşılaştırma açısından:**\
  Aynı işi klasik yük dengeleyici (Classic Load Balancer) ile yapmak için her uygulama için ayrı bir yük dengeleyici gerekirken, ALB tek başına yeterlidir.

#### &#x20;Bilinmesi Gerekenler

* **Sabit bir hostname’e sahiptir:**\
  Örnek format: `xxx.region.elb.amazonaws.com`
* **Uygulama sunucuları istemcinin (client) IP adresini doğrudan göremez.**
  * Gerçek istemci IP’si, HTTP başlığı olan `X-Forwarded-For` içine eklenir.
  * Ek olarak, port bilgisi `X-Forwarded-Port`, protokol bilgisi ise `X-Forwarded-Proto` başlığı ile iletilebilir.

<figure><img src="https://898869988-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F9GNfPnZHcJcPKLgWCT7h%2Fuploads%2FVHKJhXEp0qomF3OT0ygy%2Fimage.png?alt=media&#x26;token=226c7c18-909a-49cf-be1b-1739bd9833eb" alt=""><figcaption><p>Örneklem</p></figcaption></figure>
