ধাপে ধাপে scale করুন: প্রথমে read-এর জন্য read replica + caching, তারপর write-এর জন্য sharding (Vitess) — এবং অন্য যেকোনো কিছুর আগে connection pooling যোগ করুন, কারণ এটি সবচেয়ে সস্তা ১০x। read ও write ভিন্নভাবে 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
ধাপ ০: connection pooling
প্রতিটি MySQL connection memory এবং একটি thread খরচ করে। ১০০x traffic-এ আপনি CPU-এর অনেক আগে নিঃশেষ করবেন। বা -এর মতো একটি pooler হাজার হাজার app connection-কে কয়েকশো DB connection-এ multiplex করে। এটি একটি config পরিবর্তন, একটি re-architecture নয় — প্রথমে এটি করুন।
