Schaal in fases: read replica's + caching voor reads eerst, daarna sharding (Vitess) voor writes — en voeg connection pooling toe vóór al het andere, want dat is de goedkoopste 10x. Reads en writes schalen anders, dus grijp niet op dag één naar sharding.
┌─▶ Cache (Redis) ── hit ──▶ geef terug
App ─▶ Pool(PgBouncer/ProxySQL) miss ▼
│ ┌─▶ Read replica 1 ┐
├──── reads ─────────┼─▶ Read replica 2 ┼─ (async replicatie)
│ └─▶ Read replica N ┘
└──── writes ──▶ Primary ──▶ (later) Vitess shards ─▶ Primary A / Primary B
Stap 0: connection pooling
Elke MySQL-connectie kost geheugen en een thread. Bij 100x verkeer put je uit lang voor de CPU. Een pooler als of multiplext duizenden app-connecties op een paar honderd DB-connecties. Het is een config-wijziging, geen herarchitectuur — doe het eerst.
