Skaluj etapami: najpierw read repliki + cache dla odczytów, potem sharding (Vitess) dla zapisów — i dodaj connection pooling przed czymkolwiek innym, bo to najtańsze 10x. Odczyty i zapisy skalują się różnie, więc nie sięgaj po sharding pierwszego dnia.
┌─▶ 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
Krok 0: connection pooling
Każde połączenie MySQL kosztuje pamięć i wątek. Przy 100x ruchu wyczerpiesz długo przed CPU. Pooler jak lub multipleksuje tysiące połączeń aplikacji na kilkaset połączeń DB. To zmiana konfiguracji, nie przebudowa architektury — zrób to najpierw.
