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ı
| Konsept | Amaç |
|---|---|
| High Availability | Sistemin ayakta kalması |
| Scalability | Yü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.