説明

フロントエンドサーバ、インタプリタ型プログラム及び方法

【課題】サーバ障害時やメンテナンス時にユーザへの影響を軽減可能なフロントエンドサーバ、インタプリタ型プログラム及び方法を提供すること。
【解決手段】ユーザ端末(8)からの要求に基づいて複数のバックエンドサーバ(3)に処理を実行させて、その結果を前記ユーザ端末に提供するフロントエンドサーバ(2)であって、バックエンドサーバ(3)に実行させる処理のうち、所定の例外処理条件に応じて指定された所定の処理を記述するインタプリタ型プログラム(23)の該当部分の文字列を、例外処理を記述する文字列に書き換えるプログラム書換手段(233)、を備え、文字列判定により、バックエンドサーバ(3)に実行させる処理が書き換えた所定の処理であるか否かを判定し、当該書き換えた所定の処理である場合に、バックエンドサーバ(3)にアクセスすることなく文字列により記述された例外処理を実行する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、Webサーバシステムに含まれるバックエンドサーバの稼働状況に応じてユーザ端末からのリクエスト要求に対する応答を制御するフロントエンドサーバ、インタプリタ型プログラム及び方法に関する。
【背景技術】
【0002】
Webサービスの多様化及び利用ユーザの増加に伴い、一定の規模を有するWebサービスを事業として行う事業者は、複数のサーバを連携させて構築した所定のWebサーバシステムを用いてサービスを提供している。このようなWebサーバシステムでは、個々のサーバに何らかの障害が発生する場合がある。このようなサーバ障害を検知する試みは、近年、多数なされており、例えば特許文献1のような、通信障害が生じているか否か検知する技術が知られている。
また、Webサーバシステムでは、サーバ障害を避けたり、所定のプログラムの変更を反映させたりするために、必要に応じて適宜メンテナンスを行う必要がある。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2002−94507号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
ところで、サーバ障害時やメンテナンス時には、一定のサービスを停止しなければならず、ユーザは、その間当該サービスを受けることができなかった。そのため、サーバ障害時やメンテナンス時にユーザへの影響を軽減することのできるWebサーバシステムの構築が求められている。
【0005】
本発明は、このような要求に応じてなされたものであり、サーバ障害時やメンテナンス時にユーザへの影響を軽減可能なフロントエンドサーバ、インタプリタ型プログラム及び方法を提供することを目的とする。
【課題を解決するための手段】
【0006】
(1) ユーザ端末からの要求を受け付ける要求受付手段と、当該要求に基づいて複数のバックエンドサーバに処理を実行させて、その結果を前記ユーザ端末に提供するインタプリタ型プログラムを実行するプログラム実行手段とを備えるフロントエンドサーバであって、前記要求に基づいて前記バックエンドサーバに実行させる処理のうち、所定の例外処理条件に応じて指定された所定の処理を記述する前記インタプリタ型プログラムの該当部分の文字列を、例外処理を記述する文字列に書き換えるプログラム書換手段と、を備え、前記プログラム実行手段は、文字列判定により、前記要求に基づいてバックエンドサーバに実行させる処理が前記プログラム書換手段が書き換えた所定の処理であるか否かを判定し、当該書き換えた所定の処理である場合に、当該処理を実行する当該バックエンドサーバにアクセスすることなく前記プログラム書換手段が書き換えた文字列により記述された例外処理を実行して、当該例外処理の結果を前記ユーザ端末に通知するフロントエンドサーバ。
【0007】
(1)記載のフロントエンドサーバによれば、バックエンドサーバに実行させる処理のうち、例外処理条件に応じて指定された所定の処理は、例外処理に書き換えられる。そして、ユーザ端末から受け付けた要求に基づきバックエンドサーバに実行させる処理がプログラム書換手段により書き換えられた所定の処理であると判定されると、バックエンドサーバにアクセスすることなく、当該例外処理の結果を通知する。
これにより、サーバ障害時やメンテナンス時にユーザへの影響を軽減することができる。例えば、ブログの更新及び閲覧を管理するバックエンドサーバにおいて、ブログの更新のみが実行困難(例外処理条件)である場合には、ブログの更新に関する処理を所定の処理として記述しておくことで、ユーザ端末からブログの更新要求がなされた場合に限り、例外処理を行い、ブログの閲覧要求がなされた場合には、適切な処理を行うことができる。
【0008】
このとき、(1)記載のフロントエンドサーバでは、文字列判定で例外処理を実行するか否かを判定するため、Webサーバシステムの管理者は、例外処理を行うべき所定の処理を容易に判別することができる。
【0009】
(2) 管理者端末と通信可能に接続され、前記所定の例外処理条件は、前記管理者端末を用いた管理者からの要求に基づいて設定される、(1)に記載のフロントエンドサーバ。
【0010】
(2)記載のフロントエンドサーバによれば、Webサーバシステムの管理者は、例外処理条件(書換対象処理名・バックエンドサーバ名)を適切に管理することができる。
【0011】
(3) 前記バックエンドサーバのネットワークの到達性を監視する監視サーバと通信可能に接続され、前記所定の例外処理条件は、前記監視サーバからの要求に基づいて設定される、(1)又は(2)に記載のフロントエンドサーバ。
【0012】
(3)記載のフロントエンドサーバによれば、例外処理条件(書換対象処理名・バックエンドサーバ名)を、監視サーバからの要求に基づいて設定、すなわち、例外処理条件を自動的に設定するため、例外処理条件を適切に管理することができる。
【0013】
(4) ユーザ端末からの要求に基づいて複数のバックエンドサーバに処理を実行させて、その結果を前記ユーザ端末に提供するフロントエンドサーバに、前記要求に基づいて前記バックエンドサーバに実行させる処理のうち、所定の例外処理条件に応じて指定された所定の処理を記述する該当部分の文字列を、例外処理を記述する文字列に書き換えるプログラム書換ステップと、文字列判定により、前記要求に基づいてバックエンドサーバに実行させる処理が前記プログラム書換ステップで書き換えた例外処理であるか否かを判定し、例外処理である場合に、前記要求に基づく処理を実行する前記バックエンドサーバにアクセスすることなく前記プログラム書換ステップで書き換えた文字列により記述された例外処理を実行して、当該例外処理の結果を前記ユーザ端末に通知する処理実行ステップと、を実行させるインタプリタ型プログラム。
【0014】
(5) ユーザ端末からの要求に基づいて複数のバックエンドサーバに処理を実行させて、その結果を前記ユーザ端末に提供するインタプリタ型プログラムを実行するフロントエンドサーバの実行する方法であって、前記要求に基づいて前記バックエンドサーバに実行させる処理のうち、所定の例外処理条件に応じて指定された所定の処理を記述する該当部分の文字列を、例外処理を記述する文字列に書き換えるプログラム書換ステップと、文字列判定により、前記要求に基づいてバックエンドサーバに実行させる処理が前記プログラム書換ステップで書き換えた例外処理であるか否かを判定し、例外処理である場合に、前記要求に基づく処理を実行する前記バックエンドサーバにアクセスすることなく前記プログラム書換ステップで書き換えた文字列により記述された例外処理を実行して、当該例外処理の結果を前記ユーザ端末に通知する処理実行ステップと、を含む方法。
【0015】
(4)記載のインタプリタ型プログラム又は(5)記載の方法によれば、(1)記載のフロントエンドサーバと同様の効果を奏する。
【発明の効果】
【0016】
本発明によれば、サーバ障害時やメンテナンス時にユーザへの影響を軽減することができる。
【図面の簡単な説明】
【0017】
【図1】本発明のフロントエンドサーバを含むWebサーバシステムを示す図である。
【図2】Webサーバシステムの機能構成を示すブロック図である。
【図3】例外処理プログラムの一例を示す図である。
【図4】Webサーバシステムの処理の流れを示すフローチャートである。
【図5】Webサーバシステムの動作を示す図である。
【図6】Webサーバシステムの動作を示す図である。
【発明を実施するための形態】
【0018】
以下、本発明の実施形態について図面を参照して説明する。
【0019】
[Webサーバシステム1]
初めに、図1〜図3を参照して、本実施形態のWebサーバシステム1について説明する。図1は、Webサーバシステム1の概要を示す図であり、図2は、Webサーバシステム1の機能ブロック図を示す図であり、図3は、本発明の例外処理プログラム23の一例を示す図である。
【0020】
Webサーバシステム1は、所定のネットワークにより互いに通信可能に接続された、フロントエンドサーバ2と、バックエンドサーバ3A・・・3Z(以下、区別しない場合は「バックエンドサーバ3」とする)と、監視サーバ4と、管理者端末5と、を含んで構成される。
【0021】
フロントエンドサーバ2は、ユーザ端末8とインターネット回線により接続され、ユーザ端末8からリクエスト要求を受け付ける。フロントエンドサーバ2は、リクエスト要求を受け付けると、リクエスト要求に応じた処理をバックエンドサーバに実行させ、その処理結果をユーザ端末8に対して返信する。すなわち、フロントエンドサーバ2は、リクエスト要求に基づいて、Webページを構成するデータをバックエンドサーバ3から取得し、ユーザ端末8に対して返信する。
なお、リクエスト要求には、ユーザ端末8(ユーザ)のWebサーバシステム1に対する指示(例えば、更新指示や閲覧指示など)と、ユーザ端末8(ユーザ)を識別する情報と、が含まれる。具体的には、リクエスト要求には、Webサーバシステム1に対する指示としての関数と、ユーザ端末8を識別する情報としてのIPアドレスと、が含まれる。
【0022】
バックエンドサーバ3は、Webサーバシステム1が管理するWebサービス内の各種データを管理するDB(データベース)サーバであり、フロントエンドサーバ2からの要求に応じた所定の処理を行い、フロントエンドサーバ2に対して当該処理の結果(例えば、閲覧要求のWebページ)を返信する。
【0023】
監視サーバ4は、複数のバックエンドサーバ3の各々について、ネットワークの到達性を監視する。また、監視サーバ4は、複数のバックエンドサーバ3の各々が管理する各種データが最新のものであるか否かを監視、すなわち、バックエンドサーバ3のデータベースがグローバルデータベースと一致するか否かを監視する。
【0024】
管理者端末5は、Webサーバシステム1の管理者により用いられる端末装置であり、障害発生時などに管理者からの操作を受け付けると、所定のメンテナンスを行う。
【0025】
ここで、本実施形態のWebサーバシステム1では、ユーザ端末8から受け付けたリクエスト要求に対応するバックエンドサーバ3に障害が発生している場合には、フロントエンドサーバ2は、当該バックエンドサーバ3にアクセスすることなく、ユーザ端末8に対して、現在メンテナンス中であることを示すメンテナンス画面などを提供する(例外処理)。
【0026】
このとき、本実施形態では、障害が発生しているか否かを、監視サーバ4による自動的な通知、及び管理者端末5による手動の通知により行うこととし、当該通知を受けたフロントエンドサーバ2が、後述の例外処理プログラム23に従い、ユーザ端末8から受け付けたリクエスト要求と当該通知との文字列判定を行うことで、例外処理を行うこととしている。
以下、図2及び図3を用いて、例外処理の実行の詳細について説明する。
【0027】
[フロントエンドサーバ2の構成]
図2を参照して、フロントエンドサーバ2は、要求受付手段21と、プログラム実行手段22と、例外処理プログラム23と、を含んで構成される。
【0028】
要求受付手段21は、ユーザ端末8からリクエスト要求を受け付けるとともに、受け付けたリクエスト要求に基づいて、バックエンドサーバ3に対する処理(すなわち、バックエンドサーバ3が実行する処理)、及び複数のバックエンドサーバ3のうち当該処理を実行するバックエンドサーバ3(以下、「実行バックエンドサーバ」とする)の種別を受け付ける。
要求受付手段21は、リクエスト要求に含まれる関数(指示)から、バックエンドサーバ3に対する処理を受け付け、リクエスト要求に含まれるIPアドレス(ユーザ端末8を識別する情報)から、実行バックエンドサーバの種別を受け付ける。ここで、図示は省略するが、Webサーバシステム1は、リクエスト要求に含まれるIPアドレス(ユーザ端末8を識別する情報)から、処理を割り振るバックエンドサーバ3を特定する割振サーバを含むこととしてもよく、要求受付手段21は、この割振サーバにより特定されたバックエンドサーバ3に基づいて、実行バックエンドサーバの種別を受け付けることとしてもよい。
【0029】
プログラム実行手段22は、例外処理プログラム23に従い、ユーザ端末8からのリクエスト要求に基づいて、複数のバックエンドサーバに処理を実行させて、その結果をユーザ端末8に提供する。
【0030】
<例外処理プログラム23>
例外処理プログラム23は、インタプリタ型のプログラム(例えば、PHP)であり、実行されることで、フロントエンドサーバ2に要求処理判定手段231、サーバ判定手段232、プログラム書換手段233及び処理実行手段234の機能を実現させるとともに、書換対象処理記述部235と、障害サーバ記述部236と、例外処理記述部237と、を含む。
【0031】
要求処理判定手段231は、要求受付手段21が受け付けたバックエンドサーバ3に対する処理が、予め定められた書換対象の処理であるか否かを判定する。ここで、書換対象処理記述部235は、予め定められた書換対象の処理を記述する。そのため、要求処理判定手段231は、書換対象処理記述部235の記述に基づいて、要求受付手段21が受け付けたバックエンドサーバ3に対する処理が書換対象の処理であるか否かを判定する。
このとき、本実施形態では、書換対象処理記述部235は、予め定められた書換対象の処理(関数名)を文字列で記述し、要求処理判定手段231は、要求受付手段21が受け付けた処理(関数)が、書換対象の関数名を記述した当該文字列と一致するか否かを文字列判定する。なお、本実施形態における、文字列とは、人間が判別することのできるものをいい、人間が判別不可能なバイナリコードを含まない。
【0032】
サーバ判定手段232は、要求受付手段21が受け付けた実行バックエンドサーバが、少なくとも一部の処理の実行が困難として予め定められたバックエンドサーバ3であるか否かを判定する。ここで、障害サーバ記述部236は、少なくとも一部の処理の実行が困難として予め定められたバックエンドサーバ3(以下、「障害バックエンドサーバ」とする)の種別を記述する。そのため、サーバ判定手段232は、障害サーバ記述部236の記述に基づいて、要求受付手段21が受け付けた実行バックエンドサーバが、障害バックエンドサーバであるか否かを判定する。
このとき、本実施形態では、障害サーバ記述部236は、障害バックエンドサーバ(サーバ名)を文字列で記述し、サーバ判定手段232は、要求受付手段21が受け付けた実行バックエンドサーバ(サーバ名)が、障害バックエンドサーバを記述した当該文字列と一致するか否かを文字列判定する。
【0033】
プログラム書換手段233は、要求受付手段21が受け付けた処理が要求処理判定手段231により書換対象の処理であると判定され、かつ、要求受付手段21が受け付けた実行バックエンドサーバが障害バックエンドサーバであると判定されることを条件に、要求受付手段21が受け付けた処理を予め定められた例外処理に書き換える。すなわち、プログラム書換手段233は、バックエンドサーバに実行させる処理のうち、書換対象処理記述部235に記述された書換対象処理を記述する文字列を、例外処理を記述する文字列に書き換える。
このとき書き換えられる例外処理は、フロントエンドサーバ2が実行バックエンドサーバにアクセスすることなく行う処理であり、例えば、現在メンテナンス中であることを示すメンテナンス画面をユーザ端末8に対して提供する処理である。ここで、例外処理記述部237は、プログラム書換手段233が書き換える例外処理(関数)を記述する。そのため、プログラム書換手段233は、例外処理記述部237の記述に基づいて、要求受付手段21が受け付けた処理を例外処理に書き換える。
このとき、本実施形態では、例外処理記述部237は、例外処理(関数名)を文字列で記述し、プログラム書換手段233は、要求受付手段21が受け付けた処理(関数名)を、例外処理を記述した当該文字列に書き換える。
【0034】
処理実行手段234は、要求受付手段21が受け付けた処理又はプログラム書換手段233により書き換えられた例外処理、のいずれかを実行し、当該処理の結果をユーザ端末8に対して提供する。
要求受付手段21が受け付けた処理を実行する場合、処理実行手段234は、実行バックエンドサーバにアクセスし、ユーザ端末8から受け付けた処理要求を提供するとともに、当該実行バックエンドサーバによる処理結果をユーザ端末8に対して提供する。
また、例外処理を実行する場合、処理実行手段234は、実行バックエンドサーバにアクセスすることなく、受け付けた処理要求の実行ができないことをユーザ端末8に提供する。
【0035】
ここで、例外処理プログラム23の一例について、図3に示す。
要求処理判定手段231は、ライン98,99に記述された「メソッドチェック」において、要求受付手段21が受け付けた処理が、ライン249〜313(特に、ライン252〜304)(書換対象処理記述部235)に記述された処理(例えば、ArticleLogic_WriteArticle)に含まれるか否かを判定することにより実現される。
なお、図3では、書換対象処理記述部235には、書換対象の処理として更新に関する処理(UpdateMethod)が記述されているが、当該記述を変更することで、他の処理(例えば、閲覧や予約受付)を書換対象とすることができる。
【0036】
また、サーバ判定手段232は、ライン100,101に記述された「サーバチェック」において、要求受付手段21が受け付けた実行バックエンドサーバが、ライン101に記述された障害バックエンドサーバ(arg_array[]:[]には、図示しない障害サーバ記述部236に記述したサーバ名が戻り値として取得される)に含まれるか否かを判定することにより実現される。
なお、図3では、障害サーバ記述部236には、障害バックエンドサーバは記述されていない(arg_array[0])が、図示しない障害サーバ記述部236の記述を変更することで、障害バックエンドサーバを適宜追加・削除することができる。
【0037】
また、プログラム書換手段233は、ライン103〜105に記述された「メンテナンスコマンドに書き換え」において、要求受付手段21が受け付けた処理を、ライン105(例外処理記述部237)に記述された例外処理(MaintenanceCommand)に書き換えることにより実現される。
なお、図3では、例外処理記述部237には、例外処理としてメンテナンス時に行われるメンテナンスコマンドが記述されているが、当該記述を変更することで、例外処理を適宜変更することができる(例えば、混雑中であることを返信する処理に変更する)。また、図3では、プログラム書換手段233は、障害バックエンドサーバに対する書換対象の処理である場合に、常に、例外処理に書き換えることとしているが、これに限られるものではなく、障害バックエンドサーバに対する書換対象の処理のうち一部の処理についてのみ、例外処理に書き換えることとしてもよい。アクセス集中により通信負荷が増大した障害バックエンドサーバに対しては、全てのアクセスを禁止するのではなく、一部のアクセスを制限することが好ましいためである。このような、一部のアクセスの制限についても、例外処理記述部237の記述を変更することで、実現することができる。
【0038】
ここで、図3では、書換対象処理記述部235、障害サーバ記述部236及び例外処理記述部237の全てを例外処理プログラム23に記述することとしているが、これに限られるものではなく、当該記述部のうち少なくとも1つはディスク装置に記憶しておくこととしてもよい。この場合において、ディスク装置については、フロントエンドサーバ2がアクセス可能であればよく、必ずしもフロントエンドサーバ2自身が有する必要はない。
【0039】
[監視サーバ4]
続いて、監視サーバ4について説明する。監視サーバ4は、監視手段41と、書換手段42と、を含んで構成される。
【0040】
監視手段41は、複数のバックエンドサーバ3の各々に対して定期的にアクセスし、ネットワークの到達性や、各々の管理する各種データが最新のものであるか否かを監視する。
【0041】
書換手段42は、監視手段41による監視の結果に基づいて、書換対象処理記述部235の記述(書換対象処理)及び障害サーバ記述部236の記述(障害バックエンドサーバ)を書き換える(自動書換)。すなわち、書換手段42は、監視手段41による監視の結果、異常が生じているとされたバックエンドサーバ3の実行する処理を書換対象処理として記述するとともに、当該バックエンドサーバ3を障害バックエンドサーバとして記述する。
このとき、書換手段42は、例外処理記述部237の記述(例外処理)についても書き換えることとしてもよい。すなわち、書換手段42は、監視手段41が発見した異常に基づいて例外処理を書き換えることとしてもよい。また、書換手段42は、例えば、ネットワークの到達性が困難になっているバックエンドサーバ3について、一部のリクエスト要求についてのみ例外処理(例えば、「只今、混み合っています。」と表示する処理)を実行し、他のリクエスト要求についてはユーザ端末8から受け付けた処理を実行させるように例外処理記述部237の記述を書き換えることとしてもよい。
【0042】
[管理者端末5]
続いて、管理者端末5は、管理者が把握可能なメンテナンス情報、管理者による人間系の監視に伴い発見したバックエンドサーバ3の異常又はユーザからの通報などに基づいて、書換対象処理記述部235の記述(書換対象処理)、障害サーバ記述部236の記述(障害バックエンドサーバ)及び例外処理記述部237の記述(例外処理)を書き換える(手動書換)。
【0043】
このように、本実施形態のフロントエンドサーバ2は、監視サーバ4による自動書換、又は管理者端末5による手動書換に基づいて、例外処理を実行する。
【0044】
[ハードウェア構成]
以上説明したWebサーバシステム1を構成する、フロントエンドサーバ2、バックエンドサーバ3、監視サーバ4及び管理者端末5のハードウェアは、1又は複数の一般的なコンピュータによって構成することができる。一般的なコンピュータは、例えば、制御部として、中央処理装置(CPU)を備える他、記憶部として、メモリ(RAM、ROM)、ハードディスク(HDD)及び光ディスク(CD、DVDなど)を、ネットワーク通信装置として、各種有線及び無線LAN装置を、表示装置として、例えば、液晶ディスプレイ、プラズマディスプレイなどの各種ディスプレイを、入力装置として、例えば、キーボード及びポインティング・デバイス(マウス、トラッキングボールなど)を適宜備え、これらは、バスラインにより接続されている。このような一般的なコンピュータにおいて、CPUは、フロントエンドサーバ2、バックエンドサーバ3、監視サーバ4及び管理者端末5を統括的に制御し、各種プログラムを適宜読み出して実行することにより、上述したハードウェアと協働し、本発明に係る各種機能を実現している。
【0045】
[Webサーバシステム1の処理]
続いて、図4を参照して、Webサーバシステム1の処理の流れについて説明する。
【0046】
<例外処理実行>
ユーザ端末8からリクエスト要求がなされると(S1)、フロントエンドサーバ2の要求受付手段21は、受け付けたリクエスト要求に基づいて、バックエンドサーバ3に対する処理、及び実行バックエンドサーバの種別を受け付ける(S11)。
【0047】
続いて、フロントエンドサーバ2の要求処理判定手段231は、受け付けた処理が書換対象処理記述部235に記述された書換対象の処理であるか否かを文字列判定するとともに(S12)、フロントエンドサーバ2のサーバ判定手段232は、受け付けた実行バックエンドサーバの種別が障害サーバ記述部236に記述された障害バックエンドサーバであるか否かを文字列判定する。
【0048】
このとき、書換対象処理記述部235に記述された書換対象の処理であり、かつ、障害サーバ記述部236に記述された障害バックエンドサーバである場合には(S14でYES)、フロントエンドサーバ2のプログラム書換手段233は、受け付けた処理を例外処理記述部237に記述された例外処理に書き換える(S15)。続いて、フロントエンドサーバ2の処理実行手段234は、実行バックエンドサーバにアクセスすることなく例外処理を実行し(S16)、当該例外処理の実行結果をユーザ端末8に対して返信し、処理を終了する。
【0049】
他方、書換対象処理記述部235に記述された書換対象の処理、又は障害サーバ記述部236に記述された障害バックエンドサーバでない場合には(S14でNO)、フロントエンドサーバ2の処理実行手段234は、ユーザ端末8から受け付けた処理の実行をバックエンドサーバ3に対して要求する(S17)。このとき、当該要求を受け付けたバックエンドサーバ3は(S21)、当該要求に対応する所定の処理を実行し(S22)、その処理結果をフロントエンドサーバ2に対して提供する。そして、処理結果を受け付けたフロントエンドサーバ2は、ユーザ端末8に対して当該処理結果を返信し、処理を終了する。
【0050】
ここで、Webサーバシステム1では、S12の処理判定及びS13のサーバ判定に用いる書換対象処理記述部235及び障害サーバ記述部236の記述と、S15の処理書換に用いる例外処理記述部237の記述と、を適宜書き換えることとしている。
【0051】
<自動書換>
すなわち、監視サーバ4の監視手段41は、複数のバックエンドサーバ3の各々に対して定期的にアクセスし、ネットワークの到達性や、各々が管理する各種データが最新のものであるか否かを監視する(S31)。このとき、障害(異常)を検知した場合には(S32でYES)、監視サーバ4の書換手段42は、書換対象処理記述部235、障害サーバ記述部236及び例外処理記述部237の記述を自動的に書き換える(S33)。一方、障害(異常)を検知しない場合には(S32でNO)、処理を終了する。
【0052】
<手動書換>
また、管理者端末5の管理者は、適宜Webサーバシステム1内の障害監視を行い(S41)、障害(異常)を発見した場合には(S42でYES)、書換対象処理記述部235、障害サーバ記述部236及び例外処理記述部237の記述を手動で書き換える(S43)。一方、障害(異常)を発見しない場合には(S42でNO)、処理を終了する。
【0053】
[Webサーバシステム1の動作]
続いて、本実施形態のWebサーバシステム1における例外処理実行時の動作について、図5及び図6の例示を参照して説明する。
【0054】
図5(1)を参照して、ユーザA及びユーザBからブログの更新についてのリクエスト要求を受け付けている。ここで、ユーザAのブログ更新処理は、バックエンドサーバ3Aに対する処理であり、ユーザBのブログ更新処理は、バックエンドサーバ3Bに対する処理であるとする。
【0055】
このとき、図5(2)を参照して、例外処理プログラム23の書換対象処理記述部235には更新に関する処理が記述され、障害サーバ記述部236にはバックエンドサーバ3Aが記述され、例外処理記述部237には例外処理としてメンテナンス中であることを通知する処理が記述されている。
【0056】
そのため、図5(3)に示すように、ユーザAに対しては、メンテナンス中であることが通知され、ユーザBに対しては、リクエスト要求に応じたブログ更新結果が通知されている。
【0057】
続いて、図6(1)を参照して、ユーザA及びユーザCからチケット予約についてのリクエスト要求を受け付け、ユーザBから予約確認についてのリクエスト要求を受け付けている。ここで、ユーザAのチケット予約処理は、バックエンドサーバ3Lに対する処理であり、ユーザBの予約確認処理は、バックエンドサーバ3Mに対する処理であり、ユーザCのチケット予約処理は、バックエンドサーバ3Lに対する処理であるとする。
【0058】
このとき、図5(2)を参照して、例外処理プログラム23の書換対象処理記述部235にはチケット予約に関する処理が記述され、障害サーバ記述部236にはバックエンドサーバ3Lが記述され、例外処理記述部237には例外処理として50%のアクセスを制限する処理が記述されている。ここで、ユーザA及びユーザCのリクエスト要求は、例外処理条件を充足しているが、図5(2)では、ユーザAのリクエスト要求に対してはアクセス制限がかけられ、ユーザCのリクエスト要求に対してはアクセス制限がかけられていない。
【0059】
そのため、図5(3)に示すように、ユーザAに対しては、混み合っておりチケット予約をできないことが通知され、ユーザBに対しては、リクエスト要求に応じた予約確認情報が通知され、ユーザCに対しては、リクエスト要求に応じたチケット予約の完了が通知されている。
【0060】
このように、本実施形態によれば、例外処理条件(書換対象処理、かつ、障害バックエンドサーバ)を充足したリクエスト要求に限り、バックエンドサーバ3にアクセスすることなく例外処理を実行するため、サーバ障害時やメンテナンス時にユーザへの影響を軽減することができる。
【0061】
このとき、例外処理条件を、監視サーバ4による自動書換又は管理者端末5による手動書換により書き換え可能としているため、バックエンドサーバ3の障害に応じて適切に例外処理を実行することができる。
【0062】
また、例外処理条件を充足したリクエスト要求の全てではなく、所定の割合のリクエスト要求に対してのみ例外処理を実行することを可能にしているため、バックエンドサーバ3の通信状況に応じて適切に例外処理を実行することができる。
【0063】
以上、本発明の実施形態について説明したが、本発明は上述した実施形態に限るものではない。また、本発明の実施形態に記載された効果は、本発明から生じる最も好適な効果を列挙したに過ぎず、本発明による効果は、本発明の実施例に記載されたものに限定されるものではない。
【0064】
例えば、本実施形態では、書換対象の処理であるか否かを文字列判定した後に、障害サーバであるか否かを文字列判定することとしているが、これに限られるものではなく、障害サーバであるか否かを文字列判定した後に、書換対象の処理であるか否かを文字列判定することとしてもよい。
【0065】
また、本実施形態では、フロントエンドサーバ2が例外処理プログラム23を記憶することとしているが、これに限られるものではなく、フロントエンドサーバ2が例外処理プログラム23に基づく例外処理条件の判定結果及び当該判定により実行すべき例外処理、を把握可能であればよく、例外処理プログラム23をフロントエンドサーバ2以外に記憶することとしてもよい。
【符号の説明】
【0066】
1 Webサーバシステム
2 フロントエンドサーバ
21 要求受付手段
22 プログラム実行手段
23 例外処理プログラム
231 要求処理判定手段
232 サーバ判定手段
233 プログラム書換手段
234 処理実行手段
235 書換対象処理記述部
236 障害サーバ記述部
237 例外処理記述部
3 バックエンドサーバ
4 監視サーバ
41 監視手段
42 書換手段
5 管理者端末
8 ユーザ端末

