TOPシステム開発> トラブル事例




システムの運用と保守
システムの運用・保守を考えていますか?

第3回:システム利用環境を考慮していますか?

著者:みずほ情報総研  老川 正志   2007/9/19
1   2  3  次のページ
トラブル事例

   「第1回:Javaで重要なことは開発ではない?」では障害対応について、「第2回:障害発生を考えていますか?」では障害発生時にありがちな事例と対処法について説明しました。今回はクライアントPCなど、システム利用環境で発生しがちなトラブル事例についての対処法を解説します。

   実際にお客様のシステムで発生した障害において、次のような経験はないでしょうか。
  1. Webアプリケーションのシステムをリリースする直前、お客様から「Aという画面で、B操作とC操作をしたのに、ずっとB操作の内容が表示される」という連絡を受ける
  2. 連絡を受け、テスト環境で同じ操作を行っても正しく動作してしまう
  3. またログを調査すると、サーバ環境にはC操作のログが残っていなかった

表1:システム障害の例


原因はWebコンテンツのキャッシュ

   このトラブル事例の原因は「Webコンテンツのキャッシュ」です。Webコンテンツのキャッシュは表2のような効果があり、アクセスのたびに変更がないコンテンツに対しては、非常に有用な機能となります。

  • サーバやネットワークなど、システムの負荷削減
  • 素早い画面表示(応答時間の短縮)

表2:Webコンテンツのキャッシュによる効果

   しかし、Webアプリケーションのシステムのように、アクセスのたびにコンテンツが変わる場合は、逆に悪影響をおよぼします。特に、最近よくみられるAjaxを採用したシステムは、画面でマウス操作やキーボード操作をするたびにコンテンツが変わるため、Webコンテンツのキャッシュが悪影響をおよぼしてしまいます。


Webコンテンツのキャッシュが悪影響をおよぼす理由

   ここでは図1のような画面遷移をするシンプルなWebアプリケーション例に、悪影響をおよぼす理由について解説します。

Webアプリケーションの例
図1:Webアプリケーションの例

   「1.検索キーワード入力画面」にて、利用者は検索キーワードを入力し、検索ボタンを押します。システムは入力したキーワードをもとに商品を検索し、「2.商品検索結果表示画面」を表示します。

   このとき、「X」というキーワードで商品検索すると、「X」というキーワードの「2.商品検索結果表示画面」について、「http://www.sample.jp/resultのキャッシュ」として保存されます。次に「Y」というキーワードで商品検索すると、先ほど保存した「http://www.sample.jp/resultのキャッシュ」を使用し、商品検索結果画面を表示します。その結果、「Y」というキーワードの商品検索結果画面が表示されません。


キャッシュ機能を持つ機器

   では、キャッシュ機能はどこにあるのでしょうか。Webブラウザが動作するクライアントPCからコンテンツを提供するサーバまでのネットワークをたどることで、キャッシュ機能を持つ機器をあげてみましょう。

   社内ネットワークを利用する場合は図2のように、「クライアントPCにあるWebブラウザ」「プロキシサーバ」「Webサーバ」「アプリケーションサーバ」の4箇所でキャッシュが行われることが考えられます。

キャッシュ機能を持つ機器 - 1(社内ネットワーク利用の場合)
図2:キャッシュ機能を持つ機器 - 1(社内ネットワーク利用の場合)
(画像をクリックすると別ウィンドウに拡大図を表示します)

   また、社内ネットワークではなくインターネットを経由すると、さらに機器は増えます。突然のアクセス増加に備えて、キャッシュサーバを設置しているケースや、コンテンツデリバリネットワーク(CDN:Contents Delivery Network)のサービスを導入しているケースも考えられます。

キャッシュ機能を持つ機器 - 2(インターネット利用の場合)
図3:キャッシュ機能を持つ機器 - 2(インターネット利用の場合)
(画像をクリックすると別ウィンドウに拡大図を表示します)


キャッシュを制御する必要性

   このように、ネットワークには様々な箇所にキャッシュ機能を持つ機器があります。対策としてはキャッシュ機能の無効化をすることです。しかし、現実としてすべての機器に対して対応できないことがあるでしょう。

   また、画像ファイルやスタイルシートはアクセスのたびに変更することはほとんどありません。そのようなコンテンツはキャッシュ機能を使うべきでしょう。キャッシュ機能を無効化すべきなのは、アクセスのたびに変更するコンテンツであり、コンテンツによって適切にキャッシュを制御すべきです。

1   2  3  次のページ


みずほ情報総研株式会社 老川 正志
著者プロフィール
みずほ情報総研株式会社  老川 正志
技術企画部 システムエンジニア
2001年、株式会社富士総合研究所(現 みずほ情報総研株式会社)入社。システム開発部門への技術支援業務を経験後、データセンター ソリューション「TEXIV(テキシブ)」の立ち上げに参画、2002年から現職。現在は、ホスティングサービス事業の拡大のほか、システム開発効率向上の企画・調査を担当。


この記事の評価をお聞かせください
ボタンをクリックしますとウインドウが開きます。

INDEX
第3回:システム利用環境を考慮していますか?
トラブル事例
  キャッシュ機能の対応方法
  対応法2:METAタグによるキャッシュ制御
システムの運用・保守を考えていますか?
第1回 Javaで重要なことは開発ではない?
第2回 障害発生を考えていますか?
第3回 システム利用環境を考慮していますか?
第4回 Javaのシステム更改を考慮していますか?
関連記事
Javadocから考える開発ドキュメンテーション
Javaコーディング規約