Scalez par étapes : read replicas + caching pour les lectures d'abord, puis sharding (Vitess) pour les écritures — et ajoutez du connection pooling avant tout, car c'est le 10x le moins cher. Les lectures et les écritures scalent différemment, donc ne recourez pas au sharding dès le premier jour.
┌─▶ 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
