ロードバランサ
クライアントのリクエストをアプリケーションサーバーやデータベースへと分散させる機構
どのケースでもロードバランサはサーバー等の計算リソースからのレスポンスを適切なクライアントに返す
以下のことに効果的
リクエストが状態の良くないサーバーに行くのを防ぐ
リクエストを過剰に送るのを防ぐ
特定箇所の欠陥でサービスが落ちることを防ぐ
ロードバランサは (費用の高い) ハードウェアもしくはHAProxyなどのソフトウェア、Amazon ELBなどで実現 他の利点
クッキーを取り扱うウェブアプリがセッション情報を保持していない時などに、特定のクライアントのリクエストを同じインスタンスへと流す 障害に対応するために、アクティブ・パッシブ もしくは アクティブ・アクティブモードのどちらにおいても、複数のロードバランサーを配置するのが一般的
汎用ハードウェアを扱える人材を雇う方が、特化型の商用ハードウェアを扱える人材を雇うよりも簡単
考慮すべき点
水平的にスケーリングしていくと、複雑さが増す上に、サーバーのクローニングが必要になる
サーバーはステートレスである必要がある
ユーザーに関連するセッションや、プロフィール写真などのデータを持ってはいけない
セッションは一元的なデータベース (SQL、 NoSQL)などのデータストアにストアされるか キャッシュ (Redis、 Memcached)に残す必要がある キャッシュやデータベースなどの下流サーバーは上流サーバーがスケールアウトするにつれてより多くの同時接続を保たなければならない 考慮すべき点
リソースが不足していたり、設定が適切でない場合、システム全体のボトルネックになる可能性がある
単一障害点を除こうとしてロードバランサーを導入した結果、複雑さが増してしまうことがある
ロードバランサーが一つだけだとそこが単一障害点になる
一方で、ロードバランサーを複数にすると、さらに複雑さが増す