Skala i steg: read replicas + caching för läsningar först, sedan sharding (Vitess) för skrivningar — och lägg till connection pooling före allt annat, eftersom det är den billigaste 10x:en. Läsningar och skrivningar skalar olika, så grip inte efter sharding dag ett.
┌─▶ 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
Steg 0: connection pooling
Varje MySQL-anslutning kostar minne och en tråd. Vid 100x trafik kommer du att tömma långt före CPU. En pooler som eller multiplexar tusentals app-anslutningar på några hundra DB-anslutningar. Det är en konfigurationsändring, inte en omarkitektur — gör det först.
