スケールアウトの条件
スケールアウトの条件
スケールアウトが可能なWebシステムの条件とは、簡単にWebサーバーを追加できるだけではありません。スケールアウトを行うには、システムと各ページの特徴を分析し把握することが重要です。
まずは最も単純な例から始めます。Webページすべてが静的なページかつすべてのユーザーが同じページを参照する場合(図13)は、単純にWebサーバーを増設することでWebシステムのパフォーマンスをリニアに向上させることが可能です。

図13:Webページすべてが静的なページ
Webページが、データベースに保存された情報から動的に生成され、すべてのユーザーが同じページを参照する場合、単純にWebサーバーを増やして しまうと、データベースサーバーへのアクセスがボトルネックとなり性能が向上しない場合があります。ページ生成の際に、毎回データベースに問い合わせてい る場合などは、Webサーバーからデータベースサーバーへのアクセスが飽和し、データベースサーバーの処理能力リクエストは処理できません(図14)。

図14:すべてのユーザーが同じ動的なページを参照
動的にページを生成している場合、生成されたページデータをWebサーバーのファイルシステムやキャッシュサーバーなどにキャッシュし、データベー スサーバーへのアクセスを減らすことができます。適切にキャッシュを利用することにより、データベースの性能がボトルネックとなることなく性能が向上でき ます。
ショッピングサイトなどのWebシステムの構成は、HTTPセッションを利用するため、前述した基本的な2例より複雑です(図15)。

図15:より複雑な構成
HTTPセッション情報がWebサーバーのファイルシステムに保存されている場合、アクセスするWebサーバーが変わると勝手にログアウトしたり、カートに入れておいたはずの商品がなくなったりします(図16)。

図16:HTTPセッションと負荷分散
Webサーバーへのアクセスが分散できても、ショッピングカートから商品がなくなってしまうようなシステムでは使いものになりません。そこで HTTPセッションを利用するシステムでは、同じセッションIDを持つクライアントからのリクエストは同じサーバーにアクセスするよう、HTTPセッショ ンの「永続性」を維持するしくみが必要になります。
商用のロードバランサは、セッションIDが同じ場合、同じWebサーバーにアクセスできるしくみをもっており、プログラマが意識することなく、 HTTPセッションの永続性を維持できます。「HTTPセッションの永続性を維持」と聞くと難しく感じるかも知れませんが、HTTPセッションの永続性維 持は簡単に実装できます。
次回はHTTPセッションの永続性維持を実装する方法について解説します。