【特許請求の範囲】
【請求項1】
ユーザ端末からの要求を受け付ける要求受付手段と、当該要求に基づいて複数のバックエンドサーバに処理を実行させて、その結果を前記ユーザ端末に提供するインタプリタ型プログラムを実行するプログラム実行手段とを備えるフロントエンドサーバであって、
前記要求に基づいて前記バックエンドサーバに実行させる処理のうち、所定の例外処理条件に応じて指定された所定の処理を記述する前記インタプリタ型プログラムの該当部分の文字列を、例外処理を記述する文字列に書き換えるプログラム書換手段、を備え、
前記プログラム実行手段は、文字列判定により、前記要求に基づいてバックエンドサーバに実行させる処理が前記プログラム書換手段が書き換えた所定の処理であるか否かを判定し、当該書き換えた所定の処理である場合に、当該処理を実行する当該バックエンドサーバにアクセスすることなく前記プログラム書換手段が書き換えた文字列により記述された例外処理を実行して、当該例外処理の結果を前記ユーザ端末に通知する、
フロントエンドサーバ。
【請求項2】
管理者端末と通信可能に接続され、
前記所定の例外処理条件は、前記管理者端末を用いた管理者からの要求に基づいて設定される、請求項1に記載のフロントエンドサーバ。
【請求項3】
前記バックエンドサーバのネットワークの到達性を監視する監視サーバと通信可能に接続され、
前記所定の例外処理条件は、前記監視サーバからの要求に基づいて設定される、請求項1又は2に記載のフロントエンドサーバ。
【請求項4】
ユーザ端末からの要求に基づいて複数のバックエンドサーバに処理を実行させて、その結果を前記ユーザ端末に提供するフロントエンドサーバに、
前記要求に基づいて前記バックエンドサーバに実行させる処理のうち、所定の例外処理条件に応じて指定された所定の処理を記述する該当部分の文字列を、例外処理を記述する文字列に書き換えるプログラム書換ステップと、
文字列判定により、前記要求に基づいてバックエンドサーバに実行させる処理が前記プログラム書換ステップで書き換えた例外処理であるか否かを判定し、例外処理である場合に、前記要求に基づく処理を実行する前記バックエンドサーバにアクセスすることなく前記プログラム書換ステップで書き換えた文字列により記述された例外処理を実行して、当該例外処理の結果を前記ユーザ端末に通知する処理実行ステップと、
を実行させるインタプリタ型プログラム。
【請求項5】
ユーザ端末からの要求に基づいて複数のバックエンドサーバに処理を実行させて、その結果を前記ユーザ端末に提供するインタプリタ型プログラムを実行するフロントエンドサーバの実行する方法であって、
前記要求に基づいて前記バックエンドサーバに実行させる処理のうち、所定の例外処理条件に応じて指定された所定の処理を記述する該当部分の文字列を、例外処理を記述する文字列に書き換えるプログラム書換ステップと、
文字列判定により、前記要求に基づいてバックエンドサーバに実行させる処理が前記プログラム書換ステップで書き換えた例外処理であるか否かを判定し、例外処理である場合に、前記要求に基づく処理を実行する前記バックエンドサーバにアクセスすることなく前記プログラム書換ステップで書き換えた文字列により記述された例外処理を実行して、当該例外処理の結果を前記ユーザ端末に通知する処理実行ステップと、
を含む方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate


【公開番号】特開2013−8330(P2013−8330A)
【公開日】平成25年1月10日(2013.1.10)
【国際特許分類】
【出願番号】特願2011−142300(P2011−142300)
【出願日】平成23年6月27日(2011.6.27)
【出願人】(500257300)ヤフー株式会社 (1,128)
【Fターム(参考)】