તબક્કાવાર scale કરો: પહેલા reads માટે read replicas + caching, પછી writes માટે sharding (Vitess) — અને બીજું કંઈ પણ પહેલાં connection pooling ઉમેરો, કારણ કે તે સૌથી સસ્તું 10x છે. Reads અને writes અલગ રીતે scale થાય છે, તેથી પહેલા દિવસે sharding તરફ ન પહોંચો.
┌─▶ 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
Step 0: connection pooling
દરેક MySQL connection memory અને એક thread ખર્ચે છે. 100x traffic પર તમે CPU કરતાં ઘણા વહેલા ખાલી કરી નાખશો. અથવા જેવો pooler હજારો app connections ને થોડાક સો DB connections પર multiplex કરે છે. તે config change છે, rearchitecture નહીં — તે પહેલા કરો.
