(57)【要約】【課題】イベント駆動型処理サービスにおいて非同期処理コードの実行条件には、処理時間や試行回数などの制約があり、制約の範囲で処理を完了させなければならない。【解決手段】非同期処理コードの実行中に、イベント駆動型コンピューティングサービスの制約に抵触する兆候を検知した場合には実行中の非同期処理コードからより高性能の実行環境で同じ非同期処理コードを起動して、処理を継続する。【選択図】図１１
2018072944.tif 000002
【特許請求の範囲】
【請求項１】
登録時に指定されたシステムイベント及びコンピューティングリソースに従いシステムを構成するコンピュータによって実行されるプログラムであって、
前記システムが管理するデータを処理する処理手段と、
前記プログラムの実行に係る時間の監視結果に従い、前記処理手段による処理の中断と、前記システムに登録されている他のプログラムの起動と、と行う起動手段と
して前記コンピュータを機能させるためのプログラム。
【請求項２】
前記プログラムの実行に係る時間は、前記プログラムの実行されてからの経過時間、前記プログラムの実行が許容される残り時間、前記他のプログラムを起動すべきと判断される残り時間のいずれかを含むことを特徴とする請求項１に記載のプログラム。
【請求項３】
前記処理手段による処理は、前記プログラムの実行されてからの経過時間が制限時間を超えたことに起因して中断され、
前記起動手段は、前記プログラムの実行されてからの経過時間が制限時間に達するよりも前に、前記他のプログラムの起動を行うことを特徴とする請求項１に記載のプログラム。
【請求項４】
登録時に指定されたシステムイベント及びコンピューティングリソースに従いシステムを構成するコンピュータによって実行されるプログラムであって、
前記システムが管理するデータを処理する処理手段と、
前記プログラムの実行時間が制限時間を超えたことに起因して行われたリトライの回数が所定の回数を超える場合に前記システムに登録されている他のプログラムを起動する起動手段と
して前記コンピュータを機能させるためのプログラム。
【請求項５】
前記他のプログラムには、前記プログラムよりも多いコンピューティングリソースが割り当てられることを特徴とする請求項１乃至４のいずれか一項に記載のプログラム。
【請求項６】
前記プログラムは、前記処理の対象となるデータが格納される格納場所に関連付けて登録され、前記他のプログラムは当該格納場所に関連づけることなく登録されることを特徴とする請求項１乃至５のいずれか一項に記載のプログラム。
【請求項７】
前記他のプログラムは、前記プログラムと同じデータを処理対象とすることを特徴とする請求項１乃至６のいずれか一項に記載のプログラム。
【請求項８】
前記他のプログラムは、前記プログラムと同じコードを有することを特徴とする請求項１乃至７のいずれか一項に記載のプログラム。
【請求項９】
コンピューティングリソースを指定して予め登録されたスクリプトをシステムイベントに応答して自動で実行するサービスを提供するシステムであって、
システムイベントを検出する検出手段と、
検出されたシステムイベントに対応するスクリプトを実行することでデータを処理する処理手段と、
前記スクリプトの実行に係る時間の監視する監視手段と、
前記監視手段による監視結果に従い、前記処理手段による処理の中断と、前記システムに登録されている他のスクリプトの実行と、を行う実行手段とを有し、
前記他のスクリプトの実行により、前記処理手段により処理されていたデータが処理されることを特徴とするシステム。
【請求項１０】
前記スクリプトの実行に係る時間は、前記スクリプトが実行されてからの経過時間、前記スクリプトの実行が許容される残り時間、前記他のスクリプトを起動すべきと判断される残り時間のいずれかを含むことを特徴とする請求項９に記載のシステム。
【請求項１１】
前記処理手段による処理は、前記スクリプトが実行されてからの経過時間が制限時間を超えたことに起因して中断され、
前記実行手段は、前記スクリプトが実行されてからの経過時間が制限時間に達するよりも前に、前記他のプログラムの実行することを特徴とする請求項９に記載のプログラム。
【請求項１２】
コンピューティングリソースを指定して予め登録されたスクリプトをシステムイベントに応答して自動で実行するサービスを提供するシステムであって、
システムイベントを検出する検出手段と、
検出されたシステムイベントに対応するスクリプトを実行することでデータを処理する処理手段と、
前記スクリプトの実行時間が制限時間を超えたことに起因して行われたリトライの回数が所定の回数を超える場合に前記システムに登録されている他のスクリプトを実行する実行手段とを有し、
前記他のスクリプトの実行により、前記処理手段により処理されていたデータが処理されることを特徴とするシステム。
【請求項１３】
前記他のスクリプトには、前記スクリプトよりも多いコンピューティングリソースが割り当てられることを特徴とする請求項９乃至１２のいずれか一項に記載のシステム。
【請求項１４】
前記他のスクリプトは、前記スクリプトと同じデータを処理対象とすることを特徴とする請求項９乃至１３のいずれか一項に記載のシステム。
【請求項１５】
前記他のスクリプトは、前記スクリプトと同じコードを有することを特徴とする請求項９乃至１４のいずれか一項に記載のシステム。
【請求項１６】
コンピューティングリソースを指定して予め登録されたスクリプトをシステムイベントに応答して自動で実行するサービスを提供するシステムにおける情報処理方法であって、
システムイベントを検出し、
検出されたシステムイベントに対応するスクリプトを実行することでデータを処理し、
前記スクリプトの実行に係る時間の監視し、
監視結果に従い、前記データの処理を中断と、前記システムに登録されている他のスクリプトを実行と、を行い、
前記他のスクリプトの実行により、処理されていた前記データが処理されることを特徴とする情報処理方法。
【請求項１７】
コンピューティングリソースを指定して予め登録されたスクリプトをシステムイベントに応答して自動で実行するサービスを提供するシステムにおける情報処理方法であって、
システムイベントを検出し、
検出されたシステムイベントに対応するスクリプトを実行することでデータを処理し、
前記スクリプトの実行時間が制限時間を超えたことに起因して行われたリトライの回数が所定の回数を超える場合に前記システムに登録されている他のスクリプトを実行し、
前記他のスクリプトの実行により、処理されていた前記データが処理されることを特徴とする情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラム、システム及び情報処理方法に関し、特にクラウドサービスにおけるイベント駆動型コンピューティングサービスにおける効率的なリソース制御方法に関する。
【背景技術】
【０００２】
近年、各種のクラウドコンピューティングサービスが存在している。例えば、Ａｍａｚｏｎ Ｗｅｂ Ｓｅｒｖｉｃｅ（以後「ＡＷＳ」と略す）や、Ｇｏｏｇｌｅ Ｃｌｏｕｄ Ｐｌａｔｆｏｒｍ、Ｍｉｃｒｏｓｏｆｔ Ａｚｕｒｅ等である。これらのサービスは、仮想マシンやストレージ等のコンピューティングリソースを、使用した性能や容量に応じて時間単位で課金する形態でサービス提供することで普及してきている。サービスの利用者は、これらのサービスを利用することで自ら物理的な設備を用意しなくても、Ｗｅｂシステム等の情報処理システムを低コストで柔軟に構築することが可能となる。クラウドコンピューティングサービスの利用例として、ネットワークに接続された各種デバイスやコンピュータ端末、モバイル端末からデバイスやアプリケーションのログ情報や稼働情報を収集してストレージに保存し、データベースで管理するものがある。ここではファイル等の収集した情報がアップロードされるたびにレコードが作成され、そのファイル名やストレージ上の保存場所等が管理される。
【０００３】
ここで、例えば特許文献１には、イベントドリブン型スクリプトという技術が開示されている。この技術によれば、特定のデータに対する更新が行われた場合、その更新イベントに従い、予め登録されているスクリプトが起動される。クラウドコンピューティングサービスにおいても、特定のコンピューティングリソースに対して発生したイベントに応じて、軽量な処理を実行するサービス（以後「イベント駆動型コンピューティングサービス」と呼称する）が提供されている。例えば、ＡＷＳ Ｌａｍｂｄａ、Ｇｏｏｇｌｅ Ｃｌｏｕｄ Ｆｕｎｃｔｉｏｎｓ、Ｍｉｃｒｏｓｏｆｔ Ａｚｕｒｅ Ｆｕｎｃｔｉｏｎｓ等がある。これらのサービスでは、クラウドコンピューティングサービスに対して所望の処理を実現するためのプログラムコードを、そのプログラムコードを実行する仮想マシンのＣＰＵやメモリ等のスペックを指定して事前に登録する。そして、登録したプログラムコードをコンピューティングリソースとそのコンピューティングリソースに対して発生する特定のイベントと関連付ける。
【０００４】
従来、イベント駆動型コンピューティングサービスが実現する処理と同様のことを実現するためには、コンピューティングリソースに対して発生するイベントを検知するためのアプリケーションや所望の処理を実行するためのアプリケーションと、当該アプリケーションが稼働するインフラの構築や管理が必要であった。しかしながら前述のイベント駆動型コンピューティングサービスにより、クラウドコンピューティングサービスの利用者は所望の処理の開発にだけ集中することが可能となった。また、イベント駆動型コンピューティングサービスにおいては、登録したプログラムコードが実行された時間単位で課金する形態でサービスが提供されているためインフラの費用面でも容易に上記構成のアプリケーションの開発が容易になった。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００４−３８７５９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
現状ＡＷＳ Ｌａｍｂｄａに代表されるイベント駆動型コンピューティングサービスでは、イベントの発生に応じて実行されるプログラムコードの実行に際して制限事項が存在する。具体的にはプログラムコードはイベント駆動型コンピューティングサービスが定める時間内に処理が完了しないとタイムアウトが発生し、エラー終了する。また、プログラムコードが一定回数連続してエラー終了した場合、以後イベント駆動型コンピューティングサービスは対象のコンピューティングリソースにイベントが発生してもプログラムコードを実行しなくなる。
【０００７】
例えば、所定のストレージへのファイルアップロードの完了イベントに応じて、アップロードされたファイルを加工するプログラムコードをイベント駆動型コンピューティングサービスに登録したとする。この時、アップロードするファイルの容量が巨大な場合には、プログラムコードを実行する仮想マシンのスペックでは時間内に処理を完了することができない場合がある。つまり、プログラムコードの実行環境として想定した仮想マシンのスペックでは不適切なデータがアップロードされた時、タイムアウトを繰り返し、処理が実行されないことが起こり得る。
【０００８】
本発明では、このような課題を解決するために成されたもので、イベント駆動型コンピューティングサービスの不履行を抑制したプログラム、システムおよび情報処理方法を提供するものである。
【課題を解決するための手段】
【０００９】
上記目的を達成するために本発明は以下の構成を有する。
【００１０】
すなわち本発明の第１の側面によれば、登録時に指定されたシステムイベント及びコンピューティングリソースに従いシステムを構成するコンピュータによって実行されるプログラムであって、
前記システムが管理するデータを処理する処理手段と、
前記プログラムの実行に係る時間の監視結果に従い、前記処理手段による処理の中断と、前記システムに登録されている他のプログラムの起動とを行う起動手段と
して前記コンピュータを機能させる。
【００１１】
あるいは本発明の第２の側面によれば、登録時に指定されたシステムイベント及びコンピューティングリソースに従いシステムを構成するコンピュータによって実行されるプログラムであって、
前記システムが管理するデータを処理する処理手段と、
前記プログラムの実行時間が制限時間を超えたことに起因して行われたリトライの回数が所定の回数を超える場合に前記システムに登録されている他のプログラムを起動する起動手段として前記コンピュータを機能させる。
【発明の効果】
【００１２】
本発明により、イベント駆動型コンピューティングサービスにおいてイベント駆動型コンピューティングサービスの不履行を抑制することが可能となる。
【図面の簡単な説明】
【００１３】
【図１】システム全体構成図
【図２】クライアント装置１０１のハードウェア構成図
【図３】サーバ１０２、１０３、１０４のハードウェア構成図
【図４】クライアント装置１０１のソフトウェア構成図
【図５】ファイルサーバ１０２のソフトウェア構成図
【図６】ファイル情報サーバ１０３のソフトウェア構成図
【図７】イベント情報管理サーバ１０４のソフトウェア構成図
【図８】非同期処理コードを登録する一連の処理を示したシーケンス図
【図９Ａ】、
【図９Ｂ】非同期処理コードが実行される一連の処理を示したシーケンス図
【図１０】非同期処理コードの監視処理のフローチャート
【図１１】非同期処理コードが処理時間に応じて異なる実行環境の非同期処理コードを起動する処理のフローチャート
【図１２】異なる実行環境の非同期処理コードを起動する非同期処理コードの擬似コード
【図１３】非同期処理コードが処理回数に応じて異なる実行環境の非同期処理コードを起動する処理のフローチャート
【図１４】異なる実行環境の非同期処理コードを起動する非同期処理コードの擬似コード
【図１５】イベントの内容によって非同期処理コードを実行する環境を決定する処理のフローチャート
【発明を実施するための形態】
【００１４】
［第１実施形態］
●システム構成
以下、本発明を実施するための形態について図面を用いて説明する。図１は、本発明に係るシステムの全体構成を示すブロック図である。ネットワーク１００は、図１に示すブロック図の各構成要素のうちクライアント装置１０１、ファイルサーバ１０２、ファイル情報管理サーバ１０３、イベント情報管理サーバ１０４を接続するネットワークである。クライアント装置や各サーバ、管理者装置等を情報処理装置あるいはコンピュータと呼ぶこともある。また図１のシステムをクラウドシステムあるいは情報処理システムと呼ぶことがある。
【００１５】
ネットワーク１００は、各構成要素間で通信を行うための基盤である。本発明においてはクライアント装置１０１とそれ以外の構成要素との間はインターネットによって接続されるものとして説明する。それ以外の構成要素間においては、イントラネット、インターネットもしくはその他のネットワークシステムであっても構わない。クライアント装置１０１は、図１に示すブロック図の各構成要素のうち、ネットワーク１００を介してファイルサーバ１０２、ファイル情報管理サーバ１０３と相互に接続する。本実施例においては、クライアント装置１０１はＰＣ（パーソナルコンピュータ。以降、ＰＣと呼称する。）を前提に説明を進めるが、ネットワーク１００を介した通信機能を有する端末であれば種別は問わない。ファイルサーバ１０２は、クライアント装置１０１から送信されるファイルの実体を受信し、保存するサーバ装置である。ファイルサーバ１０２は、クライアント装置１０１から送信される様々なフォーマットのファイルを保存する機能を有する。ファイル情報管理サーバ１０３は、クライアント装置１０１から送信されるファイルの属性情報とファイルサーバ１０２上の保存場所情報（ＵＲＬ）を関連付けて保存するサーバ装置である。
【００１６】
イベント情報管理サーバ１０４は、イベント駆動型コンピューティングサービスにおけるプログラムコードの管理及び実行を行うサーバ装置である。イベント駆動型コンピューティングサービスの利用者は事前にイベント情報管理サーバ１０４にプログラムコードとそれを実行するためのファイルサーバ１０２で発生するイベントを関連付けて登録する。ここで言うイベントとは、具体的には「ファイルサーバ１０２の所定のパスにファイルがアップロードされたとき」や「ファイルサーバ１０２の所定のパスに保存されるファイルが更新されたとき」など、ファイルサーバ１０２で保存されるファイルに対してクライアント装置１０１あるいは、図１に示すその他の構成要素が行う操作を指す。また、プログラムコードを実行する仮想マシンの環境情報も関連付けて登録する。具体的には仮想マシンで稼働するＣＰＵやＲＡＭの性能を指定する。そうすることで、イベント情報管理サーバ１０４は、ファイルサーバ１０２でイベントが発生したタイミングで、ファイルサーバ１０２で実行される処理とは非同期で、イベントに関連付けられた所定のプログラムコードを実行する。以降、イベント情報管理サーバ１０４が、ファイルサーバ１０２で発生するイベントに応じて実行するプログラムコードを非同期処理コードと呼称する。また本実施形態に係るイベントのことをシステムイベントとも呼ぶ。イベントは、例えばその種類と非同期処理コードとがイベント情報の登録時に指定され、関連付けられている。非同期処理コードはそれを実行するイベント情報管理サーバ１０４のコンピューティングリソースを用いて実行される。非同期処理コードはたとえばＪＡＶＡ（登録商標）スクリプトなどのスクリプトにより実現できる。
【００１７】
●端末及びサーバのハードウェア構成
図２は、図１に示すクライアント装置１０１のハードウェア構成の一例を示すブロック図である。システムバス２００はクライアント装置１０１を構成する各ハードウェアを相互に接続するバスである。本実施例においては特に言及しない限り、システムバス２００はＣＰＵ２０１からの制御命令をシステムバス２００に接続された各ハードウェアに伝播させるものとする。ＣＰＵ２０１は、ＲＡＭ２０２及び記憶装置２０３から読み込んだプログラムを実行し、本実施形態に係る発明を実現するためにシステムステムバス２００で接続されたクライアント装置の各ハードウェアを直接的あるいは間接的に制御する。ＲＡＭ２０２は、ＣＰＵ２０１が動作するためのワーク領域として利用される一時メモリ領域である。記憶装置２０３は、基本ソフトウェアであるＯＳやその他ソフトウェアモジュールが記憶されているＨＤＤに代表されるような外部記憶装置である。ネットワーク装置２０４は、ネットワーク１００に接続して他の装置と通信を行うハードウェアである。入出力インターフェース２０５は、入出力装置２０６と接続するためのインターフェースである。入出力インターフェース２０５は例えばＰＳ２やＵｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ（ＵＳＢ）、アナログやデジタルのディスプレイインターフェースを備える。入出力装置２０６は、入出力インターフェース２０５を介してクライアント装置と接続し、情報のインプットおよびアウトプットを行う装置である。入出力装置２０６は例えばディスプレイ、キーボード、マウスなどがある。
【００１８】
図３は、図１に示すファイルサーバ１０２、ファイル情報管理サーバ１０３、イベント情報管理サーバ１０４のハードウェア構成の一例を示すブロック図である。システムバス３００は、ファイルサーバ１０２、ファイル情報管理サーバ１０３、イベント情報管理サーバ１０４を構成する各ハードウェアを相互に接続するバスである。本実施例においては特に言及しない限り、システムバス３００はＣＰＵ３０１からの制御命令を、システムバスに接続された各ハードウェアに伝播させるものとする。ＣＰＵ３０１は、ＲＡＭ３０２および記憶装置３０３から読み込んだプログラムを実行し、本実施形態に係る発明を実現するためにシステムバス３００で接続されたクライアント装置の各ハードウェアを直接的あるいは間接的に制御する。ＲＡＭ３０２は、ＣＰＵ３０１が動作するためのワーク領域として利用される一時メモリ領域である。記憶装置３０３は、基本ソフトウェアであるＯＳやその他ソフトウェアモジュールが記憶されているＨＤＤに代表されるような外部記憶装置である。ネットワーク装置３０４は、ネットワーク１００に接続して他の装置と通信を行うハードウェアである。なお、図１に示すファイルサーバ１０２、ファイル情報管理サーバ１０３、イベント情報管理サーバ１０４はクラウドコンピューティングサービスとして提供されるものであり、図３に示した各ハードウェア要素が仮想マシンソフトウェアによって、アプリケーションソフトウェアとしてそれぞれ実現され、物理ハードウェア要素と同様の挙動をとるものとする。
【００１９】
●クライアントのソフトウェア
図４は、本実施例におけるクライアント装置１０１で稼働するクライアント装置情報送信アプリケーション４００のソフトウェア構成の一例を示すブロック図である。クライアント装置情報送信アプリケーション４００は、クライアント装置１０１の記憶装置２０３に格納され、ＣＰＵ２０１によって実行される。クライアント装置情報送信アプリケーション４００は、通信部４０１、情報収集部４０２から構成される。通信部４０１は、ネットワーク装置２０４を介してファイルサーバ１０２と通信を行う。情報収集部４０２は、クライアント装置１０１が生成するクライアント装置情報を収集して、ファイルとして記憶装置２０３に保存する。具体的にはクライアント装置１０１が出力するハードウェアのログ情報などを逐次ファイルとして記憶装置２０３に保存する。クライアント装置情報送信アプリケーション４００は、通信部４０１を介してファイルサーバ１０２にクライアント装置情報を送信する。
【００２０】
●ファイルサーバのソフトウェア
図５は、本実施例におけるファイルサーバ１０２で稼働するファイル管理アプリケーション５００のソフトウェア構成の一例を示すブロック図である。ファイル管理アプリケーション５００は、ファイルサーバ１０２の記憶装置３０３に格納されＣＰＵ３０１によって実行される。ファイル管理アプリケーション５００は、通信部５０１、ファイル管理部５０２、ファイル保存部５０３から構成される。通信部５０１は、ネットワーク装置３０４を介してクライアント装置１０１およびファイルサーバ１０２、ファイル情報管理サーバ１０３、イベント情報管理サーバ１０４と通信を行う。ファイル管理部５０２は、通信部５０１を介してクライアント装置１０１、イベント情報管理サーバ１０４からのリクエストを受信する。また、ファイル管理部５０２は、通信部５０１を介してイベント情報管理サーバ１０４へイベントを送信する。ファイル保存部５０３は、ファイル管理部５０２からの指示に従って、クライアント装置１０１から受信したファイルの実体を保存する。またファイル保存部５０３は、ファイル管理部５０２からの指示にしたがって図１に示す本実施形態に係る発明の各構成要素からリクエストに応じたファイルの実体を送信する。ファイル保存部５０３がファイルの実体を管理するデータの一例を表１のファイル管理テーブルに示す。
【００２１】
［表１］ファイル管理テーブル
ＩＤ      保存パス        ファイル名    ファイルサイズ      ファイルデータ  
１    logdata/client001    201601.log        1024KB        ＜バイナリデータ＞
２    logdata/client001    201602.log        2048KB        ＜バイナリデータ＞
３    logdata/client002    201605.log         512KB        ＜バイナリデータ＞。
【００２２】
表１において、ＩＤカラムは、ファイルサーバ１０２において保存するファイルをファイル管理アプリケーション５００が一意に識別するための値を格納するカラムである。保存パスカラムは、ファイルサーバ１０２におけるファイルの保存先フォルダのパス情報を格納するカラムである。ファイル名カラムは、ファイルサーバ１０２において保存するファイルの名称の値を格納するカラムである。ファイルサイズカラムは、ファイルサーバ１０２において保存するファイルのサイズの値を格納するカラムである。ファイルデータカラムは、ファイルサーバ１０２において保存するファイルの実体となるバイナリデータを保存するカラムである。
【００２３】
●ファイル情報管理サーバのソフトウェア
図６は、本実施例におけるファイル情報管理サーバ１０３で稼働するファイル情報管理アプリケーション６００のソフトウェア構成の一例を示すブロック図である。ファイル情報管理アプリケーション６００は、ファイル情報管理サーバ１０３の記憶装置３０３に格納されＣＰＵ３０１によって実行される。ファイル情報管理アプリケーション６００は、通信部６０１、ファイル情報管理部６０２、ファイル情報保存部６０３から構成される。通信部６０１は、ネットワーク装置３０４を介して、イベント情報管理サーバ１０４と通信を行う。ファイル情報管理部６０２は、通信部６０１を介して、イベント情報管理サーバ１０４からのリクエストを受信する。ファイル情報保存部６０３は、ファイル情報管理部６０２からの指示に従って、ファイルサーバ１０２から受信したファイルの実体から抽出した各属性情報を保存する。後述するイベント情報管理サーバ１０４が実行する非同期処理コードの実行結果として、各属性情報がファイル情報保存部６０３に保存される。ファイル情報保存部６０３がファイルの属性情報を管理するデータの一例を表２のファイル情報管理テーブルに示す。
【００２４】
［表２］ファイル情報管理テーブル
ＩＤ    ファイルサーバＩＤ    ・・・            ［属性］
全文検索
インデックス  
Ａ            １              ・・・        ＜テキストデータ＞
Ｂ            ２                            ＜テキストデータ＞
Ｃ            ３                            ＜テキストデータ＞。
【００２５】
表２において、ＩＤカラムは、ファイル情報管理サーバ１０３において保存するファイルの属性情報をファイル情報管理アプリケーション６００が一意に識別するための値を格納するカラムである。ファイルサーバＩＤカラムは、属性情報を抽出したファイルの実体に対応するファイル管理テーブル（表１）のＩＤカラムの値を格納するカラムである。属性カラムは、ファイルの実体から抽出した属性情報をそれぞれ格納するカラムである。属性カラムに格納する具体的な値としては、アプリケーションの用途として様々な情報が挙げられる。例えば、ファイルから抽出した全文検索用のインデックステキストデータ等が挙げられる。なお、本実施例においては、抽出する属性情報の値については特に限定するものではない。
【００２６】
●イベント情報管理サーバのソフトウェア
図７は、本実施例におけるイベント情報管理サーバ１０４で稼働する各アプリケーションのソフトウェア構成の一例を示すブロック図である。イベント情報管理サーバ１０４では、非同期処理コード管理アプリケーション７００、非同期処理コード実行管理アプリケーション７１０、非同期処理コード実行環境７２０が記憶装置３０３に格納され、ＣＰＵ３０１によって実行される。非同期処理コード管理アプリケーション７００は、イベント情報管理サーバ１０４で実行する非同期処理コードの保存と非同期処理コードの実行設定の管理を行うものである。非同期処理コード管理アプリケーション７００は、通信部７０１、非同期処理コード管理部７０２、非同期処理コード保存部７０３、非同期処理コード設定保存部７０４から構成される。通信部７０１は、ネットワーク装置３０４を介してクライアント装置１０１、ファイルサーバ１０２、ファイル情報管理サーバ１０３、非同期処理コード実行管理アプリケーション７１０と通信を行う。非同期処理コード管理部７０２は、通信部７０１を介してクライアント装置１０１からの非同期処理コード登録リクエストを受信する。また、非同期処理コード実行管理アプリケーション７１０からの非同期処理コード要求リクエストを受信する。非同期処理コード保存部７０３は、非同期処理コード管理部７０２からの指示に従って、クライアント装置１０１から受信した非同期処理コードを保存する。また、非同期処理コード保存部７０３は、非同期処理コード管理部７０２からの指示に従って、非同期処理コード実行管理アプリケーション７１０に非同期処理コードを送信する。非同期処理コード保存部７０３が非同期処理コードを管理するデータの一例を表３の非同期処理コード管理テーブルに示す。
【００２７】
［表３］非同期処理コード管理テーブル
ＩＤ        ファイル名          ファイルデータ  
１        asyncproc1.zip      ＜バイナリデータ＞
２        asyncproc2.zip      ＜バイナリデータ＞。
【００２８】
表３においてＩＤカラムは、非同期処理コード管理アプリケーション７００において、保存する非同期処理コードを一意に識別するための値を格納するカラムである。ファイル名カラムは、非同期処理コード管理アプリケーション７００において、保存する非同期処理コードのファイル名称の値を格納するカラムである。ファイルデータカラムは、非同期処理コード管理アプリケーション７００において、保存する非同期処理コードのバイナリデータを保存するカラムである。
【００２９】
非同期処理コード設定保存部７０４は、非同期処理コード管理部７０２からの指示に従って、クライアント装置１０１から受信した非同期処理コードの実行設定を非同期処理コードの実体と関連付けて保存する。また、非同期処理コード保存部７０３は、非同期処理コード管理部７０２からの指示に従って、非同期処理コード実行管理アプリケーション７１０に非同期処理コードの実行設定を非同期処理コードと合わせて送信する。非同期処理コード設定保存部７０４が非同期処理コードの実行設定を管理するデータの一例を表４の実行環境設定テーブル、表５のイベント設定テーブルに示す。
【００３０】
［表４］実行環境設定テーブル
ＩＤ    実行環境タイプ    ＣＰＵ      ＲＡＭ    ＨＤＤ
１          ＬＯＷ        １ＧＨｚ    ２ＧＢ  ５００ＭＢ
２        ＮＯＲＭＡＬ    ２ＧＨｚ    ４ＧＢ    １ＧＢ
３        ＭＩＤＤＬＥ    ３ＧＨｚ    ６ＧＢ    ５ＧＢ
４          ＨＩＧＨ      ３ＧＨｚ    ８ＧＢ    １０ＧＢ。
【００３１】
表４においてＩＤカラムは、非同期処理コード管理アプリケーション７００において。非同期処理コードを実行する仮想マシン環境の設定を一意に識別するための値を格納するカラムである。実行環境タイプカラムは、非同期処理コードを実行する仮想マシン環境の特徴を示す名称を格納するカラムである。ＣＰＵカラムは、非同期処理コードを実行する仮想マシン環境のＣＰＵ値を格納するカラムである。ＲＡＭカラムは、非同期処理コードを実行する仮想マシン環境のＲＡＭ値を格納するカラムである。ＨＤＤカラムは、非同期処理コードを実行する仮想マシン環境のＨＤＤのサイズを格納するカラムである。
【００３２】
［表５］イベント設定テーブル
ＩＤ  対象ファイルパス  対象イベント  非同期処理コードＩＤ  実行環境ＩＤ
１    logdata/client1/      追加            １                  ２
２                                          １                  ３
３                                          １                  ４
４    logdata/client2/      更新            ２                  ３。
【００３３】
表５においてＩＤカラムは、非同期処理コード管理アプリケーション７００において。非同期処理コードの実行対象となるイベントを一意に識別するための値を格納するカラムである。対象ファイルパスカラムは、非同期処理コードを実行する対象のファイルパスを格納するカラムである。対象イベントカラムは、非同期処理コードを実行する条件となる対象ファイルパスカラムに格納されたファイルパスに該当するファイルに対して実行された操作の内容を格納するカラムである。非同期処理コードＩＤカラムは、実行する非同期処理コードに該当する非同期処理コード管理テーブルのＩＤカラムの値を格納するカラムである。実行環境ＩＤカラムは非同期処理コードを実行する環境に該当する実行環境設定テーブルのＩＤカラムの値を格納するカラムである。
【００３４】
例えばイベント設定テーブルのＩＤカラムの値が「１」のレコードの場合、「ｌｏｇｄａｔａ／ｃｌｉｅｎｔ１」以下のフォルダにファイルが「追加」された場合に、非同期処理コード管理テーブル（表３）に従って非同期処理コードＩＤが１である「ａｓｙｎｃｐｒｏｃ１．ｚｉｐ」の非同期処理コードを、実行環境設定テーブル（表４）に従って実行環境ＩＤが１である環境即ちＣＰＵ  ２ＧＨｚ、ＲＡＭ  ４ＧＢ、ＨＤＤ１ＧＢの仮想マシン環境で実行することを意味している。
【００３５】
非同期処理コード実行管理アプリケーション７１０は、ファイルサーバ１０２から受信したイベントに応じた非同期処理コードとその実行設定を非同期処理コード管理アプリケーション７００から取得し、それを実行するための非同期処理コード実行環境７２０を作成するものである。非同期処理コード実行管理アプリケーション７１０は、通信部７１１、非同期処理コード実行管理部７１２、非同期処理コード実行部７１３、非同期処理コード実行環境管理部７１４から構成される。通信部７１１は、ネットワーク装置３０４を介しファイルサーバ１０２、ファイル情報管理サーバ１０３、非同期処理コード管理アプリケーション７００、非同期処理コード実行環境７２０と通信を行う。非同期処理コード実行管理部７１２は、通信部７１１を介してファイルサーバ１０２からイベント、非同期処理コード管理アプリケーション７００から非同期処理コードおよび実行設定を受信する。非同期処理コード実行部７１３は、非同期処理コード実行管理部７０２からの指示に従って、ファイルサーバ１０２から受信したイベントに対応する非同期処理コードおよび実行設定を受信する。また、非同期処理コード実行部７１３は、ファイルサーバから受信した実行設定に基づき、非同期処理コード実行環境７２０を生成し、イベントに対応する非同期処理コードの実行を指示する。非同期処理コード実行環境管理部７１４は、非同期処理コード実行環境７２０で実行する非同期処理コードの実行状況を管理する。非同期処理コード実行環境管理部７１４が管理する非同期処理コード実行環境７２０の稼働条件の一例を表６の実行環境監視項目テーブルに示す。
【００３６】
［表６］実行環境監視項目テーブル
ＩＤ              監視項目              監視項目値
１              リトライ回数                  ５
２                実行時間                ３００。
【００３７】
表６においてＩＤカラムは、非同期処理コード実行管理アプリケーション７１０において、非同期処理コード実行環境７２０の稼働状況を管理する項目を一意に識別するための値を格納するカラムである。監視項目カラムは、非同期処理コード実行環境７２０で実行中の非同期処理コードの実行状況を監視するための項目を格納するカラムである。監視項目値カラムは、監視項目カラムに格納された項目に対する閾値を格納するカラムである。例えば実行環境監視項目テーブルのＩＤカラムの値が「１」のレコードの場合、非同期処理コード実行環境７２０で実行される非同期処理コードのリトライを５回まで許容することを意味する。所定のリトライ回数を超過して５回実行しても非同期処理コードがイベントの処理を完了できなかった場合は、その超過に起因してエラーとなり非同期処理コード実行管理アプリケーション７１０は非同期処理コードの実行を中断する。また実行環境監視項目テーブルのＩＤカラムの値が「２」のレコードの場合、非同期処理コード実行環境７２０で実行される非同期処理コードがイベントの処理に要する時間を３００秒までと制限することを意味する。３００秒を越えても非同期処理コードが非同期処理コード実行管理アプリケーション７１０に対して処理完了の通知を送信しない場合は、非同期処理コード実行管理アプリケーション７１０は非同期処理コード実行環境７２０に非同期処理コード終了指示を送信し、処理を中断させる。このように実行環境監視項目テーブルには、イベント駆動型コンピューティングサービスの様々な制約を定義できる。
【００３８】
非同期処理コード実行環境７２０は、ファイルサーバ１０２が非同期処理コード実行管理アプリケーション７１０に送信したイベントを対応する非同期処理コードを実行して処理するための仮想マシン環境である。非同期処理コード実行環境７２０は、クラウドコンピューティングサービスとして提供されるものであり、図３に示した各ハードウェア要素が仮想マシンソフトウェアによって、アプリケーションソフトウェアとしてそれぞれ実現され、物理ハードウェア要素と同様の挙動をとるものとする。非同期処理コード実行環境７２０は、通信部７２１、実行部７２２で構成される。
【００３９】
通信部７２１は、ネットワーク装置３０４を介しファイルサーバ１０２、ファイル情報管理サーバ１０３、非同期処理コード管理アプリケーション７００、非同期処理コード実行環境７２０と通信を行う。実行部７２２は、通信部７２１を介して非同期処理コード実行管理アプリケーション７１０から受信したファイルサーバ１０２で発生したイベントを、非同期処理コード管理アプリケーション７００から受信した非同期処理コードを実行して処理する。また、実行部７２２は、非同期処理コード実行環境管理部７１４から逐次実行監視リクエストを受信し実行中の非同期処理コードに対する監視リクエストを非同期処理コード実行管理アプリケーション７１０から受信して、非同期処理コードの実行を制御する。
【００４０】
●非同期処理コードの登録
図８および図９に、図７で説明したイベント情報管理サーバ１０４上での非同期処理コードの登録、管理から実際にファイルサーバ１０２で発生するイベントを処理する一連の流れをシーケンス図で示す。
【００４１】
図８は、本実施例においてクライアント装置１０１が非同期処理コード管理アプリケーション７００に非同期処理コードを登録する一連の処理を示したシーケンス図である。ステップＳ８０１において、クライアント装置１０１は、通信部４０２を介して非同期処理コード管理アプリケーション７００に非同期処理コード登録リクエストを送信する。非同期処理コード登録リクエストとして非同期処理コード管理アプリケーション７００に送信されるレコードの一例を表７の非同期処理コード登録リクエストレコードに示す。
【００４２】
［表７］非同期処理コード登録リクエストレコード
非同期処理コード    非同期処理コード    実行対象    実行対象イベント  実行環境ID
ファイル名      ファイルパス                              
＜バイナリデータ＞  asyncproc1.zip    logdata/client1    追加            ２。
【００４３】
非同期処理コードカラムは、非同期処理コードの実体をバイナリデータで格納するカラムである。非同期処理コードファイル名カラムは、非同期処理コードのファイル名を格納するカラムである。実行対象ファイルパスカラムは、非同期処理コードを実行する対象となるファイルサーバ１０２上のファイルパスを格納するカラムである。非同期処理コード実行管理アプリケーション７１０はファイルサーバ１０２から受信するイベントに含まれるファイルパスを参照し、このカラムに可能されたパスと一致した場合に非同期処理コードを実行すべきイベントであると判別することになる。実行対象イベントカラムは、ファイルサーバ１０２上の実行対象ファイルパスに格納されたファイルに対して、非同期処理コードを実行する対象とする操作を格納するカラムである。実行環境ＩＤカラムは、非同期処理コードを実行する実行環境に該当する実行環境設定テーブルのＩＤカラムの値を格納するカラムである。例えば、表７に示す非同期処理コード登録リクエストレコードの場合、ファイルサーバ１０２のｌｏｇｄａｔａ／ｃｌｉｅｎｔ１フォルダ以下にファイルが追加された場合に実行される非同期処理コードを登録するためのリクエストという意味となる。
【００４４】
ステップＳ８０２において、非同期処理コード実行管理アプリケーション７１０は、通信部７０１が受信した非同期処理コード登録リクエストレコードから非同期処理コード管理レコードを生成して、非同期処理保存部７０３の非同期処理コード管理テーブルに格納する。非同期処理コード管理レコードのファイル名カラムには非同期処理コード登録リクエストレコードの非同期処理コードファイル名カラムの値が格納される。非同期処理コード管理レコードのファイルデータカラムには非同期処理コード登録リクエストレコードの非同期処理コードカラムのバイナリデータが格納される。
【００４５】
ステップＳ８０３において、非同期処理コード実行管理アプリケーション７１０は、イベント設定レコードを生成して、非同期処理設定保存部７０４のイベント設定テーブル（たとえば表５）に格納する。イベント設定レコードの対象ファイルパスカラムには、非同期処理コード登録リクエストレコードの実行対象ファイルパスカラムの値が格納される。イベント設定レコードの対象イベントカラムには、非同期処理コード登録リクエストレコードの実行対象イベントカラムの値が格納される。イベント設定レコードの非同期処理コードＩＤカラムには、ステップＳ８０２で非同期処理保存部７０３の非同期処理コード管理テーブルに各王して非同期処理コード管理レコードのＩＤカラムの値が格納される。イベント設定レコードの実行環境ＩＤカラムには、非同期処理コード登録リクエストレコードの実行環境ＩＤカラムの値が格納される。以上の一連の処理によって、非同期処理コード実行管理アプリケーション７１０に非同期処理コードが登録されることになる。
【００４６】
●非同期処理コードの実行
図９Ａ、図９Ｂは、本実施例において非同期処理コードが起動して、完了するまでの一連の処理を示したシーケンス図である。図９Ａと図９Ｂは併せてひとつのシーケンスを表している。図９、図９Ｂで説明する非同期処理コードは、クライアント装置１０１がファイルサーバ１０２へのファイルの新規登録操作をイベントとして起動し、新規登録されたファイルの属性情報を抽出してファイルサーバ１０２のファイル管理部５０２に登録する処理を実行するものとする。もちろんこれはトリガやイベント駆動型コンピューティングサービスの一例であって、他のイベントをトリガとし、他の処理をサービスとしてもよいことはもちろんである。
【００４７】
ステップＳ９０１において、クライアント装置１０１は通信部４０１を介して情報収集集部４０２がファイルとして出力したログ情報を登録するファイルアップロードリクエストをファイルサーバ１０２に送信する。ファイルアップロードリクエストとしてファイルサーバ１０２に送信されるレコードの一例を表８のファイルアップロードリクエストレコードに示す。
【００４８】
［表８］ファイルアップロードリクエスト
ファイルデータ          ファイル名            アップロード先フォルダ    
＜バイナリデータ＞  ２０１６０１．ｌｏｇ    ｌｏｇｄａｔａ／ｃｌｉｅｎｔ１。
【００４９】
表９においてファイルデータカラム、送信対象のファイルのバイナリデータを格納するカラムである。ファイル名カラムは、送信対象のファイルの名称を格納するカラムである。アップロード先フォルダカラムは、ファイルのアップロード先となるファイルサーバ１０２に存在するフォルダパスを格納するカラムである。
【００５０】
ステップＳ９０２において、ファイルサーバ１０２は通信部５０１が受信したファイルアップロードリクエストに含まれる各データをファイル保存部５０３のファイル管理テーブルに追加する。ファイルサーバ１０２はファイル保存部５０３への各データの追加が完了すると、通信部５０１を介してクライアント装置１０１にファイルアップロードが完了したことを通知するレスポンスを送信する。
【００５１】
ステップＳ９０３において、ファイルサーバ１０２はファイルのアップロードが完了したことを示すイベントを生成して、通信部５０１を介して非同期処理コード実行管理アプリケーション７１０に通知する。ファイルアップロード完了イベントとして、非同期処理コード実行管理アプリケーション７１０に送信されるレコードの一例を表９のファイルアップロード完了イベントに示す。
【００５２】
［表９］ファイルアップロード完了イベント
ファイルパス                          イベント種別
ｌｏｇｄａｔａ／ｃｌｉｅｎｔ１／２０１６０１．ｌｏｇ        追加。
【００５３】
表９においてファイルパスカラムは、イベントを生成するきっかけとなったファイルのファイルサーバ１０２でのファイルパスを格納するカラムである。イベント種別カラムは、ファイルパスカラムに格納されたファイルパスに保存されているファイルサーバ１０２のファイルに対して行われた操作内容を格納するカラムである。ファイルサーバ１０２は、ステップＳ９０１でクライアント装置１０１からファイルを新規にアップロードされたため、この場合には「追加」の値が入る。
【００５４】
ステップＳ９０４において、非同期処理コード実行管理アプリケーション７１０は、通信部７１１を介して受信したファイルアップロード完了イベントの内容を非同期処理コード実行管理部７１２で確認する。まず、非同期処理コード実行管理部７１２はファイルアップロード完了イベントのファイルパスカラムの値からファイル名を除いたフォルダパスと、イベント種別カラムの値を取得する。次に非同期処理コード実行管理部７１２は通信部７１１を介して、非同期処理コード管理アプリケーション７００の非同期処理コード設定保存部７０４のイベント設定テーブルを参照し、対象ファイルパスカラムの値と対象イベントカラムの値の組み合わせと、フォルダパスとイベント種別カラムの値の組み合わせと一致するレコードを検索し、該当するレコードがあればそれを取得する。該当するレコードが無ければ、通知されたイベントをトリガとする非同期処理は設定されていないと判断できる。その場合にはステップＳ９０４を最後に、本シーケンスを終了させてよい。
【００５５】
該当するレコードがあれば、ステップＳ９０５において、非同期処理コード実行管理部７１２はステップＳ９０４で取得したイベント設定レコードをもとにステップＳ９０４で受信したイベントに対応する非同期処理コードを非同期処理コード管理アプリケーション７００から取得する。非同期処理コード実行管理部７１２は、イベント設定レコードの非同期処理コードＩＤカラムの値が一致するレコードを非同期処理コード保存部７０３の非同期処理コード管理テーブルから検索し、ファイルデータカラムに格納された非同期処理コードのバイナリデータを取得する。
【００５６】
ステップＳ９０６において、非同期処理コード実行管理部７１２はステップＳ９０５で取得した非同期処理コードを実行するための設定を非同期処理コード管理アプリケーション７００から取得する。非同期処理コード実行管理部７１２は、イベント設定レコードの実行環境ＩＤカラムの値が一致するレコードを非同期処理コード保存部７０３の実行環境設定テーブル（表４）から検索し、取得する。
【００５７】
ステップＳ９０７において、非同期処理コード実行管理部７１２はステップＳ９０６で取得した実行環境設定レコードに基づく性能の非同期処理実行環境７２０の仮想マシンを作成し、起動する。
【００５８】
ステップＳ９０８において、非同期処理コード実行管理部７１２は通信部７１１を介して非同期処理実行環境７２０の記憶装置３０３にステップＳ９０５で取得した非同期処理コードを配備する。
【００５９】
ステップＳ９０９において、非同期処理コード実行部７１３は通信部７１１を介して非同期処理実行環境７２０の実行部７２２に非同期処理コード実行リクエストを送信する。実行部７２２は非同期処理コード実行リクエストを受信するとステップＳ９０８で受信した非同期処理コードをＲＡＭ３０２に読み込み非同期処理コードの実行を開始する。非同期処理コード実行リクエストとして、実行部７２２に送信される非同期処理コード実行リクエストレコードの一例を表１０に示す。
【００６０】
［表１０］非同期処理コード実行リクエストレコード
ファイルパス                      イベント設定ＩＤ
ｌｏｇｄａｔａ／ｃｌｉｅｎｔ１／２０１６０１．ｌｏｇ      １
表１０においてファイルパスカラムは、非同期処理コードの処理対象であるファイルのファイルサーバ１０２上でのパスを格納するカラムである。ステップＳ９０４で受信したファイルアップロード完了イベントレコードのファイルパスカラムの値が格納される。イベント設定ＩＤカラムには、非同期処理コード実行管理アプリケーション７１０が、ステップＳ９０４で取得したイベント設定レコードのＩＤカラムの値が格納される。
【００６１】
実行部７２２は、非同期処理コードの実行中は実行状況を管理する。実行部７２２が管理する実行状況レコードの一例を表１１に示す。
【００６２】
［表１１］実行状況レコード
ステータス  実行回数  経過時間
実行中      １        １２０。
【００６３】
表１１においてステータスカラムは、実行部７２２が実行している非同期処理コードの実行状況の値を確認するカラムである。ステータスとして取り得る値は非同期処理コードの処理内容によって値の数の増減が考慮される。本実施例においては、非同期処理コードが起動して、終了するまでの間は「実行中」の値をとる。正常に処理が終了した場合には「正常終了」、エラーが発生して終了した場合には「エラー終了」の値をとる。実行回数カラムは、実行部７２２がファイルサーバ１０２で発生したイベントに対して非同期処理コードを実行した回数を格納するカラムである。実行した回数とはたとえばリトライの回数である。経過時間カラムは、実行部７２２が非同期処理コードの実行を開始してから経過した時間を例えば秒単位で格納するカラムである。経過時間カラムの値はステータスカラムの値が「実行中」の間加算され続け、ステータスカラムの値が「正常終了」「エラー終了」となった場合には加算が中断される。また、ステータスカラムの値が「実行中」に再び変化した場合には経過時間カラムの値はリセットされ「０」となる。
【００６４】
ステップＳ９１０において、非同期処理コード実行環境管理部７１４は、ステップＳ９０９で開始した非同期処理の実行状況を確認する監視処理を実行する。
【００６５】
図１０に、ステップＳ９１０において非同期処理コード実行環境管理部７１４が実行する監視処理の詳細なフローチャートを示す。なお本処理はステップＳ９０９で開始した非同期処理と並行して実行され、非同期処理が終了するまで、もしくは非同期処理コード実行環境管理部７１４の実行環境監視項目テーブル（たとえば表６）に登録された監視項目を越えるまで非同期処理コード実行環境管理部７１４によって実行される。
【００６６】
ステップＳ１００１において、非同期処理コード実行環境管理部７１４は、実行環境監視項目テーブルから各実行環境監視項目レコードを取得する。
【００６７】
ステップＳ１００２において、非同期処理コード実行管理部７１４は、非同期処理コード実行環境７２０の実行状況レコードを取得する。
【００６８】
ステップＳ１００３において、非同期処理コード実行管理部７１４は、ステップ１００２で取得した実行状況レコードの経過時間カラムの値とステップＳ１００１で取得した実行環境監視項目レコードの監視項目カラムの値が「実行時間」のレコードの監視項目値カラムの値と比較する。経過時間カラムの値が監視項目値カラムの値よりも小さかった場合には、ステップＳ１００２に戻り、監視を継続する。経過時間カラムの値が監視項目値カラムの値よりも大きかった場合にはステップＳ１００４に進む。
【００６９】
ステップＳ１００４において、非同期処理コード実行管理部７１４は、非同期処理コード実行環境７２０で実行されている処理を中断する。
【００７０】
ステップＳ１００５において、非同期処理コード実行管理部７１４は、ステップＳ１００２で取得した実行状況レコードの実行回数カラムの値とステップＳ１００１で取得した実行環境監視項目レコードの監視項目カラムの値が「リトライ回数」のレコードの監視項目値カラムの値と比較する。実行回数カラムの値が監視項目値カラムの値よりも小さかった場合にはステップＳ１００６に進む。実行回数カラムの値が監視項目値カラムの値と一致した場合には監視処理を終了する。
【００７１】
ステップＳ１００６において、非同期処理コード実行管理部７１４は、非同期処理コード実行環境７２０の実行状況レコードの実行回数カラムの値を１加算する。
【００７２】
ステップＳ１００７において、非同期処理コード実行管理部７１４は、非同期処理コードを再実行する。
【００７３】
以上の一連の処理によって、非同期処理コード実行環境７２０において非同期処理コードが、非同期処理コード実行管理アプリケーション７１０が定めた制限値を超えることなく実行されるように監視される。ステップＳ１００５でリトライ回数が制限値に達していると判定した場合には、それ以上のリトライを行わず、その時点で処理シーケンスを中止してよい。なお本ステップに限らず、非同期処理コードを実行することなく、あるいは中断した状態で図９Ａ，図９Ｂのシーケンスを中止する場合には、その旨を実行履歴に記録してもよい。なお図９ＢにおいてはステップＳ９１０の後でステップＳ９１１、Ｓ９１２が実行されるように記載されているが、これは記載上の便宜のためである。ステップＳ９１１およびステップＳ９１２は、非同期処理コードを実行することで遂行されるステップであり、非同期処理コードの内容に応じた処理となる。またステップＳ９１０による監視は、非同期処理コードの実行中にたとえば定期的に繰り返される。
【００７４】
ステップＳ９１１において、実行部７２２はファイルサーバ１０２からステップＳ９０９で受信した非同期処理コード実行リクエストレコードのファイルパスに該当するファイルを取得する。
【００７５】
ステップＳ９１２において、実行部７２２はステップＳ９１１で取得したファイルから各属性情報を抽出し、ファイル属性情報レコードを生成して、ファイルサーバ１０２のファイル情報保存部６０３のファイル情報管理テーブルに登録する。実行部７２２は、非同期処理コードが正常終了すると非同期処理コード実行管理部７１２に終了通知を送信する。
【００７６】
非同期処理コードの実行が終了すると、ステップＳ９１３において、非同期処理コード実行管理部７１２は、非同期処理実行環境７２０の仮想マシンをシャットダウンし、破棄する。
【００７７】
●非同期処理コードに対する制約による不履行の回避
図８、図９Ａ、図９Ｂ、図１０で示した一連の処理によってファイルサーバ１０２でイベントが発生するたびに、イベント情報管理サーバ１０４において、イベントに対応した非同期処理コードが適宜実行される。しかし、イベントの内容によっては非同期処理コード実行管理アプリケーション７１０が定める実行環境監視項目の制限以内で非同期処理コードの処理が終了せずに、処理が中断されてしまう場合がある。例えば、本実施例においてはクライアント装置１０１がファイルサーバ１０２にアップロードしたファイルのサイズが巨大である一方で、そのファイルに対応して実行される非同期処理コードの実行環境として割り当てられたＣＰＵ、ＲＡＭ、ＨＤＤの各性能値が適切でない場合である。この場合、非同期処理コード実行管理アプリケーション７１０が非同期処理コードを実行しても、ステップＳ１００３において実行時間を超過し、かつＳ１００７の非同期処理の再起動を実行回数の制限値に達するまで繰り返し、処理が中断されることになる。
【００７８】
●本実施形態における非同期処理コード
図１１は、ファイルサーバ１０２から発生するイベントの内容が対応する非同期処理コードの実行環境の性能を大きく超えていた場合に、実行環境をイベントに合わせて動的に変更しつつ、処理を継続することを可能とする非同期処理コードの一連の処理を示したフローチャートである。図１２は、図１１に示すフローチャートの流れで実行される非同期処理コードの擬似コードを示した図である。図１１の非同期処理コードは実行部７２２によって実行される。またハードウェア構成上は、例えば実行部７２２を実現するＣＰＵ３０１により実行される。
【００７９】
ステップＳ１１０１において、非同期処理コードは自身に設定された実行許容時間の値を取得する。実行許容時間とは換言すれば実行時間の上限である。また、ステップＳ９０９において非同期処理コード実行管理アプリケーション７１０から取得した非同期処理コード実行リクエストレコードを取得する。本処理は擬似コードブロック１２０１が該当する。
【００８０】
ステップＳ１１０２において、非同期処理コードは自身の処理の起動時間を計測するタイマーを実行する。本処理は擬似コードブロック１２０２が該当する。
【００８１】
ステップＳ１１０３において、非同期処理コードは自身の処理を開始する。本実施例においてはファイルサーバ１０２から受信したファイルアップロード完了イベントのファイルパスカラムの値が示すパスのファイルを取得し、その属性情報を生成してファイル情報管理テーブルに登録する。本処理は擬似コードブロック１２０３が該当する。
【００８２】
ステップＳ１１０４において、非同期処理コードは自身の処理の実行経過時間を監視して、その値が、ステップＳ１１０１で取得した実行許容時間を超えているかどうか確認する。実行許容時間を越えていない場合には処理を継続する。実行時間の監視結果に従い、実行許容時間を超えている場合は、ステップＳ１１０５に進む。本処理は擬似コードブロック１２０４が該当する。ステップＳ１１０４はたとえば、ステップＳ１１０２で設定したタイマーの満了をもって経過時間が許容時間を超えたと判定してもよい。あるいは、ステップＳ１１０３の実行中に他のタイマー等を用いて定期的に実行してもよい。前者の場合には、たとえばステップＳ１１０５以降はタイマーの満了により起動される別の手順とすればよい。
【００８３】
ステップＳ１１０５において、非同期処理コードはステップＳ１１０３で開始した処理を中断する。
【００８４】
ステップＳ１１０６において、非同期処理コードは実行部７２２を介して、ステップＳ１１０１で取得した非同期処理コード実行リクエストレコードのイベント設定ＩＤカラムの値と一致するＩＤを持つイベント設定レコードを、非同期処理コード設定保存部７０４のイベント設定テーブルから取得する。そして取得したイベント設定レコードの非同期処理コードＩＤカラムの値と実行環境ＩＤカラムの値を取得する。そして新たな上位実行環境で非同期処理コードを実行するための上位実行環境起動リクエストを生成して、非同期処理コード実行管理アプリケーション７１０に送信する。本処理は擬似コードブロック１２０６が該当する。上位実行環境起動リクエストの一例を表１２に示す。
［表１２］上位実行環境起動リクエスト
非同期処理コードＩＤ    上位実行環境ＩＤ        ファイルパス        
１                        ２        logdata/client1/201601.log
表１２において、非同期処理コードＩＤカラムは、新たな上位実行環境で同様の非同期処理コードを実行するために図１１で実行している非同期処理コードのＩＤを格納するカラムである。具体的にはステップＳ１１０６で取得したイベント設定レコードの非同期処理コードＩＤカラムの値を格納する。上位実行環境ＩＤカラムは、新たに非同期処理コードを実行する環境の環境ＩＤを格納するカラムである。具体的には、ステップＳ１１０６で取得したイベント設定レコードの環境ＩＤカラムの値に１インクリメントした値（すなわち１増加させた値）を格納する。ファイルパスカラムは、新たな上位実行環境で実行する非同期処理コードの対象のファイルパスを格納するカラムである。具体的には、ステップＳ１１０６で取得したイベント設定レコードのファイルパスカラムの値を格納する。本例では、実行環境設定テーブル（表４）には、たとえばＩＤ（環境ＩＤ）の値が１から始まる複数の実行環境設定レコードが含まれていることが望ましい。さらに、ＩＤの値が増加するごとに、非同期処理コードを短時間で実行できる環境（すなわち上位の環境）となっていることが望ましい。ステップＳ１１０６では、新たに設定した環境ＩＤが表４の実行環境設定テーブルに登録されているか否かを判定し、登録されている場合に処理を進めてもよい。この場合には、新たに設定した環境ＩＤが表４の実行環境設定テーブルに登録されていないならば、それ以上の環境はないことから、最も処理時間を短縮できる環境においても制限時間内に処理を完了できなかったものとしてたとえばエラー終了としても良い。
【００８５】
ステップＳ１１０７において、非同期処理コード実行管理アプリケーション７１０は、ステップＳ１１０６で実行部７２２から送信された上位実行環境起動リクエストを受信する。そして非同期処理コード実行管理アプリケーション７１０は、上位実行環境起動リクエストに格納された各値に従って新たに非同期処理コード実行環境７２０を生成し、ファイルサーバ１０２から発生したイベントを処理する。
【００８６】
ステップＳ１１０８において、非同期処理コードは、非同期処理コード実行管理アプリケーション７１０に自身の処理の正常終了通知を送信する。非同期処理コードが正常終了通知を送信することで、ステップＳ１１０３で稼働する非同期処理コードが図１０に示す監視処理の対象から除外される。これによりステップＳ９０３で通信部７１１が受信したイベントをトリガとしてステップＳ１１０３で稼働する非同期処理コードと、ステップＳ１１０７で新たに起動する非同期処理コードとが重複して実行されることが回避される。通知を受けた非同期処理コード実行管理アプリケーション７１０は、古い非同期処理コード実行環境７２０を削除する。ステップＳ１１０８の後、実行中の非同期処理コードは終了する。
【００８７】
本例では、ステップＳ１１０２で設定されるタイマー値（許容時間）は、図１０のステップＳ１００３でチェックされる実行時間の上限から、ステップＳ１１０５からステップＳ１１０８までの所要時間を差し引いた時間よりも短いことが望ましい。それは、非同期処理の実行が図１０のステップＳ１００４で中断される前に、ステップＳ１１０５からステップＳ１１０８までの工程を実行して、別の非同期処理を起動するためである。
【００８８】
こうして新たに起動された非同期処理コードも、それを起動した非同期処理コードと同一であるので、実行時間が許容時間を超える場合には、さらに他の非同期処理コードを起動して処理を行うことができる。再起動のたびに実行環境はより高性能化するので、処理をより完了しやすい環境となる。
【００８９】
なお、処理の再起動により、仕掛の処理が重複実行される。しかしながら、たとえば非同期処理の内容が、イベントに関連したファイルから抽出した情報（たとえば属性情報）の保存であれば、同一のイベントに関して保存されるファイルを同一の保存場所に同一の名称で保存することで、ファイルの重複保存を回避できる。
【００９０】
以上の一連の処理によって、最初に検出したシステムイベントに応答して起動され、自動で実行される非同期処理すなわちスクリプトが、その非同期処理コード実行環境７２０で処理を完了できない場合でも、非同期処理コードがエラー終了する前に、新しくより性能の高い非同期処理コード実行環境を起動してイベントに適した環境で非同期処理コードの継続をさせる。これによって、イベントに対して最適な実行環境を動的に非同期処理コードに割り当てて、イベント処理を確実に完了することが可能となる。
【００９１】
なお本実施形態では、イベントをトリガとして実行される非同期処理たとえばスクリプトは、実行環境をより迅速な処理を可能にするものに代えて、同じスクリプトを呼び出している。しかしながら、実行環境を変えずに、非同期処理から別に呼び出す非同期処理コードを、呼び出し側のコードそのものではなく、別なものとしてもよい。この場合には新たに起動される側の非同期処理コードは、より効率的なものとされる。そのためには、たとえばファイルとして保存すべき情報の項目を減らしたり、あるいは情報の加工をやめてそのまま保存するなど、処理内容の変更が含まれることもあり得る。また、非同期処理の環境と起動される非同期処理コードとの両方を、呼び出し側の非同期処理コードとは別のものとしても良い。その場合には、非同期処理コードは、イベント駆動処理の対象となるデータが格納される格納場所に関連付けて登録されているが、実行中の非同期処理コードから起動される他の非同期処理コードは、その格納場所に関連づけることなく登録されていてよい。以上はこの後で説明する第２実施例についても適用可能である。
【００９２】
［第２実施例］
第１実施例は、通信部７１１がステップＳ９０３で受信したイベントに対して起動した非同期処理コードの実行経過時間を監視し、非同期処理実行管理アプリケーション７１０が定める実行時間を超過するおそれがある場合には、非同期処理コードの実行環境をより高いスペックに切り替えることで、イベント処理を確実に処理することを可能とするものであった。一方、本実施例においては、非同期処理コードによるイベント処理が、非同期処理実行管理アプリケーション７１０が定めるリトライ回数を超過する恐れがある場合に、その兆候を事前に察知し、非同期処理コードの実行環境をより高いスペックに切り替えることで、イベント処理を確実に処理することを可能とする方法を示す。
【００９３】
図１３は、非同期処理コードの一連の処理を示したフローチャートである。この非同期処理コードは、ファイルサーバ１０２から発生するイベントの内容が非同期処理コードの実行環境の性能を大きく超えていた場合に、非同期処理コードのリトライ回数によってその兆候を察知する。そしてその兆候を察知した場合には、実行環境をイベントに合わせて動的に変更しつつ、処理を継続することを可能とする。図１４は、図１３に示すフローチャートの流れで実行される非同期処理コードの擬似コードを示した図である。
【００９４】
ステップＳ１３０１において、非同期処理コードは、ファイル情報サーバ１０３のファイル情報管理部の非同期処理コード起動制限テーブルを参照して、非同期処理コードが同一のイベントに対して実行が可能な起動制限回数を取得する。本処理は擬似コードブロック１４０１が該当する。非同期処理コード起動制限テーブルに格納されるデータの一例を表１３の非同期処理コード起動制限テーブルに示す。
［表１３］非同期処理コード起動制限テーブル
非同期処理コードＩＤ    起動制限回数
１                    ４。
【００９５】
非同期処理コードＩＤカラムは、非同期処理コード管理テーブル（たとえば表３）のＩＤカラムの値を格納するカラムである。起動制限回数カラムは、非同期処理コードが同一のイベントに対する起動回数の制限値を格納するカラムである。この値は非同期処理コード実行環境管理部７１４が管理する実行環境監視項目テーブル（たとえば表６）の監視項目カラムの値が「リトライ回数」のレコードの「監視項目値」カラムの値よりも少なく設定される。
【００９６】
ステップＳ１３０２において、非同期処理コードは、実行部７２２が管理する実行状況レコードの実行回数カラムの値を参照して、通信部７１１がステップＳ９０３で受信したイベントに対する自身の非同期処理コード実行回数を確認する。本処理は擬似コードブロック１４０２が該当する。そして、非同期処理コードはステップＳ１３０１で取得した起動制限回数カラムの値と、ステップＳ１３０２で取得した実行回数カラムの値とを比較して、実行回数カラムの値が起動制限回数カラムの値よりも少なかった場合にはステップＳ１３０３に進み、それ以外の場合にはステップＳ１３０４に進む。本処理は擬似コードブロック１４０３が該当する。
【００９７】
ステップＳ１３０３において、非同期処理コードは自身の処理を開始する。この際に、実行部７２２が管理する実行状況レコードの実行回数カラムの値を１だけインクリメントして更新する。本実施例においてはファイルサーバ１０２から受信したファイルアップロード完了イベントのファイルパスカラムの値が示すパスのファイルを取得し、その属性情報を生成してファイル情報管理テーブルに登録する。本処理は擬似コードブロック１４０４が該当する。なお、この開始された処理においてタイムアウトした場合には、同じ実行環境において自動的にリトライ処理（再度、Ｓ１３０１から開始）されることになる。
【００９８】
ステップＳ１３０４において、非同期処理コードは自身の実体的な処理を中断する。非同期処理自体は続行される。この段階で実体的な処理は行われていないのであればステップＳ１３０４はスキップしてもよい。ステップＳ１３０５からステップＳ１３０７までの一連の処理は、図１１に示すステップＳ１１０６からステップＳ１１０８と同様の処理のため説明を省略する。
【００９９】
以上の一連の処理によって、最初にイベントを受信して起動した非同期処理コード実行環境７２０で非同期処理コードが、非同期処理コード実行管理アプリケーション７１０が定めるリトライ回数の制限値に達する前に、新しくより性能の高い非同期処理コード実行環境を起動してイベントに適した環境で非同期処理コードの継続をさせる。これによって、イベントに対して最適な実行環境を動的に非同期処理コードに割り当てて、イベント処理を確実に完了することが可能となる。
【０１００】
［第３実施例］
第１実施例および第２実施例では、イベントに対してまず初めに共通して実行される非同期処理コードとその実行環境を割り当てることを前提としていた。その中で、想定した実行環境ではイベント処理を完了できない兆候を事前に察し、非同期処理コードの実行環境をより高いスペックに切り替えることで、イベント処理を確実に処理することを可能とするものである、本実施例においては、イベントに対して実行環境を生成する前にイベントの内容を確認して、特定の条件に該当するイベントに対しては最初から適した実行環境を生成することでイベント処理を確実に処理することを可能とする方法を示す。
【０１０１】
図１５に、図９のＳ９０７において、非同期処理コード実行管理部７１２が非同期処理コードの実行環境を構築する際に、イベントの内容を判別し、それに適した実行環境を生成する際の一連の処理を示したフローチャートである。
【０１０２】
ステップＳ１５０１において、非同期処理コード実行管理部７１２は、非同期処理コード管理アプリケーション７００の非同期処理設定保存部７０４から取得した拡張イベント設定レコードを参照する。拡張イベント設定レコードの一例を表１４の拡張イベント設定テーブルに示す。
［表１４］拡張イベント設定テーブル
ID  対象ファイルパス  対象イベント  非同期処理コードID  実行環境ID  条件ID
１    logdata/client1/      追加              １                ２        １
２                                            １                ３
３                                            １                ４
４    logdata/client2/      更新              ２                ３
表１４において拡張イベント設定レコードは、第１実施例および第２実施例におけるイベント設定テーブル（例えば表５）のレコードに本実施例が示す方法を実現するための情報を追加したレコードである。ＩＤカラムは、非同期処理コード管理アプリケーション７００において、非同期処理コードの実行対象となるイベントを一意に識別するための値を格納するカラムである。対象ファイルパスカラムは、非同期処理コードを実行する対象のファイルパスを格納するカラムである。対象イベントカラムは、非同期処理コードを実行する条件となる対象ファイルパスカラムに格納されたファイルパスに該当するファイルに対して実行された操作の内容を格納するカラムである。非同期処理コードＩＤカラムは、実行する非同期処理コードに該当する非同期処理コード管理テーブルのＩＤカラムの値を格納するカラムである。実行環境ＩＤカラムは非同期処理コードを実行する環境に該当する実行環境設定テーブルのＩＤカラムの値を格納するカラムである。条件ＩＤカラムは、対象となるイベントの内容によって異なる実行環境の候補が存在する場合にその条件レコードを条件テーブルから一意に識別するＩＤを格納するカラムである。条件レコードのデータの一例を表１５の条件テーブルに示す。
［表１５］条件テーブル
条件ＩＤ    推奨実行環境ＩＤ    条件項目            条件値      
１              ３          ファイルサイズ    ２０４８ＫＢ以上
表１５において条件ＩＤカラムは、非同期処理コード管理アプリケーション７００において、条件レコードを一意に識別するための値を格納するカラムである。推奨実行環境カラムは、イベントに応じた非同期処理コードを実行する際に推奨の実行環境に該当する実行環境設定テーブルのＩＤカラムの値を格納するカラムである。条件項目カラムは、推奨実行環境ＩＤカラムの値に対応する実行環境設定で非同期処理コードを実行することを許可する条件の項目名を格納するカラムである。条件値カラムは、条件項目カラムの値に対応する具体的な条件値を格納するカラムである。表１５に示したレコードを例にすると、受信したイベントの対象となるファイルのファイルサイズが２０４８ＫＢ以上であった場合、対応する非同期処理コードは実行環境設定テーブルのＩＤカラムの値が３の環境で実行されることを意味する。
【０１０３】
そして、ステップＳ１５０１において、非同期処理コード実行管理部７１２は、表１４の拡張イベント設定レコードの条件ＩＤカラムの値を参照し、値が設定されていればその値に該当する条件レコードを非同期処理設定保存部７０４から取得する。次に非同期処理コード実行管理部７１２は、拡張イベント設定レコードの対象ファイルパスカラムの値に対応するファイル情報のファイルサイズをファイル保存部５０３のファイル管理テーブルから取得する。最後に取得したフィルサイズの値と条件レコードの条件値カラムの値とを比較して、条件レコードに記述された条件が満たされている場合にはステップＳ１５０３に進む。条件が満たされない場合にはステップＳ１５０２に進む。
【０１０４】
ステップＳ１５０２において、非同期処理コード実行管理部７１２は拡張イベント設定レコードの実行環境ＩＤカラムの値を参照し、実行環境設定テーブルのＩＤカラムの値が一致するレコードを取得する。
【０１０５】
ステップＳ１５０３において、非同期処理コード実行管理部７１２は、条件を満たした条件レコードの推奨実行環境ＩＤカラムの値を参照し、実行環境設定テーブルのＩＤカラムの値が一致するレコードを取得する。
【０１０６】
ステップＳ１５０４において、非同期処理コード実行管理部７１２はステップＳ１５０２あるいはステップＳ１５０３で取得した実行環境設定レコードの値にしたがって実行環境７２０を生成する。
【０１０７】
以上の一連の処理によって、イベントに対しては最初からその処理に適した実行環境が生成され、イベント処理を確実に処理することを可能となる。
【０１０８】
［その他の実施例］
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【符号の説明】
【０１０９】
１０１：クライアント装置、１０２：ファイルサーバ、１０３：ファイル情報管理サーバ、１０４：イベント情報管理サーバ
【図１】
2018072944.tif 000003
【図２】
2018072944.tif 000004
【図３】
2018072944.tif 000005
【図４】
2018072944.tif 000006
【図５】
2018072944.tif 000007
【図６】
2018072944.tif 000008
【図７】
2018072944.tif 000009
【図８】
2018072944.tif 000010
【図９Ａ】
2018072944.tif 000011
【図９Ｂ】
2018072944.tif 000012
【図１０】
2018072944.tif 000013
【図１１】
2018072944.tif 000014
【図１２】
2018072944.tif 000015
【図１３】
2018072944.tif 000016
【図１４】
2018072944.tif 000017
【図１５】
2018072944.tif 000018