(57)【要約】【課題】顧客環境のデータの入手も難しい場合やデータの変化が激しい場合に障害の現象を自社環境で再現させることが困難である。本発明は、一般的なWebシステムにおいて障害が発生した場合にある環境で発生した障害を記録し別の環境で再現する手段を提供する。【解決手段】データベース、画面、外部システムからの入出力情報を記録しておき、ファイルに生成する。データベースや外部システムが無い環境でもファイルから入出力情報を再現することで障害発生時のプログラムの実行状況を再現する。【選択図】図１
2011141775.tif 000002
【特許請求の範囲】
【請求項１】
システムは入出力情報を時系列にして記録しデータベースに格納する機能を有しており、記録システムから再生システムへデータベースの内容を移し変える機能を有しており、システムはデータベースから入出力情報を時系列に読み出し呼び元や呼び先を判別してソフトウェアソース上で現象を再現する機能を有しているデータフロー記録再生システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般的なWebシステムにおいて本番環境に障害が発生した場合に障害の現象を別環境で効率的に再現するための技術である。
【背景技術】
【０００２】
企業の基幹システムの本番環境で障害が発生した場合ではまず現象を再現することが必要となる。従来はＳＥが本番環境のダンプデータを顧客から提供してもらい社内に同一環境を作成することで調査をしていた。この方法は障害の現象を再現する上で大変高率的な手法であるが、個人情報保護法によりデータの持ち出し前に顧客の承認が必要になっており、迅速な対応という点で難しくなってきている。そのため最近ではデータの持ち出しはせず、顧客に発生条件などを調査した上で画面のスクリーンショットなど外部的なエビデンスを作成してもらいSE側にメールで送付するなどの作業をしてもらう手法を取ることが多い。SEは自社環境で現象を再現させようと試みるが、顧客に手間のかかる作業を強いた上にSE側が現象を再現させることができないことも多く、状況の緊急度によっては直接現地に出向いて調査することも必要となるなど効率性の面で課題も多い。
【０００３】
本番環境の障害発生を切り分ける技術としては以下のようなものがある。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００５−３１６７２８号公報
【特許文献２】特開２００３−２１６４５７号公報
【特許文献３】特開２００２−１０８６４９号公報
【特許文献４】特開２００７−８０２９２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
文献１では障害の発生を解析するという点で本システムと類似しているが、対象を構成機器リソースといった外部的な障害に限っておりソフトウェア内部的な障害を対象とする本システムとは異なる。文献２では障害時のエラーログを時系列に収集する点で本システムと類似しているが、本システムが現象を再現することを課題としているのに対し、重要度によって区分しレポートとして出力することを目的としており動作も異なる。文献３では必要かつログ情報を記録し不具合原因を特定に利用する点で本システムと類似するが、システム間でログ情報を転送し別システム上で再現させることまでには言及されていない。文献４では入出力情報を再現することによりデバッグシステム上で現象を再現させる点で本システムと類似しているが、対象はCPUやメモリなどハードウェアであり本システムがソフトウェア上で現象の再現を目標としている点で異なっている。
【０００６】
本システム既存のジャーナルログとも異なる。ジャーナルログの問題点としてはある特定ポイントでしか出力できない為プログラムの処理行数が多い場合やロジックが複雑な場合はデータの変化の詳細の追跡が困難になる。あらゆるポイントにジャーナルログの出力をいれるとソースコードの量が倍増し開発生産性、性能、ソースの可読性が悪化する。さらに設計段階で効果的にジャーナルログを設計するのは現実的に困難であり、ジャーナルログとソースのつき合わせも手間のかかる人力作業である。本システムはデバッグシステムと併用することで必要最低限のログからジャーナルログを作り出すことが出来るため上記の課題に伴う非効率性を解決し現象を正確に再現することができる。
【課題を解決するための手段】
【０００７】
上記課題を解決するための一手段を説明する。本発明のデータフロー記録再生システムは、大きくデータフロー記録機能とデータフロー再生機能に分けられる。
【０００８】
データフロー記録機能はＡＰサーバ上に配置される。ＡＰサーバはユーザ端末、ＤＢサーバ、外部システムと接続されている。ＡＰサーバ上では業務プログラムが動作しユーザ端末、ＤＢサーバ、外部システムと通信を行う。これら通信の入出力はプログラム上ではＷＥＢフレームワーク、ＤＢフレームワーク、外部システムフレームワークを介してデータが通信され、この入出力データを各フレームワークが記録する。入出力データのほかに付帯情報として登録者、登録日時、説明も記録することで記録した情報を判別しやすくしている。記録されたデータはファイルとしてエクスポートすることができ、デバッグシステムにインポートすることができる。
【０００９】
データフロー再生機能はデバッグシステム上に配置される。デバッグシステムにはほかにＡＰサーバと同一のプログラムソースが配備されデバッグ機能を備えている。デバッグシステムはデータインポート後はネットワークにつながっている必要は無く単体で動作させることができる。デバッグシステムはユーザ端末、ＤＢサーバ、外部システムと接続されていないため、ＷＥＢフレームワーク、ＤＢフレームワーク、外部システムフレームワークはデータフロー記録テーブルの読み込みプログラムに差し替えられる。読込みプログラムはデータフロー記録テーブルからデータを読み出し値を設定することで現象を再現することができる。このときデバッグ機能との併用することで、現象の内部動作をプログラムの実行ステップ単位で確認できる。入出力に差異があった場合にはエラーメッセージでユーザに差異内容が通知される。
【発明の効果】
【００１０】
一般的なWebシステムにおいて障害が発生した場合にある環境で発生した障害を記録し別の環境で再現することができる。
【図面の簡単な説明】
【００１１】
【図１】本システム１本システム１のネットワーク構成を示す図である。
【図２】本システム１におけるユーザ端末１１の構成を概要を示す図である。
【図３】本システム１におけるＡＰサーバ１２の構成を概要を示す図である。
【図４】本システム１におけるＤＢ１３サーバの構成を概要を示す図である。
【図５】本システム１における外部システム１４の構成を概要を示す図である。
【図６】本システム１におけるデバッグシステム１５の構成を概要を示す図である。
【図７】ＡＰサーバ１１の採番テーブル２０１３とデバッグシステム１５の採番テーブル５０１５の構成例を示す図である。
【図８】ＡＰサーバ１１の録画再生フラグテーブル２０１４とデバッグシステム１５の録画再生フラグテーブル５０１５の構成例を示す図である。
【図９】ＡＰサーバ１１のデータフロー記録テーブル２０１５とデバッグシステム１５のデータフロー記録テーブル５０１５の構成例を示す図である。
【図１０】ＡＰサーバ１１のデータフローヘッダテーブル２０１６とデバッグシステム１５のデータフローヘッダテーブル５０１８の構成例を示す図である。
【図１１】デバッグシステム１５のデータフロー差異記録テーブル５０１７の構成例を示す図である。
【図１２】本システム１に置ける録画開始処理の示す図である。
【図１３】本システム１に置ける録画メイン処理の示す図である。
【図１４】本システム１に置ける録画終了処理の示す図である。
【図１５】本システム１に置けるダウンロード処理の示す図である。
【図１６】本システム１に置けるアップロード処理の示す図である。
【図１７】本システム１に置ける再生開始処理の示す図である。
【図１８】本システム１に置ける再生メイン処理の示す図である。
【図１９】本システム１に置ける再生終了処理の示す図である。
【図２０】ユーザ端末１１において録画開始処理Ｓ１０１の実行を指示する操作画面例を示す図である。
【図２１】ユーザ端末１１において録画メイン処理処理Ｓ２０１の実行を開始する操作画面例を示す図である。
【図２２】ユーザ端末１１において録画終了処理Ｓ３０３の実行を指示する操作画面例を示す図である。
【図２３】ユーザ端末１１においてダウンロード処理Ｓ４０１の実行を指示する操作画面例を示す図である。
【図２４】デバッグシステム１５においてアップロード処理Ｓ５０１の実行と再生開始処理Ｓ６０１の実行を指示する操作画面例を示す図である。
【図２５】デバッグシステム１５において再生メイン処理Ｓ６０１の実行と再生終了処理Ｓ８０１の実行を指示する操作画面例を示す図である。
【図２６】デバッグシステム１５において再生メイン処理のＳ７１０のエラーメッセージ表示の画面例を示す図ある。
【発明を実施するための形態】
【００１２】
以下、本発明の一実施形態について、図面を参照して詳細に説明する。
（システム全体構成）
図１は本システムのネットワーク構成例を示す図である。本システム１はユーザ端末１１、APサーバ１２、DBサーバ１３、外部システム１４、デバッグシステム１５が社内ネットワーク１６とインターネット１７に接続されて構成される。本システム１はAPサーバ記録した入出力情報をユーザ端末でダウンロードした後にデバッグシステムに送付し、デバッグシステムでプログラムの動作を再現するシステムである。
【００１３】
図２はユーザ端末構１１の概要を示す図である。ユーザ端末１１は記憶部１０１にプログラムとしてWEBブラウザ１０１１を有する。またハードウェアとして、表示部（ディスプレイ）１０２、入力部（キーボード、マウス）１０３、制御部１０４、ネットワークインターフェース１０５を具備する。
【００１４】
図３はAPサーバ１２の概要を示す図である。APサーバ１２は記憶部２０１にプログラムとして業務プログラム２０１１、アプリケーションフレームワーク２０１２、テーブルとして採番テーブル２０１３、録画再生フラグテーブル２０１４、データフロー記録テーブル２０１５、データフローヘッダテーブル２０１６を有する。アプリケーションフレームワークは機能として、採番機能２０１２１、録画機能２０１２２、ダウンロード機能２０１２３を有する。またハードウェアとして、表示部（ディスプレイ）２０２、入力部（キーボード、マウス）２０３、制御部２０４、ネットワークインターフェース２０５を具備する。
【００１５】
図４はDBサーバ１３の概要を示す図である。DBサーバ１３はプログラムとしてデータベースシステム３０１１を有する。またハードウェアとして、表示部（ディスプレイ）３０２、入力部（キーボード、マウス）３０３、制御部３０４、ネットワークインターフェース３０５を具備する。
【００１６】
図５は外部システム１４の概要を示す図である。外部システム１４はプログラムとしてWEBサービス４０１１やLDAPなどネットワーク上にサービスを提供するプログラムを有する。またハードウェアとして、表示部（ディスプレイ）４０２、入力部（キーボード、マウス）４０３、制御部４０４、ネットワークインターフェース４０５を具備する。
【００１７】
図６はデバッグシステム１５の概要を示す図である。デバッグシステム１５は記憶部５０１にプログラムとして業務プログラム５０１１、アプリケーションフレームワーク５０１２、デバッガ５０１３、テーブルとして採番テーブル５０１４、録画再生フラグテーブル５０１５、データフロー記録テーブル５０１６、データ差異記録テーブル５０１７、データフローヘッダテーブル５０１８を有する。アプリケーションフレームワークは再生機能５０１２１、データ差異記録機能５０１２２、ダウンロード機能５０１２３、採番機能５０１２４を有する。またハードウェアとして、表示部（ディスプレイ）５０２、入力部（キーボード、マウス）５０３、制御部５０４、ネットワークインターフェース５０５を具備する。
（テーブル構成）
図７は採番テーブル２０１３、５０１４の構成を示す図である。データフロー番号T１０１は正の整数値であり、採番部品２０１２１、５０１２４から参照されるごとにカウントアップされる。
【００１８】
図８は録画再生フラグテーブル２０１４、５０１５の構成を示す図である。セッションＩＤＴ２０１にはアプリケーションサーバのセッションＩＤが格納され、主キーとなりレコードを識別する。フラグＴ２０２にはシステムが録画中か再生中かを識別する区分を格納する。データフロー番号Ｔ２０３では採番テーブルのデータフロー番号Ｔ１０１で取得された値が格納される。
【００１９】
図９はデータフロー記録テーブル２０１５、５０１６の構成を示す図である。データフロー番号Ｔ３０１とシーケンス番号Ｔ３０２が主キーとなりレコードが識別される。呼び元Ｔ３０３には処理の呼び元の画面またはクラス＋メソッドの名称が格納される。呼び先Ｔ３０４にはデータの出力先にはクラス＋メソッドの名称が格納される。入出力Ｔ３０５にはデータが入力値か出力値かを識別する区分が格納される。フィールドＴ３０６には呼び元と呼び先の間で受け渡されるデータのフィールド名が格納される。値Ｔ３０７には呼び元と呼び先の間で受け渡されるデータの値が格納される。例外Ｔ３０８は呼び先で例外が発生した場合に例外の種別と値が格納される。
【００２０】
図１１はデータフロー差異記録テーブル５０１７の構成を示す図である。データフロー番号Ｔ５０１とシーケンス番号Ｔ５０２が主キーとなりレコードが識別される。値Ｔ５０３には受け渡されるデータの値がデータフロー記録テーブル２０１５の値Ｔ３０７と異なる場合に格納される。例外Ｔ５０４は発生した例外がデータフロー記録テーブル２０１５の例外Ｔ３０８と異なる場合に例外が格納される。
（処理フロー）
図１２、図１３、図１４は録画処理のフローチャート図である。
【００２１】
録画イベントを検知すると録画処理が開始する。録画イベントにはセッションＩＤが含まれている(Ｓ１０１)。採番機能２０１２１を使用して採番テーブル２０１３からデータフロー番号を取得し、採番テーブル２０１３のデータフロー番号の値をカウントアップして更新する（Ｓ１０２）。さらに、録画再生テーブルにレコードを作成する。セッションＩＤＴ２０１にはＳ１０１で取得したセッションＩＤを、フラグＴ２０２には録画中を、データフロー番号Ｔ２０３にはＳ１０２で取得したデータフロー番号を格納する（Ｓ１０３）。
【００２２】
業務処理を開始すると入出力イベントが発生する。入出力イベントにはセッションＩＤが含まれている(Ｓ２０１)。セッションＩＤをキーに録画再生フラグテーブル２０１４を検索しフラグとデータフロー番号を抽出する。データが存在しフラグＴ２０２が「録画中」である場合はＳ２０３を実行し、そうでない場合はＳ２０４を実行する（Ｓ２０２）。アプリケーションフレームワークが入出力情報をインターセプトしデータフロー記録テーブル２０１５に記録する。データフロー番号Ｔ３０１にはＳ２０２で取得したデータフロー番号を、シーケンス場号Ｔ３０２にはデータフロー番号毎に通番を格納する。呼び元Ｔ３０３が画面の場合は入出力イベントから画面ＩＤを取得するが、それ以外の場合はプログラム言語のリフレクション機能によりクラスメイトメソッド名を取得し格納する。入出力Ｔ３０５は入力時には入力を出力時には出力を格納する。フィールドＴ３０６と値Ｔ３０７にはプログラム言語のリフレクション機能を利用して値を取得する。Ｔ３０８例外は例外が発生した場合に例外の種別を設定する(Ｓ２０３）。
【００２３】
録画破棄イベントまたはセッションタイムアウトイベントを検知すると録画終了処理を開始する。両イベントにはセッションＩＤが含まれている（Ｓ３０１）。セッションＩＤをキーに録画再生フラグテーブル２０１４からデータフロー番号Ｔ２０３を抽出し、データが存在する場合はデータフロー記録テーブル２０１５の該当データフロー番号のデータを削除する（Ｓ３０２）。また、録画終了イベントを検知した場合も録画終了処理を開始する。録画終了イベントにはセッションＩＤ、登録ユーザ、登録日時、説明が含まれている。登録ユーザはログイン時のユーザＩＤから登録日時はシステム日時から取得される（Ｓ３０３）録画終了イベントの情報を元にデータフロー記録テーブル２０１６を記録する。データフロー番号Ｔ４０１はセッションＩＤをキーに録画再生フラグテーブルから取得する。登録者Ｔ４０２，登録日時Ｔ４０３、説明Ｔ４０４は録画終了イベントから取得する（Ｓ３０４）。セッションＩＤをキーに録画フラグテーブルのレコードを削除する（Ｓ３０５）。
【００２４】
図１５、図１６は録画データのユーザ端末１１でのダウンロード処理とデバッグシステム１５でのアップロード処理のフローチャート図である。
【００２５】
ダウンロードイベントを検知するとダウンロード処理を開始する。ダウンロードイベントにはデータフロー番号が含まれている（Ｓ４０１）。取得したデータフロー番号を元にデータフロー記録テーブル２０１５からデータを抽出し、ファイルを作成しダウンロードする（Ｓ４０２）。
【００２６】
アップロードイベントを検知するとアップロード処理を開始する。アップロードイベントにはファイルの位置が含まれている（Ｓ５０１）。次に、採番機能５０１２１４使用して採番テーブル５０１４からデータフロー番号を取得し、採番テーブル５０１４のデータフロー番号の値をカウントアップして更新する（Ｓ５０２）。さらに、ファイルのデータフロー番号を採番したデータフロー番号と置き換えてデータフロー記録テーブルにファイルの内容を記録する。データフローヘッダテーブル５０１８にレコード作成しにはアップロードイベント情報の登録者、日時、説明を格納する（Ｓ５０３）。
【００２７】
図１７、図１８、図１９は再生処理のフローチャート図である。
【００２８】
再生イベントを検知すると再生処理が開始する。再生イベントにはセッションＩＤとデータフロー番号が含まれている(Ｓ６０１)。次に、録画再生テーブルにレコードを作成する。セッションＩＤＴ２０１にはＳ６０１で再生イベントのセッションＩＤを、フラグＴ２０２には「再生中」を、データフロー番号Ｔ２０３には再生イベントのデータフロー番号を格納する（Ｓ６０２）。
【００２９】
再生処理を開始すると入出力イベントが発生する。入出力イベントにはセッションＩＤが含まれている(Ｓ７０１)。セッションＩＤをキーに録画再生フラグテーブル５０１５を検索しフラグとデータフロー番号を抽出する。データが存在しフラグＴ２０２が「再生中」である場合はＳ７０３を実行し、そうでない場合はＳ７０４を実行する（Ｓ７０２）。入出力先は通常の入出力フレームワークをアプリケーションフレームワークがドライバとスタブに切り替える（Ｓ７０３）。データフロー記録テーブル５０１６をシーケンス番号順に抽出し、プログラム言語のリフレクション機能を利用して値を取得した入力データとの差異が無いか比較する（Ｓ７０４）。差異がある場合は比較データをデータフロー差異テーブル５０１７に記録する。データフロー番号Ｔ４０１、シーケンス番号Ｔ４０２には比較元のデータフロー記録テーブル５０１６のデータフロー番号とシーケンス番号を格納する。実際値Ｔ４０３にはプログラム言語のリフレクション機能を利用して値を取得し格納する。実際例外Ｔ４０４はアプリケーションフレームワークで例外キャッチして取得し格納する（Ｓ７０８）。セッションＩＤをキーに録画再生フラグテーブルのレコードを削除する（Ｓ７０９）。エラーメッセージを出力し処理を終了する。エラーメッセージの内容はデータフロー差異記録テーブル登録した内容を出力する（Ｓ７１０）。差異が無い場合はデータフロー記録テーブルの出力データを設定し処理７０７を実行する（Ｓ７０７）。
【００３０】
録画終了イベントまたはセッションタイムアウトイベントを検知すると再生終了処理を開始する。イベントにはセッションＩＤが含まれている（Ｓ８０１）。セッションＩＤをキーに録画再生フラグテーブルのレコードを削除する（Ｓ８０２）。
（他実施形態）
上述したユーザ端末１１、ＡＰサーバ１２、ＤＢサーバ１３、外部システム１４は同一のサーバ上で実施してもよい。
【００３１】
外部システムではＷＥＢサービスを代表例として記述しているがネットワーク上に公開されるサービスで入出処理が発生するもの全般を意味し、ＷＥＢサービスに限定されるものではない。
【符号の説明】
【００３２】
１１…ユーザ端末、１２…APサーバ、１３…DBサーバ、１４…            外部システム、１５…デバッグシステム、１６…社内ネットワーク、１７…インターネット、１０１…記憶部、１０１１…WEBブラウザ、１０２…表示部（ディスプレイ）、１０３…入力部（キーボード、マウス）、１０４…制御部、１０５…ネットワークインターフェース、２０１…記憶部、２０１１…業務プログラム、２０１２…アプリケーションフレームワーク、２０１３…採番テーブル、２０１４…録画再生フラグテーブル、２０１５…データフロー記録テーブル、２０１６…データフローヘッダテーブル、２０１２１…採番機能、２０１２２…録画機能、２０１２３…ダウンロード機能、２０２…表示部（ディスプレイ）、２０３…入力部（キーボード、マウス）、２０４…制御部、２０５…ネットワークインターフェース、３０１１…データベースシステム、３０２…表示部（ディスプレイ）、３０３…入力部（キーボード、マウス）、３０４…制御部、３０５…ネットワークインターフェース、４０１１…WEBサービス、４０２…表示部（ディスプレイ）、４０３…入力部（キーボード、マウス）、４０４…制御部、４０５…ネットワークインターフェース、５０１…記憶部、５０１１…業務プログラム、５０１２…アプリケーションフレームワーク、５０１３…デバッガ、５０１４…採番テーブル、５０１５…録画再生フラグテーブル、５０１６…データフロー記録テーブル、５０１７…データ差異記録テーブル、５０１８…データフローヘッダテーブル、５０１２１…再生機能、５０１２２…データ差異記録機能、５０１２３…ダウンロード機能、５０１２４…採番機能、５０２…表示部（ディスプレイ）、５０３…入力部（キーボード、マウス）、５０４…制御部、５０５…ネットワークインターフェース。
【図１】
2011141775.tif 000003
【図２】
2011141775.tif 000004
【図３】
2011141775.tif 000005
【図４】
2011141775.tif 000006
【図５】
2011141775.tif 000007
【図６】
2011141775.tif 000008
【図７】
2011141775.tif 000009
【図８】
2011141775.tif 000010
【図９】
2011141775.tif 000011
【図１０】
2011141775.tif 000012
【図１１】
2011141775.tif 000013
【図１２】
2011141775.tif 000014
【図１３】
2011141775.tif 000015
【図１４】
2011141775.tif 000016
【図１５】
2011141775.tif 000017
【図１６】
2011141775.tif 000018
【図１７】
2011141775.tif 000019
【図１８】
2011141775.tif 000020
【図１９】
2011141775.tif 000021
【図２０】
2011141775.tif 000022
【図２１】
2011141775.tif 000023
【図２２】
2011141775.tif 000024
【図２３】
2011141775.tif 000025
【図２４】
2011141775.tif 000026
【図２５】
2011141775.tif 000027
【図２６】
2011141775.tif 000028