Масштабируйте поэтапно: сначала read-реплики + кэширование для чтений, затем шардинг (Vitess) для записей — и добавьте пул соединений раньше всего остального, потому что это самый дешёвый 10-кратный выигрыш. Чтения и записи масштабируются по-разному, поэтому не тянитесь к шардингу в первый же день.
┌─▶ 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
