Veritabanı Hariç Her Şeyi Ölçeklendirme
20 servisimizi harika bir şekilde ölçeklendirdik. Hepsi aynı PostgreSQL örneğine bağlandı.
Mimari:
- 20 mikroservis (bağımsız olarak ölçeklenebilir! ✅)
- 1 PostgreSQL veritabanı (ölçeklenemez ❌)
- Her servis: 10 bağlantı havuzu boyutu
- PostgreSQL max_connections: 100
Matematik:
- 20 servis × 10 bağlantı = 200 gerekli
- Maksimum kullanılabilir: 100
- Sonuç: Ölçeklendirme sırasında bağlantı kıtlığı
Gerçekte ne oldu:
- A, B, C servisleri tüm bağlantıları kaptı
- D-T servisleri: "bağlantı reddedildi"
- Sağlık kontrolleri başarısız oldu
- Pod'lar yeniden başladı, daha fazla bağlantı kaptı
- Ölüm sarmalı
Düzeltme:
- Bağlantı havuzu için PgBouncer
- Servis başına bağlantı limitleri
- Okuma ağırlıklı servisler için okuma kopyaları
- Sonunda: servis başına veritabanı deseni
Ders: Paylaşılan bir veritabanına sahip "mikroservisler", fazladan adımlarla dağıtılmış bir monolittir.