スケールアウト
サーバや実行環境の台数を増やし、処理を分担させて全体の能力を高める方法である。各環境へ要求を振り分ける仕組みと、必要なデータを共有する設計が必要になる。
イマシルちゃんの解説
一台のサーバだけでは処理しきれないとき、同じ仕事を担当するサーバを追加する方法があるよ。
これがスケールアウトなんだ。
Webサービスなら、新しいサーバを起動してロードバランサの振分け先へ加える構成にできるよ。
今動いているサーバへ処理を任せながら準備できるので、サービスを続けたまま増強しやすいの。
ただし、どのサーバでも必要なデータを読めるようにしておくことが大切だよ。
台数を増やすだけで速くなるとは限らず、共通のデータベースが混雑すれば、そこが全体の限界になるんだ。
この解説はわかりやすかったですか?
より深い解説
複数の処理先へ仕事を分ける
スケールアウトは水平方向の拡張とも呼ばれる。一台当たりの資源を増やすスケールアップと異なり、処理を担当するインスタンスを追加する。台数を減らす操作はスケールインである。
Webサーバを追加する場合は、同じアプリケーションと必要な設定を用意し、ロードバランサのサーバプールへ登録する。ヘルスチェックで準備完了を確認してから新しい要求を渡す。既存のサーバを稼働させながら追加できる構成なら、増強時の停止を抑えられる。
処理を分散する前にそろえるもの
| 対象 | 必要な設計 |
|---|---|
| 要求の振分け | 正常な処理先を選び、追加したサーバへも仕事を渡す |
| 利用者のセッション | 同じ利用者を同じ先へ寄せるか、状態を外部で共有する |
| 更新するデータ | 複数台で競合しないよう、整合性や排他を管理する |
| 共通の保存先 | データベースやストレージが増加する負荷を処理できるようにする |
| 設定とバージョン | どのサーバへ届いても必要な処理を実行できるようにそろえる |
例えば買い物かごを一台のメモリにだけ保存すると、次の要求が別の台へ届いたときに内容を参照できない。ステートレスな処理にする、状態を共有する保存先を用意するなどの設計で、振分け先の制約を減らす。
増やしても残る制約
処理を並列に分けられない部分や、全台が利用するデータベースはボトルネックになり得る。サーバを二倍にしても処理能力が必ず二倍になるわけではない。台数増加による同期処理や通信の負担も含めて性能を確認する。
サービスを止めずに拡張できるかは、登録方法、アプリケーションの互換性、接続の振分けなどによる。スケールアウトを選んだだけで無停止が保証されるわけではない。台数を減らす場合も、新規の要求を止め、実行中の処理が終わってから対象を外すなどの手順が必要になる。
参考資料
実際の試験ではここに出る!全1問
ネットワークスペシャリスト
- 午後Ⅱ