スケールアウト

読み:すけーるあうと / 英語表記:Scale Out

サーバや実行環境の台数を増やし、処理を分担させて全体の能力を高める方法である。各環境へ要求を振り分ける仕組みと、必要なデータを共有する設計が必要になる。

イマシルちゃんの解説

一台のサーバだけでは処理しきれないとき、同じ仕事を担当するサーバを追加する方法があるよ。
これがスケールアウトなんだ。
Webサービスなら、新しいサーバを起動してロードバランサの振分け先へ加える構成にできるよ。
今動いているサーバへ処理を任せながら準備できるので、サービスを続けたまま増強しやすいの。
ただし、どのサーバでも必要なデータを読めるようにしておくことが大切だよ。
台数を増やすだけで速くなるとは限らず、共通のデータベースが混雑すれば、そこが全体の限界になるんだ。

より深い解説

複数の処理先へ仕事を分ける

スケールアウトは水平方向の拡張とも呼ばれる。一台当たりの資源を増やすスケールアップと異なり、処理を担当するインスタンスを追加する。台数を減らす操作はスケールインである。

Webサーバを追加する場合は、同じアプリケーションと必要な設定を用意し、ロードバランサのサーバプールへ登録する。ヘルスチェックで準備完了を確認してから新しい要求を渡す。既存のサーバを稼働させながら追加できる構成なら、増強時の停止を抑えられる。

処理を分散する前にそろえるもの

対象必要な設計
要求の振分け正常な処理先を選び、追加したサーバへも仕事を渡す
利用者のセッション同じ利用者を同じ先へ寄せるか、状態を外部で共有する
更新するデータ複数台で競合しないよう、整合性や排他を管理する
共通の保存先データベースやストレージが増加する負荷を処理できるようにする
設定とバージョンどのサーバへ届いても必要な処理を実行できるようにそろえる

例えば買い物かごを一台のメモリにだけ保存すると、次の要求が別の台へ届いたときに内容を参照できない。ステートレスな処理にする、状態を共有する保存先を用意するなどの設計で、振分け先の制約を減らす。

増やしても残る制約

処理を並列に分けられない部分や、全台が利用するデータベースはボトルネックになり得る。サーバを二倍にしても処理能力が必ず二倍になるわけではない。台数増加による同期処理や通信の負担も含めて性能を確認する。

サービスを止めずに拡張できるかは、登録方法、アプリケーションの互換性、接続の振分けなどによる。スケールアウトを選んだだけで無停止が保証されるわけではない。台数を減らす場合も、新規の要求を止め、実行中の処理が終わってから対象を外すなどの手順が必要になる。

参考資料

実際の試験ではここに出る!全1問

ネットワークスペシャリスト

午後Ⅱ

この用語が出てくる記事

↑