インフラ・クラウド・DevOps · 上級

スケーリング:水平、垂直、本当に必要なもの

一行でいうと: スケーリングする前に、ボトルネックがどこにあるかを測定する——ほとんどのシステムでは、サーバーの数ではなくデータベースか一つのクエリにある。

二つの方向

垂直:より大きなマシン。適用が速く、上限があり、単一障害点。

水平:ロードバランサーの後ろにより多くのインスタンス。アプリがステートレスであることが必要——共有ストアのセッション、オブジェクトストレージのファイル、ローカルメモリへの依存なし。

実際に行き詰まる場所

データベース接続、インデックスなしのクエリ、ロック、長い同期プロセス。ボトルネックがデータベースのときにサーバーを倍にすることはプレッシャーを増やすだけだ。

なので:スケーリングする前にプロファイルする。半時間の測定は一ヶ月の不必要なアーキテクチャを節約する。

読み取り対書き込み

ほとんどのシステムは書き込むより読む方がはるかに多い。読み取りレプリカ、キャッシュ、マテリアライズドビューは、本物のデータ分割が必要になる前に遠くまで行く。

さらに深く

自動スケーリングは遅れた指標ではなく、先行指標が必要だ:キューの長さやリクエスト率はCPU使用率より早く応答する。そして上限を設定する——上限なしの自動スケーリングはループバグを驚きの請求書に変える。