段階的にスケールします:まず読み取りにはリードレプリカ + キャッシュ、次に書き込みにはシャーディング(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
ステップ0:コネクションプーリング
すべてのMySQL接続はメモリとスレッドを消費します。100倍のトラフィックでは、CPUのずっと前に を使い果たします。やのようなプーラーが数千のアプリ接続を数百のDB接続に多重化します。再アーキテクチャではなく設定変更です。最初にやります。
