TOP書籍連動> スケールアウトの条件
まるごと PostgreSQL!
商用データベースに匹敵するWebシステム構築手法

第4回:アクセス分散とスケールアウトの条件

著者:大垣靖男(OHGAKI, Yasuo)   2005/4/27
前のページ  1  2
スケールアウトの条件

   スケールアウトが可能なWebシステムの条件とは、簡単にWebサーバーを追加できるだけではありません。スケールアウトを行うには、システムと各ページの特徴を分析し把握することが重要です。

   まずは最も単純な例から始めます。Webページすべてが静的なページかつすべてのユーザーが同じページを参照する場合(図13)は、単純にWebサーバーを増設することでWebシステムのパフォーマンスをリニアに向上させることが可能です。

Webページすべてが静的なページ
図13:Webページすべてが静的なページ


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

すべてのユーザーが同じ動的なページを参照
図14:すべてのユーザーが同じ動的なページを参照


   動的にページを生成している場合、生成されたページデータをWebサーバーのファイルシステムやキャッシュサーバーなどにキャッシュし、データベースサーバーへのアクセスを減らすことができます。適切にキャッシュを利用することにより、データベースの性能がボトルネックとなることなく性能が向上できます。

   ショッピングサイトなどのWebシステムの構成は、HTTPセッションを利用するため、前述した基本的な2例より複雑です(図15)。

より複雑な構成
図15:より複雑な構成


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

HTTPセッションと負荷分散
図16:HTTPセッションと負荷分散


   Webサーバーへのアクセスが分散できても、ショッピングカートから商品がなくなってしまうようなシステムでは使いものになりません。そこでHTTPセッションを利用するシステムでは、同じセッションIDを持つクライアントからのリクエストは同じサーバーにアクセスするよう、HTTPセッションの「永続性」を維持するしくみが必要になります。

   商用のロードバランサは、セッションIDが同じ場合、同じWebサーバーにアクセスできるしくみをもっており、プログラマが意識することなく、HTTPセッションの永続性を維持できます。「HTTPセッションの永続性を維持」と聞くと難しく感じるかも知れませんが、HTTPセッションの永続性維持は簡単に実装できます。

   次回はHTTPセッションの永続性維持を実装する方法について解説します。

前のページ  1  2


大垣 靖男
著者プロフィール
大垣靖男(OHGAKI, Yasuo)
University of Denver卒。同校にてコンピュータサイエンスとビジネスを学ぶ。株式会社シーエーシーを経て、エレクトロニック・サービス・イニシアチブ有限会社を設立。Linuxはバージョン0.9xの黎明期から利用してるが、オープンソースシステム開発やコミュニティへの参加はエレクトロニック・サービス・イニシアチブ設立後から。PHPプロジェクトのPostgreSQLモジュールのメンテナ、日本PostgreSQLユーザ会の四国地域での活動等を担当している。


INDEX
第4回:商用データベースに匹敵するWebシステム構築手法(4)
  基本的なWebシステムの高性能化手法
スケールアウトの条件