(57)【特許請求の範囲】
【請求項１】
ユーザ端末からの要求を受け付ける要求受付手段と、当該要求に基づいて複数のバックエンドサーバに処理を実行させて、その結果を前記ユーザ端末に提供するインタプリタ型プログラムを実行するプログラム実行手段とを備えるフロントエンドサーバであって、
前記要求に基づいて前記バックエンドサーバに実行させる処理のうち、所定の例外処理条件に応じて指定された所定の処理を記述する前記インタプリタ型プログラムの該当部分の文字列を、例外処理を記述する文字列に書き換えるプログラム書換手段、を備え、
前記プログラム実行手段は、文字列判定により、前記要求に基づいてバックエンドサーバに実行させる処理が前記プログラム書換手段が書き換えた所定の処理であるか否かを判定し、当該書き換えた所定の処理である場合に、当該処理を実行する当該バックエンドサーバにアクセスすることなく前記プログラム書換手段が書き換えた文字列により記述された例外処理を実行して、当該例外処理の結果を前記ユーザ端末に通知する、
フロントエンドサーバ。
【請求項２】
管理者端末と通信可能に接続され、
前記所定の例外処理条件は、前記管理者端末を用いた管理者からの要求に基づいて設定される、請求項１に記載のフロントエンドサーバ。
【請求項３】
前記バックエンドサーバのネットワークの到達性を監視する監視サーバと通信可能に接続され、
前記所定の例外処理条件は、前記監視サーバからの要求に基づいて設定される、請求項１又は２に記載のフロントエンドサーバ。
【請求項４】
ユーザ端末からの要求に基づいて複数のバックエンドサーバに処理を実行させて、その結果を前記ユーザ端末に提供するフロントエンドサーバに、
前記要求に基づいて前記バックエンドサーバに実行させる処理のうち、所定の例外処理条件に応じて指定された所定の処理を記述する該当部分の文字列を、例外処理を記述する文字列に書き換えるプログラム書換ステップと、
文字列判定により、前記要求に基づいてバックエンドサーバに実行させる処理が前記プログラム書換ステップで書き換えた例外処理であるか否かを判定し、例外処理である場合に、前記要求に基づく処理を実行する前記バックエンドサーバにアクセスすることなく前記プログラム書換ステップで書き換えた文字列により記述された例外処理を実行して、当該例外処理の結果を前記ユーザ端末に通知する処理実行ステップと、
を実行させるインタプリタ型プログラム。
【請求項５】
ユーザ端末からの要求に基づいて複数のバックエンドサーバに処理を実行させて、その結果を前記ユーザ端末に提供するインタプリタ型プログラムを実行するフロントエンドサーバの実行する方法であって、
前記要求に基づいて前記バックエンドサーバに実行させる処理のうち、所定の例外処理条件に応じて指定された所定の処理を記述する該当部分の文字列を、例外処理を記述する文字列に書き換えるプログラム書換ステップと、
文字列判定により、前記要求に基づいてバックエンドサーバに実行させる処理が前記プログラム書換ステップで書き換えた例外処理であるか否かを判定し、例外処理である場合に、前記要求に基づく処理を実行する前記バックエンドサーバにアクセスすることなく前記プログラム書換ステップで書き換えた文字列により記述された例外処理を実行して、当該例外処理の結果を前記ユーザ端末に通知する処理実行ステップと、
を含む方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、Ｗｅｂサーバシステムに含まれるバックエンドサーバの稼働状況に応じてユーザ端末からのリクエスト要求に対する応答を制御するフロントエンドサーバ、インタプリタ型プログラム及び方法に関する。
【背景技術】
【０００２】
Ｗｅｂサービスの多様化及び利用ユーザの増加に伴い、一定の規模を有するＷｅｂサービスを事業として行う事業者は、複数のサーバを連携させて構築した所定のＷｅｂサーバシステムを用いてサービスを提供している。このようなＷｅｂサーバシステムでは、個々のサーバに何らかの障害が発生する場合がある。このようなサーバ障害を検知する試みは、近年、多数なされており、例えば特許文献１のような、通信障害が生じているか否か検知する技術が知られている。
また、Ｗｅｂサーバシステムでは、サーバ障害を避けたり、所定のプログラムの変更を反映させたりするために、必要に応じて適宜メンテナンスを行う必要がある。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００２−９４５０７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ところで、サーバ障害時やメンテナンス時には、一定のサービスを停止しなければならず、ユーザは、その間当該サービスを受けることができなかった。そのため、サーバ障害時やメンテナンス時にユーザへの影響を軽減することのできるＷｅｂサーバシステムの構築が求められている。
【０００５】
本発明は、このような要求に応じてなされたものであり、サーバ障害時やメンテナンス時にユーザへの影響を軽減可能なフロントエンドサーバ、インタプリタ型プログラム及び方法を提供することを目的とする。
【課題を解決するための手段】
【０００６】
（１）  ユーザ端末からの要求を受け付ける要求受付手段と、当該要求に基づいて複数のバックエンドサーバに処理を実行させて、その結果を前記ユーザ端末に提供するインタプリタ型プログラムを実行するプログラム実行手段とを備えるフロントエンドサーバであって、前記要求に基づいて前記バックエンドサーバに実行させる処理のうち、所定の例外処理条件に応じて指定された所定の処理を記述する前記インタプリタ型プログラムの該当部分の文字列を、例外処理を記述する文字列に書き換えるプログラム書換手段と、を備え、前記プログラム実行手段は、文字列判定により、前記要求に基づいてバックエンドサーバに実行させる処理が前記プログラム書換手段が書き換えた所定の処理であるか否かを判定し、当該書き換えた所定の処理である場合に、当該処理を実行する当該バックエンドサーバにアクセスすることなく前記プログラム書換手段が書き換えた文字列により記述された例外処理を実行して、当該例外処理の結果を前記ユーザ端末に通知するフロントエンドサーバ。
【０００７】
（１）記載のフロントエンドサーバによれば、バックエンドサーバに実行させる処理のうち、例外処理条件に応じて指定された所定の処理は、例外処理に書き換えられる。そして、ユーザ端末から受け付けた要求に基づきバックエンドサーバに実行させる処理がプログラム書換手段により書き換えられた所定の処理であると判定されると、バックエンドサーバにアクセスすることなく、当該例外処理の結果を通知する。
これにより、サーバ障害時やメンテナンス時にユーザへの影響を軽減することができる。例えば、ブログの更新及び閲覧を管理するバックエンドサーバにおいて、ブログの更新のみが実行困難（例外処理条件）である場合には、ブログの更新に関する処理を所定の処理として記述しておくことで、ユーザ端末からブログの更新要求がなされた場合に限り、例外処理を行い、ブログの閲覧要求がなされた場合には、適切な処理を行うことができる。
【０００８】
このとき、（１）記載のフロントエンドサーバでは、文字列判定で例外処理を実行するか否かを判定するため、Ｗｅｂサーバシステムの管理者は、例外処理を行うべき所定の処理を容易に判別することができる。
【０００９】
（２）  管理者端末と通信可能に接続され、前記所定の例外処理条件は、前記管理者端末を用いた管理者からの要求に基づいて設定される、（１）に記載のフロントエンドサーバ。
【００１０】
（２）記載のフロントエンドサーバによれば、Ｗｅｂサーバシステムの管理者は、例外処理条件（書換対象処理名・バックエンドサーバ名）を適切に管理することができる。
【００１１】
（３）  前記バックエンドサーバのネットワークの到達性を監視する監視サーバと通信可能に接続され、前記所定の例外処理条件は、前記監視サーバからの要求に基づいて設定される、（１）又は（２）に記載のフロントエンドサーバ。
【００１２】
（３）記載のフロントエンドサーバによれば、例外処理条件（書換対象処理名・バックエンドサーバ名）を、監視サーバからの要求に基づいて設定、すなわち、例外処理条件を自動的に設定するため、例外処理条件を適切に管理することができる。
【００１３】
（４）  ユーザ端末からの要求に基づいて複数のバックエンドサーバに処理を実行させて、その結果を前記ユーザ端末に提供するフロントエンドサーバに、前記要求に基づいて前記バックエンドサーバに実行させる処理のうち、所定の例外処理条件に応じて指定された所定の処理を記述する該当部分の文字列を、例外処理を記述する文字列に書き換えるプログラム書換ステップと、文字列判定により、前記要求に基づいてバックエンドサーバに実行させる処理が前記プログラム書換ステップで書き換えた例外処理であるか否かを判定し、例外処理である場合に、前記要求に基づく処理を実行する前記バックエンドサーバにアクセスすることなく前記プログラム書換ステップで書き換えた文字列により記述された例外処理を実行して、当該例外処理の結果を前記ユーザ端末に通知する処理実行ステップと、を実行させるインタプリタ型プログラム。
【００１４】
（５）  ユーザ端末からの要求に基づいて複数のバックエンドサーバに処理を実行させて、その結果を前記ユーザ端末に提供するインタプリタ型プログラムを実行するフロントエンドサーバの実行する方法であって、前記要求に基づいて前記バックエンドサーバに実行させる処理のうち、所定の例外処理条件に応じて指定された所定の処理を記述する該当部分の文字列を、例外処理を記述する文字列に書き換えるプログラム書換ステップと、文字列判定により、前記要求に基づいてバックエンドサーバに実行させる処理が前記プログラム書換ステップで書き換えた例外処理であるか否かを判定し、例外処理である場合に、前記要求に基づく処理を実行する前記バックエンドサーバにアクセスすることなく前記プログラム書換ステップで書き換えた文字列により記述された例外処理を実行して、当該例外処理の結果を前記ユーザ端末に通知する処理実行ステップと、を含む方法。
【００１５】
（４）記載のインタプリタ型プログラム又は（５）記載の方法によれば、（１）記載のフロントエンドサーバと同様の効果を奏する。
【発明の効果】
【００１６】
本発明によれば、サーバ障害時やメンテナンス時にユーザへの影響を軽減することができる。
【図面の簡単な説明】
【００１７】
【図１】本発明のフロントエンドサーバを含むＷｅｂサーバシステムを示す図である。
【図２】Ｗｅｂサーバシステムの機能構成を示すブロック図である。
【図３】例外処理プログラムの一例を示す図である。
【図４】Ｗｅｂサーバシステムの処理の流れを示すフローチャートである。
【図５】Ｗｅｂサーバシステムの動作を示す図である。
【図６】Ｗｅｂサーバシステムの動作を示す図である。
【発明を実施するための形態】
【００１８】
以下、本発明の実施形態について図面を参照して説明する。
【００１９】
［Ｗｅｂサーバシステム１］
初めに、図１〜図３を参照して、本実施形態のＷｅｂサーバシステム１について説明する。図１は、Ｗｅｂサーバシステム１の概要を示す図であり、図２は、Ｗｅｂサーバシステム１の機能ブロック図を示す図であり、図３は、本発明の例外処理プログラム２３の一例を示す図である。
【００２０】
Ｗｅｂサーバシステム１は、所定のネットワークにより互いに通信可能に接続された、フロントエンドサーバ２と、バックエンドサーバ３Ａ・・・３Ｚ（以下、区別しない場合は「バックエンドサーバ３」とする）と、監視サーバ４と、管理者端末５と、を含んで構成される。
【００２１】
フロントエンドサーバ２は、ユーザ端末８とインターネット回線により接続され、ユーザ端末８からリクエスト要求を受け付ける。フロントエンドサーバ２は、リクエスト要求を受け付けると、リクエスト要求に応じた処理をバックエンドサーバに実行させ、その処理結果をユーザ端末８に対して返信する。すなわち、フロントエンドサーバ２は、リクエスト要求に基づいて、Ｗｅｂページを構成するデータをバックエンドサーバ３から取得し、ユーザ端末８に対して返信する。
なお、リクエスト要求には、ユーザ端末８（ユーザ）のＷｅｂサーバシステム１に対する指示（例えば、更新指示や閲覧指示など）と、ユーザ端末８（ユーザ）を識別する情報と、が含まれる。具体的には、リクエスト要求には、Ｗｅｂサーバシステム１に対する指示としての関数と、ユーザ端末８を識別する情報としてのＩＰアドレスと、が含まれる。
【００２２】
バックエンドサーバ３は、Ｗｅｂサーバシステム１が管理するＷｅｂサービス内の各種データを管理するＤＢ（データベース）サーバであり、フロントエンドサーバ２からの要求に応じた所定の処理を行い、フロントエンドサーバ２に対して当該処理の結果（例えば、閲覧要求のＷｅｂページ）を返信する。
【００２３】
監視サーバ４は、複数のバックエンドサーバ３の各々について、ネットワークの到達性を監視する。また、監視サーバ４は、複数のバックエンドサーバ３の各々が管理する各種データが最新のものであるか否かを監視、すなわち、バックエンドサーバ３のデータベースがグローバルデータベースと一致するか否かを監視する。
【００２４】
管理者端末５は、Ｗｅｂサーバシステム１の管理者により用いられる端末装置であり、障害発生時などに管理者からの操作を受け付けると、所定のメンテナンスを行う。
【００２５】
ここで、本実施形態のＷｅｂサーバシステム１では、ユーザ端末８から受け付けたリクエスト要求に対応するバックエンドサーバ３に障害が発生している場合には、フロントエンドサーバ２は、当該バックエンドサーバ３にアクセスすることなく、ユーザ端末８に対して、現在メンテナンス中であることを示すメンテナンス画面などを提供する（例外処理）。
【００２６】
このとき、本実施形態では、障害が発生しているか否かを、監視サーバ４による自動的な通知、及び管理者端末５による手動の通知により行うこととし、当該通知を受けたフロントエンドサーバ２が、後述の例外処理プログラム２３に従い、ユーザ端末８から受け付けたリクエスト要求と当該通知との文字列判定を行うことで、例外処理を行うこととしている。
以下、図２及び図３を用いて、例外処理の実行の詳細について説明する。
【００２７】
［フロントエンドサーバ２の構成］
図２を参照して、フロントエンドサーバ２は、要求受付手段２１と、プログラム実行手段２２と、例外処理プログラム２３と、を含んで構成される。
【００２８】
要求受付手段２１は、ユーザ端末８からリクエスト要求を受け付けるとともに、受け付けたリクエスト要求に基づいて、バックエンドサーバ３に対する処理（すなわち、バックエンドサーバ３が実行する処理）、及び複数のバックエンドサーバ３のうち当該処理を実行するバックエンドサーバ３（以下、「実行バックエンドサーバ」とする）の種別を受け付ける。
要求受付手段２１は、リクエスト要求に含まれる関数（指示）から、バックエンドサーバ３に対する処理を受け付け、リクエスト要求に含まれるＩＰアドレス（ユーザ端末８を識別する情報）から、実行バックエンドサーバの種別を受け付ける。ここで、図示は省略するが、Ｗｅｂサーバシステム１は、リクエスト要求に含まれるＩＰアドレス（ユーザ端末８を識別する情報）から、処理を割り振るバックエンドサーバ３を特定する割振サーバを含むこととしてもよく、要求受付手段２１は、この割振サーバにより特定されたバックエンドサーバ３に基づいて、実行バックエンドサーバの種別を受け付けることとしてもよい。
【００２９】
プログラム実行手段２２は、例外処理プログラム２３に従い、ユーザ端末８からのリクエスト要求に基づいて、複数のバックエンドサーバに処理を実行させて、その結果をユーザ端末８に提供する。
【００３０】
＜例外処理プログラム２３＞
例外処理プログラム２３は、インタプリタ型のプログラム（例えば、ＰＨＰ）であり、実行されることで、フロントエンドサーバ２に要求処理判定手段２３１、サーバ判定手段２３２、プログラム書換手段２３３及び処理実行手段２３４の機能を実現させるとともに、書換対象処理記述部２３５と、障害サーバ記述部２３６と、例外処理記述部２３７と、を含む。
【００３１】
要求処理判定手段２３１は、要求受付手段２１が受け付けたバックエンドサーバ３に対する処理が、予め定められた書換対象の処理であるか否かを判定する。ここで、書換対象処理記述部２３５は、予め定められた書換対象の処理を記述する。そのため、要求処理判定手段２３１は、書換対象処理記述部２３５の記述に基づいて、要求受付手段２１が受け付けたバックエンドサーバ３に対する処理が書換対象の処理であるか否かを判定する。
このとき、本実施形態では、書換対象処理記述部２３５は、予め定められた書換対象の処理（関数名）を文字列で記述し、要求処理判定手段２３１は、要求受付手段２１が受け付けた処理（関数）が、書換対象の関数名を記述した当該文字列と一致するか否かを文字列判定する。なお、本実施形態における、文字列とは、人間が判別することのできるものをいい、人間が判別不可能なバイナリコードを含まない。
【００３２】
サーバ判定手段２３２は、要求受付手段２１が受け付けた実行バックエンドサーバが、少なくとも一部の処理の実行が困難として予め定められたバックエンドサーバ３であるか否かを判定する。ここで、障害サーバ記述部２３６は、少なくとも一部の処理の実行が困難として予め定められたバックエンドサーバ３（以下、「障害バックエンドサーバ」とする）の種別を記述する。そのため、サーバ判定手段２３２は、障害サーバ記述部２３６の記述に基づいて、要求受付手段２１が受け付けた実行バックエンドサーバが、障害バックエンドサーバであるか否かを判定する。
このとき、本実施形態では、障害サーバ記述部２３６は、障害バックエンドサーバ（サーバ名）を文字列で記述し、サーバ判定手段２３２は、要求受付手段２１が受け付けた実行バックエンドサーバ（サーバ名）が、障害バックエンドサーバを記述した当該文字列と一致するか否かを文字列判定する。
【００３３】
プログラム書換手段２３３は、要求受付手段２１が受け付けた処理が要求処理判定手段２３１により書換対象の処理であると判定され、かつ、要求受付手段２１が受け付けた実行バックエンドサーバが障害バックエンドサーバであると判定されることを条件に、要求受付手段２１が受け付けた処理を予め定められた例外処理に書き換える。すなわち、プログラム書換手段２３３は、バックエンドサーバに実行させる処理のうち、書換対象処理記述部２３５に記述された書換対象処理を記述する文字列を、例外処理を記述する文字列に書き換える。
このとき書き換えられる例外処理は、フロントエンドサーバ２が実行バックエンドサーバにアクセスすることなく行う処理であり、例えば、現在メンテナンス中であることを示すメンテナンス画面をユーザ端末８に対して提供する処理である。ここで、例外処理記述部２３７は、プログラム書換手段２３３が書き換える例外処理（関数）を記述する。そのため、プログラム書換手段２３３は、例外処理記述部２３７の記述に基づいて、要求受付手段２１が受け付けた処理を例外処理に書き換える。
このとき、本実施形態では、例外処理記述部２３７は、例外処理（関数名）を文字列で記述し、プログラム書換手段２３３は、要求受付手段２１が受け付けた処理（関数名）を、例外処理を記述した当該文字列に書き換える。
【００３４】
処理実行手段２３４は、要求受付手段２１が受け付けた処理又はプログラム書換手段２３３により書き換えられた例外処理、のいずれかを実行し、当該処理の結果をユーザ端末８に対して提供する。
要求受付手段２１が受け付けた処理を実行する場合、処理実行手段２３４は、実行バックエンドサーバにアクセスし、ユーザ端末８から受け付けた処理要求を提供するとともに、当該実行バックエンドサーバによる処理結果をユーザ端末８に対して提供する。
また、例外処理を実行する場合、処理実行手段２３４は、実行バックエンドサーバにアクセスすることなく、受け付けた処理要求の実行ができないことをユーザ端末８に提供する。
【００３５】
ここで、例外処理プログラム２３の一例について、図３に示す。
要求処理判定手段２３１は、ライン９８，９９に記述された「メソッドチェック」において、要求受付手段２１が受け付けた処理が、ライン２４９〜３１３（特に、ライン２５２〜３０４）（書換対象処理記述部２３５）に記述された処理（例えば、ＡｒｔｉｃｌｅＬｏｇｉｃ＿ＷｒｉｔｅＡｒｔｉｃｌｅ）に含まれるか否かを判定することにより実現される。
なお、図３では、書換対象処理記述部２３５には、書換対象の処理として更新に関する処理（ＵｐｄａｔｅＭｅｔｈｏｄ）が記述されているが、当該記述を変更することで、他の処理（例えば、閲覧や予約受付）を書換対象とすることができる。
【００３６】
また、サーバ判定手段２３２は、ライン１００，１０１に記述された「サーバチェック」において、要求受付手段２１が受け付けた実行バックエンドサーバが、ライン１０１に記述された障害バックエンドサーバ（ａｒｇ＿ａｒｒａｙ［］：［］には、図示しない障害サーバ記述部２３６に記述したサーバ名が戻り値として取得される）に含まれるか否かを判定することにより実現される。
なお、図３では、障害サーバ記述部２３６には、障害バックエンドサーバは記述されていない（ａｒｇ＿ａｒｒａｙ［０］）が、図示しない障害サーバ記述部２３６の記述を変更することで、障害バックエンドサーバを適宜追加・削除することができる。
【００３７】
また、プログラム書換手段２３３は、ライン１０３〜１０５に記述された「メンテナンスコマンドに書き換え」において、要求受付手段２１が受け付けた処理を、ライン１０５（例外処理記述部２３７）に記述された例外処理（ＭａｉｎｔｅｎａｎｃｅＣｏｍｍａｎｄ）に書き換えることにより実現される。
なお、図３では、例外処理記述部２３７には、例外処理としてメンテナンス時に行われるメンテナンスコマンドが記述されているが、当該記述を変更することで、例外処理を適宜変更することができる（例えば、混雑中であることを返信する処理に変更する）。また、図３では、プログラム書換手段２３３は、障害バックエンドサーバに対する書換対象の処理である場合に、常に、例外処理に書き換えることとしているが、これに限られるものではなく、障害バックエンドサーバに対する書換対象の処理のうち一部の処理についてのみ、例外処理に書き換えることとしてもよい。アクセス集中により通信負荷が増大した障害バックエンドサーバに対しては、全てのアクセスを禁止するのではなく、一部のアクセスを制限することが好ましいためである。このような、一部のアクセスの制限についても、例外処理記述部２３７の記述を変更することで、実現することができる。
【００３８】
ここで、図３では、書換対象処理記述部２３５、障害サーバ記述部２３６及び例外処理記述部２３７の全てを例外処理プログラム２３に記述することとしているが、これに限られるものではなく、当該記述部のうち少なくとも１つはディスク装置に記憶しておくこととしてもよい。この場合において、ディスク装置については、フロントエンドサーバ２がアクセス可能であればよく、必ずしもフロントエンドサーバ２自身が有する必要はない。
【００３９】
［監視サーバ４］
続いて、監視サーバ４について説明する。監視サーバ４は、監視手段４１と、書換手段４２と、を含んで構成される。
【００４０】
監視手段４１は、複数のバックエンドサーバ３の各々に対して定期的にアクセスし、ネットワークの到達性や、各々の管理する各種データが最新のものであるか否かを監視する。
【００４１】
書換手段４２は、監視手段４１による監視の結果に基づいて、書換対象処理記述部２３５の記述（書換対象処理）及び障害サーバ記述部２３６の記述（障害バックエンドサーバ）を書き換える（自動書換）。すなわち、書換手段４２は、監視手段４１による監視の結果、異常が生じているとされたバックエンドサーバ３の実行する処理を書換対象処理として記述するとともに、当該バックエンドサーバ３を障害バックエンドサーバとして記述する。
このとき、書換手段４２は、例外処理記述部２３７の記述（例外処理）についても書き換えることとしてもよい。すなわち、書換手段４２は、監視手段４１が発見した異常に基づいて例外処理を書き換えることとしてもよい。また、書換手段４２は、例えば、ネットワークの到達性が困難になっているバックエンドサーバ３について、一部のリクエスト要求についてのみ例外処理（例えば、「只今、混み合っています。」と表示する処理）を実行し、他のリクエスト要求についてはユーザ端末８から受け付けた処理を実行させるように例外処理記述部２３７の記述を書き換えることとしてもよい。
【００４２】
［管理者端末５］
続いて、管理者端末５は、管理者が把握可能なメンテナンス情報、管理者による人間系の監視に伴い発見したバックエンドサーバ３の異常又はユーザからの通報などに基づいて、書換対象処理記述部２３５の記述（書換対象処理）、障害サーバ記述部２３６の記述（障害バックエンドサーバ）及び例外処理記述部２３７の記述（例外処理）を書き換える（手動書換）。
【００４３】
このように、本実施形態のフロントエンドサーバ２は、監視サーバ４による自動書換、又は管理者端末５による手動書換に基づいて、例外処理を実行する。
【００４４】
［ハードウェア構成］
以上説明したＷｅｂサーバシステム１を構成する、フロントエンドサーバ２、バックエンドサーバ３、監視サーバ４及び管理者端末５のハードウェアは、１又は複数の一般的なコンピュータによって構成することができる。一般的なコンピュータは、例えば、制御部として、中央処理装置（ＣＰＵ）を備える他、記憶部として、メモリ（ＲＡＭ、ＲＯＭ）、ハードディスク（ＨＤＤ）及び光ディスク（ＣＤ、ＤＶＤなど）を、ネットワーク通信装置として、各種有線及び無線ＬＡＮ装置を、表示装置として、例えば、液晶ディスプレイ、プラズマディスプレイなどの各種ディスプレイを、入力装置として、例えば、キーボード及びポインティング・デバイス（マウス、トラッキングボールなど）を適宜備え、これらは、バスラインにより接続されている。このような一般的なコンピュータにおいて、ＣＰＵは、フロントエンドサーバ２、バックエンドサーバ３、監視サーバ４及び管理者端末５を統括的に制御し、各種プログラムを適宜読み出して実行することにより、上述したハードウェアと協働し、本発明に係る各種機能を実現している。
【００４５】
［Ｗｅｂサーバシステム１の処理］
続いて、図４を参照して、Ｗｅｂサーバシステム１の処理の流れについて説明する。
【００４６】
＜例外処理実行＞
ユーザ端末８からリクエスト要求がなされると（Ｓ１）、フロントエンドサーバ２の要求受付手段２１は、受け付けたリクエスト要求に基づいて、バックエンドサーバ３に対する処理、及び実行バックエンドサーバの種別を受け付ける（Ｓ１１）。
【００４７】
続いて、フロントエンドサーバ２の要求処理判定手段２３１は、受け付けた処理が書換対象処理記述部２３５に記述された書換対象の処理であるか否かを文字列判定するとともに（Ｓ１２）、フロントエンドサーバ２のサーバ判定手段２３２は、受け付けた実行バックエンドサーバの種別が障害サーバ記述部２３６に記述された障害バックエンドサーバであるか否かを文字列判定する。
【００４８】
このとき、書換対象処理記述部２３５に記述された書換対象の処理であり、かつ、障害サーバ記述部２３６に記述された障害バックエンドサーバである場合には（Ｓ１４でＹＥＳ）、フロントエンドサーバ２のプログラム書換手段２３３は、受け付けた処理を例外処理記述部２３７に記述された例外処理に書き換える（Ｓ１５）。続いて、フロントエンドサーバ２の処理実行手段２３４は、実行バックエンドサーバにアクセスすることなく例外処理を実行し（Ｓ１６）、当該例外処理の実行結果をユーザ端末８に対して返信し、処理を終了する。
【００４９】
他方、書換対象処理記述部２３５に記述された書換対象の処理、又は障害サーバ記述部２３６に記述された障害バックエンドサーバでない場合には（Ｓ１４でＮＯ）、フロントエンドサーバ２の処理実行手段２３４は、ユーザ端末８から受け付けた処理の実行をバックエンドサーバ３に対して要求する（Ｓ１７）。このとき、当該要求を受け付けたバックエンドサーバ３は（Ｓ２１）、当該要求に対応する所定の処理を実行し（Ｓ２２）、その処理結果をフロントエンドサーバ２に対して提供する。そして、処理結果を受け付けたフロントエンドサーバ２は、ユーザ端末８に対して当該処理結果を返信し、処理を終了する。
【００５０】
ここで、Ｗｅｂサーバシステム１では、Ｓ１２の処理判定及びＳ１３のサーバ判定に用いる書換対象処理記述部２３５及び障害サーバ記述部２３６の記述と、Ｓ１５の処理書換に用いる例外処理記述部２３７の記述と、を適宜書き換えることとしている。
【００５１】
＜自動書換＞
すなわち、監視サーバ４の監視手段４１は、複数のバックエンドサーバ３の各々に対して定期的にアクセスし、ネットワークの到達性や、各々が管理する各種データが最新のものであるか否かを監視する（Ｓ３１）。このとき、障害（異常）を検知した場合には（Ｓ３２でＹＥＳ）、監視サーバ４の書換手段４２は、書換対象処理記述部２３５、障害サーバ記述部２３６及び例外処理記述部２３７の記述を自動的に書き換える（Ｓ３３）。一方、障害（異常）を検知しない場合には（Ｓ３２でＮＯ）、処理を終了する。
【００５２】
＜手動書換＞
また、管理者端末５の管理者は、適宜Ｗｅｂサーバシステム１内の障害監視を行い（Ｓ４１）、障害（異常）を発見した場合には（Ｓ４２でＹＥＳ）、書換対象処理記述部２３５、障害サーバ記述部２３６及び例外処理記述部２３７の記述を手動で書き換える（Ｓ４３）。一方、障害（異常）を発見しない場合には（Ｓ４２でＮＯ）、処理を終了する。
【００５３】
［Ｗｅｂサーバシステム１の動作］
続いて、本実施形態のＷｅｂサーバシステム１における例外処理実行時の動作について、図５及び図６の例示を参照して説明する。
【００５４】
図５（１）を参照して、ユーザＡ及びユーザＢからブログの更新についてのリクエスト要求を受け付けている。ここで、ユーザＡのブログ更新処理は、バックエンドサーバ３Ａに対する処理であり、ユーザＢのブログ更新処理は、バックエンドサーバ３Ｂに対する処理であるとする。
【００５５】
このとき、図５（２）を参照して、例外処理プログラム２３の書換対象処理記述部２３５には更新に関する処理が記述され、障害サーバ記述部２３６にはバックエンドサーバ３Ａが記述され、例外処理記述部２３７には例外処理としてメンテナンス中であることを通知する処理が記述されている。
【００５６】
そのため、図５（３）に示すように、ユーザＡに対しては、メンテナンス中であることが通知され、ユーザＢに対しては、リクエスト要求に応じたブログ更新結果が通知されている。
【００５７】
続いて、図６（１）を参照して、ユーザＡ及びユーザＣからチケット予約についてのリクエスト要求を受け付け、ユーザＢから予約確認についてのリクエスト要求を受け付けている。ここで、ユーザＡのチケット予約処理は、バックエンドサーバ３Ｌに対する処理であり、ユーザＢの予約確認処理は、バックエンドサーバ３Ｍに対する処理であり、ユーザＣのチケット予約処理は、バックエンドサーバ３Ｌに対する処理であるとする。
【００５８】
このとき、図５（２）を参照して、例外処理プログラム２３の書換対象処理記述部２３５にはチケット予約に関する処理が記述され、障害サーバ記述部２３６にはバックエンドサーバ３Ｌが記述され、例外処理記述部２３７には例外処理として５０％のアクセスを制限する処理が記述されている。ここで、ユーザＡ及びユーザＣのリクエスト要求は、例外処理条件を充足しているが、図５（２）では、ユーザＡのリクエスト要求に対してはアクセス制限がかけられ、ユーザＣのリクエスト要求に対してはアクセス制限がかけられていない。
【００５９】
そのため、図５（３）に示すように、ユーザＡに対しては、混み合っておりチケット予約をできないことが通知され、ユーザＢに対しては、リクエスト要求に応じた予約確認情報が通知され、ユーザＣに対しては、リクエスト要求に応じたチケット予約の完了が通知されている。
【００６０】
このように、本実施形態によれば、例外処理条件（書換対象処理、かつ、障害バックエンドサーバ）を充足したリクエスト要求に限り、バックエンドサーバ３にアクセスすることなく例外処理を実行するため、サーバ障害時やメンテナンス時にユーザへの影響を軽減することができる。
【００６１】
このとき、例外処理条件を、監視サーバ４による自動書換又は管理者端末５による手動書換により書き換え可能としているため、バックエンドサーバ３の障害に応じて適切に例外処理を実行することができる。
【００６２】
また、例外処理条件を充足したリクエスト要求の全てではなく、所定の割合のリクエスト要求に対してのみ例外処理を実行することを可能にしているため、バックエンドサーバ３の通信状況に応じて適切に例外処理を実行することができる。
【００６３】
以上、本発明の実施形態について説明したが、本発明は上述した実施形態に限るものではない。また、本発明の実施形態に記載された効果は、本発明から生じる最も好適な効果を列挙したに過ぎず、本発明による効果は、本発明の実施例に記載されたものに限定されるものではない。
【００６４】
例えば、本実施形態では、書換対象の処理であるか否かを文字列判定した後に、障害サーバであるか否かを文字列判定することとしているが、これに限られるものではなく、障害サーバであるか否かを文字列判定した後に、書換対象の処理であるか否かを文字列判定することとしてもよい。
【００６５】
また、本実施形態では、フロントエンドサーバ２が例外処理プログラム２３を記憶することとしているが、これに限られるものではなく、フロントエンドサーバ２が例外処理プログラム２３に基づく例外処理条件の判定結果及び当該判定により実行すべき例外処理、を把握可能であればよく、例外処理プログラム２３をフロントエンドサーバ２以外に記憶することとしてもよい。
【符号の説明】
【００６６】
１    Ｗｅｂサーバシステム
２    フロントエンドサーバ
２１  要求受付手段
２２  プログラム実行手段
２３  例外処理プログラム
２３１  要求処理判定手段
２３２  サーバ判定手段
２３３  プログラム書換手段
２３４  処理実行手段
２３５  書換対象処理記述部
２３６  障害サーバ記述部
２３７  例外処理記述部
３    バックエンドサーバ
４    監視サーバ
４１  監視手段
４２  書換手段
５    管理者端末
８    ユーザ端末
【図１】
0005384566.tif 000002
【図２】
0005384566.tif 000003
【図３】
0005384566.tif 000004
【図４】
0005384566.tif 000005
【図５】
0005384566.tif 000006
【図６】
0005384566.tif 000007