Back to Blog

High Availability

February 22, 20263 min
High AvailabilitySystem ReliabilityFault Tolerance
High Availability

High Availability (HA) Kavramı

High Availability (HA), bir sistemin; herhangi bir bileşeni (sunucu, veritabanı, ağ cihazı) arızalansa bile hizmet vermeye devam edebilme kapasitesidir.

Amaç:

  • “Sistem düştü mü?” sorusuna mümkün olduğunca “hayır” cevabını verebilmek
  • Downtime’ı minimize etmek
  • SLA ve regülasyon gereksinimlerini karşılamak
  • Gelir kaybını ve kullanıcı güven kaybını önlemek

High Availability şunlar değildir:

  • High performance değildir
  • Infinite scaling değildir
  • Data loss = 0 demek değildir

HA’nin amacı sistemin ayakta kalmasıdır, maksimum hızda çalışması değil.

Availability Nasıl Ölçülür?

Availability yüzde (%) ile ölçülür ve uptime oranını ifade eder.

Örneğin:

  • %99 → yılda yaklaşık 3.65 gün kesinti
  • %99.9 → yılda yaklaşık 8.76 saat kesinti
  • %99.99 → yılda yaklaşık 52 dakika kesinti

Buna “the nines” denir.

High Availability Nasıl Sağlanır?

1. Redundancy (Yedeklilik)

Temel kural:

Yedeği olmayan her bileşen Single Point of Failure’dır.

Örnek riskler:

  • Tek load balancer
  • Tek veritabanı
  • Tek uygulama sunucusu

HA mimarisinde her kritik bileşenin en az bir yedeği bulunur.

Active-Passive

  • Primary çalışır
  • Secondary beklemede durur
  • Primary düşerse secondary devralır

Active-Active

  • Birden fazla node aynı anda çalışır
  • Trafik paylaşılır
  • Biri düşerse diğerleri devam eder
Client
 ↓
Load Balancer (x2)
 ↓
App Server (xN)
 ↓
DB (Primary + Replica)

2. Failover

Failover, bir arıza durumunda trafiğin otomatik olarak yedek sisteme aktarılmasıdır.

Örnek:

  • Primary DB düşer
  • Replica promote edilir
  • Uygulama kesinti yaşamadan devam eder

Manuel failover HA değildir. Otomatik olmalıdır.

3. Load Balancer

HA’nin temel yapı taşlarından biridir.

Görevleri:

  • Trafiği dağıtmak
  • Health check yapmak
  • Sağlıksız node’ları devre dışı bırakmak

Load balancer yedekli değilse gerçek HA’dan söz edilemez.

4. Stateless Application

Stateless uygulama olmadan gerçek HA sağlamak zordur.

Eğer session sunucunun RAM’inde tutuluyorsa:

  • Sunucu değiştiğinde kullanıcı düşer
  • Failover etkili olmaz

Stateless backend sayesinde:

  • Her request bağımsızdır
  • Kullanıcı başka node’a aktarılabilir
  • HA ve horizontal scaling birlikte çalışır

5. Database High Availability

En kritik katmandır.

App server ayakta olsa bile DB düşerse sistem çalışmaz.

Yöntemler:

  • Primary–Replica
  • Multi-AZ
  • Automatic failover
  • Read replicas

Veritabanı çoğu zaman sistemin gerçek darboğazıdır.

6. Health Checks ve Monitoring

HA için gözlem şarttır.

Health check olmadan:

  • Load balancer hangi node’un bozuk olduğunu bilemez

Kontrol edilenler:

  • Service alive mı?
  • Latency normal mi?
  • Response code doğru mu?

Monitoring ve alerting HA’nin ayrılmaz parçasıdır.

Örnek HA Mimarisi

Internet
 ↓
DNS (Health-aware)
 ↓
Load Balancer (Multi-AZ)
 ↓
App Servers (Stateless, N adet)
 ↓
Cache (Redis Cluster)
 ↓
DB (Primary + Replica)

Bu mimaride:

  • Single point of failure yoktur
  • Tüm katmanlar yedeklidir
  • Failover otomatik çalışır

High Availability vs Fault Tolerance

High Availability:

  • Kısa süreli kesinti olabilir
  • Sistem saniyeler içinde toparlanır

Fault Tolerance:

  • Sıfır kesinti hedeflenir
  • Donanım seviyesinde eşzamanlı yedekleme gerekir
  • Çok maliyetlidir

HA ve Scalability Farkı

KonseptAmaç
High AvailabilitySistemin ayakta kalması
ScalabilityYük altında büyüyebilmesi

Bir sistem ölçeklenebilir olabilir ama HA olmayabilir. Aynı şekilde HA olabilir ama ölçeklenebilir olmayabilir.

Özet

  • High Availability, sistemin arızalara rağmen hizmet vermeye devam etmesidir.
  • İlk adım single point of failure’ları ortadan kaldırmaktır.
  • Stateless uygulamalar HA için idealdir.
  • Failover otomatik olmalıdır.
  • Database ve load balancer katmanları en kritik noktalardır.