Skalirajte u fazama: read replike + cachiranje za čitanja prvo, zatim sharding (Vitess) za upise — i dodajte connection pooling prije svega ostalog, jer je to najjeftinijih 10x. Čitanja i upisi skaliraju se drukčije, pa ne posežite za shardingom prvog dana.
┌─▶ 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
Korak 0: connection pooling
Svaka MySQL veza košta memoriju i nit. Pri 100x prometu iscrpit ćete puno prije CPU-a. Pooler poput ili multipleksira tisuće aplikacijskih veza na nekoliko stotina DB veza. To je promjena konfiguracije, ne rearhitektura — napravite to prvo.
