インフラ・クラウド・DevOps · 上級
スケーリング:水平、垂直、本当に必要なもの
一行でいうと: スケーリングする前に、ボトルネックがどこにあるかを測定する——ほとんどのシステムでは、サーバーの数ではなくデータベースか一つのクエリにある。
二つの方向
垂直:より大きなマシン。適用が速く、上限があり、単一障害点。
水平:ロードバランサーの後ろにより多くのインスタンス。アプリがステートレスであることが必要——共有ストアのセッション、オブジェクトストレージのファイル、ローカルメモリへの依存なし。
実際に行き詰まる場所
データベース接続、インデックスなしのクエリ、ロック、長い同期プロセス。ボトルネックがデータベースのときにサーバーを倍にすることはプレッシャーを増やすだけだ。
なので:スケーリングする前にプロファイルする。半時間の測定は一ヶ月の不必要なアーキテクチャを節約する。
読み取り対書き込み
ほとんどのシステムは書き込むより読む方がはるかに多い。読み取りレプリカ、キャッシュ、マテリアライズドビューは、本物のデータ分割が必要になる前に遠くまで行く。
さらに深く
自動スケーリングは遅れた指標ではなく、先行指標が必要だ:キューの長さやリクエスト率はCPU使用率より早く応答する。そして上限を設定する——上限なしの自動スケーリングはループバグを驚きの請求書に変える。