Aşamalar halinde ölçekleyin: okumalar için önce read replica + caching, sonra yazmalar için sharding (Vitess) — ve her şeyden önce connection pooling ekleyin, çünkü bu en ucuz 10 kat'tır. Okumalar ve yazmalar farklı ölçeklenir, bu yüzden ilk gün sharding'e başvurmayın.
┌─▶ Cache (Redis) ── hit ──▶ return
App ─▶ Pool(PgBouncer/ProxySQL) miss ▼
│ ┌─▶ Read replica 1 ┐
├──── reads ─────────┼─▶ Read replica 2 ┼─ (async replication)
│ └─▶ Read replica N ┘
└──── writes ──▶ Primary ──▶ (later) Vitess shards ─▶ Primary A / Primary B
Adım 0: connection pooling
Her MySQL bağlantısı bellek ve bir thread'e mal olur. 100 kat trafikte CPU'dan çok önce 'ı tüketirsiniz. veya gibi bir pooler, binlerce app bağlantısını birkaç yüz DB bağlantısına multiplex eder. Bu bir yeniden mimari değil, bir config değişikliğidir — önce yapın.
