(57)【要約】【課題】イベント駆動型コンピューティングサービスにおいてプログラムコードによる処理が失敗したファイルを特定し、リカバリ処理を可能とするプログラムを提供する。【解決手段】データ処理のコードを実行する実行サービスにおいて実行される監視用のコードを含むプログラムであって、前記データ処理の対象であって該データ処理が完了していないファイルを特定するファイル情報を取得する取得工程と、前記ファイルのアップロード先として発行されたファイルパスの有効期限が経過したか判定する第１判定工程と、前記データ処理のコードを実行する際に記録される前記ファイルに係るログの有無を判定する第２判定工程と、前記有効期限を経過し、かつ前記ログが無いと判定されたファイルを、前記データ処理が失敗したファイルとして特定する特定工程と、をコンピュータに実行させるための監視用のコードを含む。【選択図】図１２
2018097822.tif 000002
【特許請求の範囲】
【請求項１】
データ処理のコードを実行する実行サービスにおいて実行される監視用のコードを含むプログラムであって、
前記データ処理の対象であって該データ処理が完了していないファイルを特定するファイル情報を取得する取得工程と、
前記ファイルのアップロード先として発行されたファイルパスの有効期限が経過したか判定する第１判定工程と、
前記データ処理のコードを実行する際に記録される前記ファイルに係るログの有無を判定する第２判定工程と、
前記有効期限を経過し、かつ前記ログが無いと判定されたファイルを、前記データ処理が失敗したファイルとして特定する特定工程と、をコンピュータに実行させるための監視用のコードを含むことを特徴とするプログラム。
【請求項２】
前記監視用のコードは、さらに、前記データ処理が失敗したファイルとして特定されたファイルの該データ処理を実行する実行工程をコンピュータに実行させることを特徴とする請求項１に記載のプログラム。
【請求項３】
前記実行工程において、前記データ処理を実行する前に、前記ファイルに係る処理開始を示すログを記録することを特徴とする請求項２に記載のプログラム。
【請求項４】
前記実行工程において、前記データ処理が失敗したファイルとして特定されたファイルの該データ処理を実行するために、該データ処理のコードを前記実行サービスに実行させるためのトリガをかけることを特徴とする請求項２または３に記載のプログラム。
【請求項５】
前記監視用のコードは、さらに、前記ファイルのアップロード先として発行されたファイルパスに該ファイルが存在するか判定する第３判定工程をコンピュータに実行させ、
前記特定工程において、前記有効期限を経過し、かつ前記ファイルパスに前記ファイルが存在せず、かつ前記ログが無いと判定されたファイルを、前記データ処理が失敗したファイルとして特定することを特徴とする請求項１乃至４のいずれか１項に記載のプログラム。
【請求項６】
データ処理のコードと監視用のコードを実行する実行サービスと、ストレージサービスと、データベースサービスとを含むシステムであって、
前記ストレージサービスは、
ファイルのアップロード要求に応じて、有効期限付きでファイルパスを発行する発行手段と、
前記ファイルがアップロードされた場合に、前記実行サービスに前記データ処理のコードの実行を要求する要求手段と、有し、
前記データベースサービスは、前記ファイルパスと、前記ファイルを特定する情報と、前記データ処理のコードを実行する際に記録される該ファイルに係るログとを関連付けて管理する管理手段と、を有し、
前記実行サービスにより前記データ処理のコードが実行された場合には、
前記データ処理の対象であるファイルに係る処理開始を示すログが記録され、該ログが記録された後に、該ファイルの該データ処理が実行され、
前記実行サービスにより前記監視用のコードが実行された場合には、
前記データ処理の対象であって該データ処理が完了していないファイルを特定する情報が取得され、
前記ファイルのアップロード先として発行されたファイルパスの有効期限が経過したか判定され、
前記データ処理のコードを実行する際に記録される前記ファイルに係るログの有無が判定され、
前記有効期限を経過し、かつ前記ログが無いと判定されたファイルが、前記データ処理が失敗したファイルとして特定されることを特徴とするシステム。
【請求項７】
前記実行サービスにより前記監視用のコードが実行された場合には、
前記データ処理が失敗したファイルとして特定されたファイルの該データ処理が実行されることを特徴とする請求項６に記載のシステム。
【請求項８】
前記実行サービスにより前記監視用のコードが実行され、前記データ処理が失敗したファイルとして特定されたファイルの該データ処理が実行される場合に、
該データ処理のコードを前記実行サービスに実行させるためのトリガをかけることを特徴とする請求項７に記載のシステム。
【請求項９】
前記実行サービスにより前記監視用のコードが実行された場合には、
前記ファイルのアップロード先として発行されたファイルパスに該ファイルが存在するか判定され、
前記有効期限を経過し、かつ前記ファイルパスに前記ファイルが存在せず、かつ前記ログが無いと判定されたファイルが、前記データ処理が失敗したファイルとして特定されることを特徴とする請求項６乃至８のいずれか１項に記載のシステム。
【請求項１０】
前記実行サービスにより実行された前記データ処理のコードによる処理に失敗したことを検出する監視サービスをさらに有することを特徴とする請求項６乃至９のいずれか１項に記載のシステム。
【請求項１１】
前記監視用のコードは、前記実行サービスにより定期的に実行される、ことを特徴とする請求項６乃至１０のいずれか１項に記載のシステム。
【請求項１２】
前記ストレージサービスは、さらに、前記ファイルパスを発行したファイルと、該ファイルに係るデータ処理の実行状況を示す情報とを関連付けて管理する管理手段を有し、
前記実行サービスにより前記データ処理のコードが実行された場合には、
前記データ処理の対象であるファイルに係る前記実行状況を示す情報が取得され、
前記実行状況を示す情報が、前記データ処理が開始されたかまたは実行中であることを示す場合、該データ処理を終了する、ことを特徴とする請求項６乃至１１のいずれか１項に記載のシステム。
【請求項１３】
データ処理のコードと監視用のコードを実行する実行サービスと、ストレージサービスと、データベースサービスとを含むシステムの制御方法であって、
前記ストレージサービスが、ファイルのアップロード要求に応じて、有効期限付きでファイルパスを発行する発行工程と、
前記ストレージサービスが、前記ファイルがアップロードされた場合に、前記実行サービスに前記データ処理のコードの実行を要求する要求工程と、
前記データベースサービスが、前記ファイルパスと、前記ファイルを特定する情報と、前記データ処理のコードを実行する際に記録される該ファイルに係るログとを関連付けて管理する管理工程と、を有し、
前記実行サービスにより前記データ処理のコードが実行された場合には、
前記データ処理の対象であるファイルに係る処理開始を示すログが記録され、該ログが記録された後に、該ファイルの該データ処理が実行され、
前記実行サービスにより前記監視用のコードが実行された場合には、
前記データ処理の対象であって該データ処理が完了していないファイルを特定する情報が取得され、
前記ファイルのアップロード先として発行されたファイルパスの有効期限が経過したか判定され、
前記データ処理のコードを実行する際に記録される前記ファイルに係るログの有無が判定され、
前記有効期限を経過し、かつ前記ログが無いと判定されたファイルが、前記データ処理が失敗したファイルとして特定されることを特徴とする制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラム、システム、およびシステムの制御方法に関する。
【背景技術】
【０００２】
近年、各種のクラウドコンピューティングサービスが存在している。クラウドコンピューティングサービスの代表的な例としては、Ａｍａｚｏｎ  Ｗｅｂ  Ｓｅｒｖｉｃｅ（「ＡＷＳ」）、Ｇｏｏｇｌｅ  Ｃｌｏｕｄ  Ｐｌａｔｆｏｒｍ、及びＭｉｃｒｏｓｏｆｔ  Ａｚｕｒｅ（登録商標）が挙げられる。
【０００３】
これらのサービスは、仮想マシンやストレージ等のコンピューティングリソースを、使用した性能や容量に応じて時間単位で課金する形態でサービス提供する。サービスの利用者は、これらのサービスを利用することで自ら物理的な設備を用意しなくても、Ｗｅｂシステム等の情報処理システムを低コストで柔軟に構築することが可能となる。
【０００４】
特許文献１は、データ更新をトリガとしてスクリプトが起動されるイベントドリブン型によるスクリプト起動を行うアプリケーション連携システムを開示している。クラウドコンピューティングサービスにおいても、特定のコンピューティングリソースに対して発生したイベントに応じて、軽量な処理を実行するサービスが提供されている。以下、このようなサービスをイベント駆動型コンピューティングサービスと呼ぶ。イベント駆動型コンピューティングサービスの代表的な例としては、ＡＷＳ  Ｌａｍｂｄａ、Ｃｌｏｕｄ  Ｆｕｎｃｔｉｏｎｓ、およびＡｚｕｒｅ  Ｆｕｎｃｔｉｏｎｓが挙げられる。
【０００５】
これらのサービスでは、クラウドコンピューティングサービスに対して所望の処理を実現するためのプログラムコードを、該プログラムコードを実行する仮想マシンのＣＰＵやメモリ等のスペックを指定して事前に登録する。そして、登録したプログラムコードは、コンピューティングリソースと該コンピューティングリソースに対して発生する特定のイベントとに関連付けられる。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００４−３８７５９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、イベント駆動型コンピューティングサービスでは、イベントが発生した場合であっても、該イベントに関連付けられたプログラムコードが実行されない場合がある。具体的には、プログラムコードを実行する仮想マシンがイベントを検知（受信）できず、所望の処理が実行されない場合がある。
【０００８】
プログラムコードが実行されない場合、アプリケーションのログが残らず、また、クラウドコンピューティングサービスの１つであるモニタリングサービス等を利用していた場合であっても、プログラムコードが実行されない場合は、同様にログが残らない。このため、システム運用者は上述したエラーに気付くことができない。
【０００９】
本発明は、イベント駆動型コンピューティングサービスにおいてプログラムコードによる処理が失敗したファイルを特定し、リカバリ処理を可能とするプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１０】
本発明の一実施形態のプログラムは、データ処理のコードを実行する実行サービスにおいて実行される監視用のコードを含むプログラムであって、前記データ処理の対象であって該データ処理が完了していないファイルを特定するファイル情報を取得する取得工程と、前記ファイルのアップロード先として発行されたファイルパスの有効期限が経過したか判定する第１判定工程と、前記データ処理のコードを実行する際に記録される前記ファイルに係るログの有無を判定する第２判定工程と、前記有効期限を経過し、かつ前記ログが無いと判定されたファイルを、前記データ処理が失敗したファイルとして特定する特定工程と、をコンピュータに実行させる。
【発明の効果】
【００１１】
本発明のプログラムによれば、イベント駆動型コンピューティングサービスにおいてプログラムコードによる処理が失敗したファイルを特定し、リカバリ処理を可能とする。
【図面の簡単な説明】
【００１２】
【図１】システムの構成例を示す図である。
【図２】クライアント装置のハードウェア構成例を示す図である。
【図３】仮想マシンを実行する情報処理装置のハードウェア構成例を示す図である。
【図４】クライアント装置のソフトウェア構成例を示す図である。
【図５】ファイルサーバのソフトウェア構成例を示す図である。
【図６】ファイル情報管理サーバのソフトウェア構成例を示す図である。
【図７】イベント情報管理サーバのソフトウェア構成例を示す図である。
【図８】実行結果管理サーバのソフトウェア構成例を示す図である。
【図９】非同期処理コードを登録する処理を説明するシーケンス図である。
【図１０】イベント発生から非同期処理コードの実行までを説明する図である。
【図１１】イベント発生から非同期処理コードの実行までを説明する図である。
【図１２】監視処理およびリカバリ処理を説明するフローチャートである。
【図１３】監視処理およびリカバリ処理の応用例を説明するフローチャートである。
【図１４】イベント発生に応じた非同期処理コードを実行する処理を示す図である。
【図１５】監視処理およびリカバリ処理を説明するフローチャートである。
【発明を実施するための形態】
【００１３】
以下、本発明を実施するための形態について図面などを参照して説明する。
【００１４】
（第１実施形態）
図１は、本発明におけるシステムの構成例を示す図である。
本発明におけるシステムは、ネットワーク１００を介して接続されるクライアント装置１０１、ファイルサーバ１０２、ファイル情報管理サーバ１０３、イベント情報管理サーバ１０４、および実行結果管理サーバ１０５から構成される。
【００１５】
ネットワーク１００は、各装置間で通信を行うための基盤であって、イントラネット、インターネット、またはその他のネットワークシステムであっても構わない。なお、本実施形態では、クライアント装置１０１とその他の装置との間は、インターネットによって接続されるものとして説明する。
【００１６】
クライアント装置１０１は、図１に示すブロック図の各構成要素のうち、ネットワーク１００を介してファイルサーバ１０２、ファイル情報管理サーバ１０３と相互に接続する。本実施例では、クライアント装置１０１は、例えば、パーソナルコンピュータ（ＰＣ）とする。なお、クライアント装置１０１は、ＰＣに限らず、ネットワーク１００に接続された各種デバイスやコンピュータ端末、モバイル端末等、ネットワーク１００を介した通信機能を有する端末であれば種別は問わない。
【００１７】
ファイルサーバ１０２は、クライアント装置１０１から送信されるファイルの実体を受信し、保存するストレージサービスとして機能する。ファイルサーバ１０２は、クライアント装置１０１から送信される様々なフォーマットのファイルを保存する。ファイル情報管理サーバ１０３は、ファイルサーバ１０２上に保存されるファイルのファイル情報を管理する。
【００１８】
ファイル情報とは、例えば、ファイルサーバ１０２上のファイルの実体の保存場所情報（ＵＲＬ等）や、クライアント装置１０１から該保存場所へのファイルアップロードの有効期限等を含むファイル格納情報である。また、ファイル情報は、該ファイルに対するデータ処理の結果、抽出された属性情報等を含む。
【００１９】
イベント情報管理サーバ１０４は、イベント駆動型コンピューティングサービスにおけるプログラムコードの管理および実行を行う実行サービスとして機能する。イベント駆動型コンピューティングサービスの利用者は、事前にイベント情報管理サーバ１０４にプログラムコードとそれを実行するトリガとなるファイルサーバ１０２上で発生するイベントとを関連付けて登録する。
【００２０】
イベントとは、ファイルサーバ１０２で保存されるファイルに対してクライアント装置１０１、または図１に示したその他の装置が行う操作を指す。具体的には、「ファイルサーバ１０２の所定のパスへのファイルのアップロード」や「ファイルサーバ１０２の所定のパスに保存されるファイルの更新」等の操作のことである。また、プログラムコードは、実行する仮想マシン環境の設定情報とも関連付けて登録される。仮想マシン環境の設定情報とは、具体的には、仮想マシンで稼働するＣＰＵやＲＡＭの性能情報のことである。
【００２１】
このように、利用者が指定したプログラムコード、イベント、および該プログラムコードを実行する仮想マシン環境の設定情報を関連付けて登録しておく。これにより、イベント情報管理サーバ１０４は、ファイルサーバ１０２でイベントが発生したことに応じてファイルサーバ１０２で実行される処理とは非同期に所定のプログラムコードを実行する。以下、イベント情報管理サーバ１０４が、ファイルサーバ１０２で発生するイベントに応じて実行するプログラムコードを非同期処理コードと呼称する。
【００２２】
実行結果管理サーバ１０５は、イベント情報管理サーバ１０４から送信される非同期処理コードのログファイルを保存するデータベースサービスとして機能する。実行結果管理サーバ１０５は、ファイルサーバ１０２に保存されるファイルの保存場所（ファイルパス）と、該ファイルを特定する情報と、該ファイルに対して非同期処理コードによるデータ処理が実行される際に記録されるログファイルとを関連付けて管理する。
【００２３】
なお、図１に示したファイルサーバ１０２、ファイル情報管理サーバ１０３、イベント情報管理サーバ１０４、および実行結果管理サーバ１０５は、クラウドコンピューティングサービスとして提供されるものである。これら各装置は、図３に示す情報処理装置３０５の各ハードウェア要素が仮想マシンソフトウェアによって、アプリケーションソフトウェアとしてそれぞれ実現され、物理ハードウェア要素と同様の挙動をとるものとする。
【００２４】
各装置は、クラウドコンピューティングサービス側が管理するデータセンターのハードウェア資源上に構築される。なお、情報処理装置３０５は、１台の情報処理装置として示されているが１台以上の情報処理装置で構成されてもよい。また、本発明におけるシステムは、例えば、仮想マシンやストレージ等のクラウドコンピューティングサービスが提供するコンピューティングリソースや各アプリケーションのモニタリングを実行するサーバ装置を有していてもよい。
【００２５】
該モニタリングサービスを提供する装置も、クラウドコンピューティングサービス側が管理するデータセンターのハードウェア資源上に構築される。モニタリングサービスの代表的な例としては、ＡＷＳ  ＣｌｏｕｄＷａｔｃｈ等が挙げられる。
【００２６】
図２は、クライアント装置１０１のハードウェア構成例を示す図である。
システムバス２００は、クライアント装置１０１を構成する各ハードウェアを相互に接続するバスである。本実施形態においては、特に言及しない限り、システムバス２００は、ＣＰＵ２０１からの制御命令をシステムバス２００に接続された各ハードウェアに伝播させるものとする。
【００２７】
ＣＰＵ２０１は、ＲＡＭ２０２および記憶装置２０３から読み込んだプログラムを実行し、本発明を実現するためにシステムバス２００で接続されたクライアント装置１０１の各ハードウェアを直接的あるいは間接的に制御する。ＲＡＭ２０２は、ＣＰＵ２０１が動作するためのワーク領域として利用される一時メモリ領域である。記憶装置２０３は、基本ソフトウェアであるＯＳやその他ソフトウェアモジュールが記憶されているＨＤＤに代表されるような外部記憶装置である。
【００２８】
ネットワーク装置２０４は、ネットワーク１００に接続して他の装置と通信を行うハードウェアである。入出力インタフェース２０５は、入出力装置２０６と接続するためのインタフェースである。入出力インタフェース２０５は、例えば、ＰＳ２やＵｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ（ＵＳＢ）、アナログやデジタルのディスプレイインタフェースを備える。
【００２９】
入出力装置２０６は、入出力インタフェース２０５を介してクライアント装置と接続し、情報のインプットおよびアウトプットを行う装置である。入出力装置２０６は、例えば、ディスプレイ、キーボード、またはマウスなどである。
【００３０】
図３は、図１に示す各装置を実現する仮想マシンソフトウェアを実行する情報処理装置のハードウェア構成例を示すブロック図である。
仮想マシンソフトウェアを実行する情報処理装置３０５は、例えば、データセンターに設置されている。
【００３１】
システムバス３００は、ファイルサーバ１０２、ファイル情報管理サーバ１０３、イベント情報管理サーバ１０４、及び実行結果管理サーバ１０５等の論理サーバを構成する各ハードウェアを相互に接続するバスである。本実施形態においては、特に言及しない限り、システムバス３００は、ＣＰＵ３０１からの制御命令を、システムバス３００に接続された各ハードウェアに伝播させるものとする。
【００３２】
ＣＰＵ３０１は、ＲＡＭ３０２および記憶装置３０３から読み込んだプログラムを実行し、システムバス３００で接続された情報処理装置３０５の各ハードウェアを直接的あるいは間接的に制御する。ＲＡＭ３０２は、ＣＰＵ３０１が動作するためのワーク領域として利用される一時メモリ領域である。記憶装置３０３は、基本ソフトウェアであるＯＳやその他ソフトウェアモジュールが記憶されているＨＤＤに代表されるような外部記憶装置である。
【００３３】
ネットワーク装置３０４は、ネットワーク１００に接続して他の装置と通信を行うハードウェアである。なお、図１に示す各装置は、仮想マシンソフトウェアによって提供されるハードウェアではなく、図３で示した情報処理装置３０５のハードウェアで構成しても構わない。
【００３４】
図４は、本実施形態におけるクライアント装置１０１上で動作するクライアント装置情報を送信するアプリケーション４００のソフトウェア構成例を示す図である。
アプリケーション４００は、クライアント装置１０１の記憶装置２０３に格納され、ＣＰＵ２０１によって実行される。アプリケーション４００は、通信部４０１、および情報収集部４０２から構成される。通信部４０１は、ネットワーク装置２０４を介してファイルサーバ１０２、およびファイル情報管理サーバ１０３と通信を行う。
【００３５】
情報収集部４０２は、クライアント装置１０１が生成するクライアント装置情報を収集し、ファイルとして記憶装置２０３に保存する。具体的には、クライアント装置１０１が出力するハードウェアのログ情報などを逐次ファイルとして記憶装置２０３に保存する。アプリケーション４００は、通信部４０１を介してファイル情報管理サーバ１０３にファイル情報の登録リクエストを送信する。また、アプリケーション４００は、通信部４０１を介してファイルサーバ１０２にクライアント装置情報を送信する。
【００３６】
図５は、本実施形態におけるファイルサーバ１０２上で動作する格納情報発行アプリケーション５００、およびファイル管理アプリケーション５１０のソフトウェア構成例を示す図である。
格納情報発行アプリケーション５００は、ファイルサーバ１０２の記憶装置３０３に格納され、ＣＰＵ３０１によって実行される。格納情報発行アプリケーション５００は、通信部５０１、および格納情報発行部５０２から構成される。
【００３７】
通信部５０１は、ネットワーク装置３０４を介してファイル情報管理サーバ１０３と通信を行う。格納情報発行部５０２は、通信部５０１を介してファイル情報管理サーバ１０３からリクエストを受信する。格納情報発行部は、有効期限付きでファイルの格納先とするファイルパスをファイル格納情報として発行する。また、格納情報発行部５０２は、ファイル格納情報をファイル管理アプリケーション５１０およびファイル情報管理サーバ１０３に送信する。
【００３８】
ファイル管理アプリケーション５１０は、ファイルサーバ１０２の記憶装置３０３に格納され、ＣＰＵ３０１によって実行される。ファイル管理アプリケーション５１０は、通信部５１１、ファイル管理部５１２、およびファイル保存部５１３から構成される。通信部５１１は、ネットワーク装置３０４を介してクライアント装置１０１、ファイル情報管理サーバ１０３、およびイベント情報管理サーバ１０４と通信を行う。
【００３９】
ファイル管理部５１２は、通信部５１１を介してクライアント装置１０１、イベント情報管理サーバ１０４、および格納情報発行アプリケーション５００からリクエストを受信する。また、ファイル管理部５１２は、通信部５１１を介してイベント情報管理サーバ１０４にイベントを通知する。
【００４０】
ファイル保存部５１３は、ファイル管理部５１２からの指示に従って、クライアント装置１０１から受信したファイルの実体と格納情報発行アプリケーション５００から受信したファイル格納情報を保存する。また、ファイル保存部５１３は、ファイル管理部５１２からの指示に従って、図１に示す各装置からのリクエストに応じたファイルの実体を送信する。以下、ファイル保存部５１３がファイルの実体を管理するデータの一例としてファイル管理テーブル、およびファイル格納情報管理テーブルを示す。
【００４１】
【表１】
2018097822.tif 000003
【００４２】
ファイル管理テーブルは、ＩＤ、保存パス、ファイル名、ファイルサイズ、およびファイルデータのカラムから構成される。ＩＤカラムは、ファイルサーバ１０２が保存するファイルをファイル管理アプリケーション５１０が一意に識別するための値を格納するカラムである。保存パスカラムは、ファイルサーバ１０２におけるファイルの保存先フォルダのパス情報を格納するカラムである。
【００４３】
ファイル名カラムは、ファイルサーバ１０２が保存するファイルの名称を格納するカラムである。ファイルサイズカラムは、ファイルサーバ１０２が保存するファイルのサイズを格納するカラムである。ファイルデータカラムは、ファイルサーバ１０２が保存するファイルの実体となるバイナリデータを格納するカラムである。
【００４４】
【表２】
2018097822.tif 000004
【００４５】
ファイル格納情報管理テーブルは、ＩＤ、クライアントＩＤ、アップロードファイルパス、および有効期限のカラムから構成される。ＩＤカラムは、ファイルサーバ１０２が保存するファイル格納情報をファイル管理アプリケーション５１０が一意に識別するための値を格納するカラムである。クライアントＩＤカラムは、クライアント装置１０１を一意に識別するための値を格納するカラムである。
【００４６】
アップロードファイルパスカラムは、ファイルサーバ１０２にアップロードされるファイルの実体のパス情報を格納するカラムである。有効期限カラムは、ファイルサーバ１０２がクライアント装置１０１からファイルアップロードのリクエストの受信を許可する期限を格納するカラムである。
【００４７】
図６は、本実施形態におけるファイル情報管理サーバ１０３上で動作する格納情報確定アプリケーション６００、およびファイル情報管理アプリケーション６１０のソフトウェア構成例を示す図である。
格納情報確定アプリケーション６００は、ファイル情報管理サーバ１０３の記憶装置３０３に格納され、ＣＰＵ３０１によって実行される。
【００４８】
格納情報確定アプリケーション６００は、通信部６０１、および格納情報確定部６０２から構成される。通信部６０１は、ネットワーク装置３０４を介して、後述するファイル情報管理アプリケーション６１０と通信を行う。格納情報確定部６０２は、通信部６０１を介してファイル情報管理アプリケーション６１０からリクエストを受信する。また、格納情報確定部６０２は、通信部６０１を介してファイルサーバ１０２にファイル格納情報の発行リクエストを送信する。
【００４９】
ファイル情報管理アプリケーション６１０は、ファイル情報管理サーバ１０３の記憶装置３０３に格納され、ＣＰＵ３０１によって実行される。ファイル情報管理アプリケーション６１０は、通信部６１１、ファイル情報管理部６１２、およびファイル情報保存部６１３から構成される。通信部６１１は、ネットワーク装置３０４を介してクライアント装置１０１、およびイベント情報管理サーバ１０４と通信を行う。
【００５０】
ファイル情報管理部６１２は、通信部６１１を介してクライアント装置１０１、およびイベント情報管理サーバ１０４からリクエストを受信する。また、ファイル情報管理部６１２は、通信部６１１を介して格納情報確定アプリケーション６００にファイル格納情報の確定リクエストを送信する。ファイル情報保存部６１３は、ファイル情報管理部６１２からの指示に従って、格納情報確定アプリケーション６００から受信したファイル格納情報を保存する。
【００５１】
また、ファイル情報保存部６１３は、ファイル情報管理部６１２からの指示に従って、ファイルサーバ１０２から受信したファイルの実体から抽出した各属性情報を保存する。各属性情報は、後述するイベント情報管理サーバ１０４が実行する非同期処理コードの実行結果として、ファイル情報保存部６１３に保存される。以下、ファイル情報保存部６１３がファイルの属性情報を管理するデータの一例としてファイル情報管理テーブルを示す。
【００５２】
【表３】
2018097822.tif 000005
【００５３】
ファイル情報管理テーブルは、ＩＤ、アップロードファイルパス、有効期限、ステータス、及び属性のカラムから構成される。ＩＤカラムは、ファイル情報管理サーバ１０３が保存するファイルの属性情報をファイル情報管理アプリケーション６１０が一意に識別するための値を格納するカラムである。アップロードファイルパスカラムは、ファイルサーバ１０２に保存されるファイルの実体のパス情報を格納するカラムである。
【００５４】
有効期限カラムは、ファイルサーバ１０２がクライアント装置１０１からファイルアップロードのリクエストの受信を許可する期限を格納するカラムである。ステータスカラムは、ファイルアップロードに関連付けられている非同期処理コードによるデータ処理の実行状況を示すカラムである。
【００５５】
本実施形態では、一例として、クライアント装置１０１のログ情報を登録、すなわちファイルアップロードが行われると、該ログ情報に対して属性情報の抽出および登録を行う処理が非同期処理コードにより実行される。この場合、ステータスカラムは、ログ情報の登録から、該ログ情報に対する非同期処理コードによる処理の実行状況を示している。
【００５６】
具体的には、ステータスカラムの取り得る値は、クライアント装置１０１からファイル情報の登録リクエストが行われ、ファイル情報管理テーブル（表３）にレコードが登録された段階を「仮登録」とする。また、後述するイベント情報管理サーバ１０４が実行する非同期処理コードによってファイルから属性情報が抽出された段階で「本登録」に更新される。なお、ステータスカラムの取り得る値は、「仮登録」および「本登録」に限定されるものではなく、処理内容に応じて増減および変化してもよい。
【００５７】
属性カラムは、ファイルの実体から抽出した属性情報を格納するカラムである。本実施形態では、一例として、ファイルの実体から抽出した全文検索用のインデックステキストデータを示しているがこれに限定されるものではなく、抽出する属性情報はどのようなものでもよい。抽出する属性情報の個数に応じてファイル情報管理テーブルのカラムの個数は増減する。
【００５８】
図７は、本実施形態におけるイベント情報管理サーバ１０４上で動作する管理アプリケーション７００、実行管理アプリケーション７１０、および実行環境７２０のソフトウェア構成例を示す図である。
管理アプリケーション７００は、イベント情報管理サーバ１０４の記憶装置３０３に格納され、ＣＰＵ３０１によって実行される。
【００５９】
管理アプリケーション７００は、イベント情報管理サーバ１０４で実行する非同期処理コードの保存、および非同期処理コードの実行設定の管理を行うアプリケーションである。管理アプリケーション７００は、通信部７０１、コード管理部７０２、コード保存部７０３、およびコード設定保存部７０４から構成される。
【００６０】
通信部７０１は、ネットワーク装置３０４を介してクライアント装置１０１、ファイルサーバ１０２、ファイル情報管理サーバ１０３、実行結果管理サーバ１０５、および実行管理アプリケーション７１０と通信を行う。コード管理部７０２は、通信部７０１を介してクライアント装置１０１から非同期処理コードの登録リクエストを受信する。また、実行管理アプリケーション７１０から非同期処理コードのリクエストを受信する。
【００６１】
コード保存部７０３は、コード管理部７０２からの指示に従って、クライアント装置１０１から受信した非同期処理コードを保存する。また、コード保存部７０３は、コード管理部７０２からの指示に従って、実行管理アプリケーション７１０に非同期処理コードを送信する。以下、コード保存部７０３が非同期処理コードを管理するデータの一例として非同期処理コード管理テーブルを示す。
【００６２】
【表４】
2018097822.tif 000006
【００６３】
非同期処理コード管理テーブルは、ＩＤ、コード名、およびファイルデータのカラムから構成される。ＩＤカラムは、管理アプリケーション７００が保存する非同期処理コードを一意に識別するための値を格納するカラムである。コード名カラムは、管理アプリケーション７００が保存する非同期処理コードのコード名称を格納するカラムである。ファイルデータカラムは、管理アプリケーション７００が保存する非同期処理コードのバイナリデータを格納するカラムである。
【００６４】
コード設定保存部７０４は、コード管理部７０２からの指示に従って、クライアント装置１０１から受信した非同期処理コードの実行設定を非同期処理コードの実体と関連付けて保存する。また、コード設定保存部７０４は、コード管理部７０２からの指示に従って、実行管理アプリケーション７１０に非同期処理コードの実行設定を非同期処理コードと合わせて送信する。以下、コード設定保存部７０４が非同期処理コードの実行設定を管理するデータの一例として実行環境設定テーブル、イベント設定テーブル、およびスケジュール設定テーブルを示す。
【００６５】
【表５】
2018097822.tif 000007
【００６６】
実行環境設定テーブルは、ＩＤ、実行環境タイプ、ＣＰＵ、ＲＡＭ、およびＨＤＤのカラムから構成される。ＩＤカラムは、管理アプリケーション７００が非同期処理コードを実行する仮想マシン環境の設定を一意に識別するための値を格納するカラムである。実行環境タイプカラムは、非同期処理コードを実行する仮想マシン環境の特徴を示す名称を格納するカラムである。
【００６７】
ＣＰＵカラムは、非同期処理コードを実行する仮想マシン環境のＣＰＵの性能を格納するカラムであり、本実施形態では一例としてＣＰＵのクロック数を格納する。ＲＡＭカラムは、非同期処理コードを実行する仮想マシン環境のＲＡＭの性能を格納するカラムであり、本実施形態では一例としてＲＡＭの容量を格納する。ＨＤＤカラムは、非同期処理コードを実行する仮想マシン環境のＨＤＤの性能を格納するカラムであり、本実施形態では一例としてＨＤＤのサイズを格納するカラムである。
【００６８】
なお、ＣＰＵ、ＲＡＭ、およびＨＤＤのそれぞれの性能を示す値は、上述したものに限られるものではなく、例えば、ＣＰＵの性能としてコア数など、その他の値を格納してもよい。また、実行環境設定テーブルは、ＣＰＵ、ＲＡＭ、ＨＤＤのそれぞれの性能を示す値をそれぞれ複数個有していてもよい。また、実行環境設定テーブルは、仮想マシン環境の性能を示す値として、ＣＰＵ、ＲＡＭ、およびＨＤＤ以外の値を有していてもよい。
【００６９】
【表６】
2018097822.tif 000008
【００７０】
イベント設定テーブルは、ＩＤ、対象ファイルパス、対象イベント、非同期処理コードＩＤ、および実行環境ＩＤのカラムから構成される。ＩＤカラムは、管理アプリケーション７００が非同期処理コードを実行する対象となるイベントを一意に識別するための値を格納するカラムである。対象ファイルパスカラムは、非同期処理コードを実行する対象となるファイルパスを格納するカラムである。
【００７１】
対象イベントカラムは、対象ファイルパスカラムに格納されたファイルパスのファイルに対し、非同期処理コードが実行される条件となる操作の内容を格納するカラムである。非同期処理コードＩＤカラムは、実行する非同期処理コードに該当する非同期処理コードを識別する値を格納するカラムであり、非同期処理コード管理テーブル（表４）のＩＤカラムの値が格納される。
【００７２】
実行環境ＩＤカラムは、非同期処理コードを実行する環境に該当する実行環境の設定を識別する値を格納するカラムであり、実行環境設定テーブル（表５）のＩＤカラムの値が格納される。例えば、イベント設定テーブルのＩＤカラムの値が「１」のレコードは、「ｌｏｇｄａｔａ／ｃｌｉｅｎｔ１」以下のフォルダにファイルが「追加」された場合にコード名が「ａｓｙｎｃｐｒｏｃ」の非同期処理コードを以下の実行環境で実行する設定である。実行環境は、ＣＰＵのクロック数が２ＧＨｚ、ＲＡＭの容量が４ＧＢ、ＨＤＤのサイズが１ＧＢの仮想マシン環境で実行する設定である。
【００７３】
【表７】
2018097822.tif 000009
【００７４】
スケジュール設定テーブルは、ＩＤ、スケジュール、非同期処理コードＩＤ、実行環境ＩＤのカラムから構成される。ＩＤカラムは、管理アプリケーション７００が、非同期処理コードを実行するスケジュールを一意に識別するための値を格納するカラムである。スケジュールカラムは、非同期処理コードが実行されるスケジュールを格納するカラムである。
【００７５】
非同期処理コードＩＤカラムは、実行する非同期処理コードに該当する非同期処理コードを識別する値を格納するカラムであり、非同期処理コード管理テーブル（表４）のＩＤカラムの値が格納される。実行環境ＩＤカラムは、非同期処理コードを実行する環境に該当する実行環境の設定を識別する値を格納するカラムであり、実行環境設定テーブル（表５）のＩＤカラムの値が格納される。
【００７６】
例えば、スケジュール設定テーブルのＩＤカラムの値が「１」のレコードは、毎日０時（ＵＴＣ）にコード名が「ｗａｔｃｈｅｒ」の非同期処理コードを以下の実行環境で実行する設定である。実行環境は、ＣＰＵのクロック数が３ＧＨｚ、ＲＡＭの容量が８ＧＢ、ＨＤＤのサイズが１０ＧＢの仮想マシン環境で実行する設定である。
【００７７】
実行管理アプリケーション７１０は、イベント情報管理サーバ１０４の記憶装置３０３に格納され、ＣＰＵ３０１によって実行される。実行管理アプリケーション７１０は、ファイルサーバ１０２から受信するイベントに応じて非同期処理コードとその実行設定とを管理アプリケーション７００から取得する。そして、実行管理アプリケーション７１０は、取得した該非同期処理コードを該実行設定で実行するための実行環境７２０を作成するアプリケーションである。
【００７８】
実行管理アプリケーション７１０は、通信部７１１、コード実行管理部７１２、コード実行部７１３、コード実行環境管理部７１４、およびタイマー７１５から構成される。通信部７１１は、ネットワーク装置３０４を介してファイルサーバ１０２、ファイル情報管理サーバ１０３、管理アプリケーション７００、および実行環境７２０と通信を行う。
【００７９】
コード実行管理部７１２は、通信部７１１を介してファイルサーバ１０２からイベントを受信する。また、コード実行管理部７１２は、通信部７１１を介して管理アプリケーション７００から非同期処理コードおよび実行設定を受信する。また、コード実行管理部７１２は、後述する監視処理およびリカバリ処理（図１３）において、通信部７１１を介して実行環境７２０から非同期処理コードを再実行するイベントを受信する。
【００８０】
コード実行部７１３は、コード実行管理部７１２からの指示に従って、ファイルサーバ１０２から受信したイベントに関連付けられている非同期処理コードおよび実行設定を受信する。また、コード実行部７１３は、ファイルサーバ１０２から受信した実行設定に基づき実行環境７２０を生成し、イベントに関連付けられている非同期処理コードの実行を該実行環境７２０に指示する。
【００８１】
タイマー７１５は、イベント情報管理サーバ１０４のサーバ時刻と同期する。コード実行管理部７１２は、コード設定保存部７０４が格納するスケジュール設定テーブルのスケジュールカラムの値とタイマー７１５の時刻とが合致した場合、コード実行部７１３に非同期処理コードの実行を指示する。コード実行部７１３は、コード実行管理部７１２からの指示に従って、タイマー７１５の時刻に実行するようスケジュールされた非同期処理コードおよびその実行設定を受信する。
【００８２】
また、コード実行部７１３は、管理アプリケーション７００から受信した実行設定に基づき実行環境７２０を生成し、スケジュールされた非同期処理コードの実行を該実行環境７２０に指示する。コード実行環境管理部７１４は、実行環境７２０で実行する非同期処理コードの実行状況を管理する。以下、コード実行環境管理部７１４が管理する実行環境７２０の実行状況を管理するデータの一例として実行環境監視項目テーブルを示す。
【００８３】
【表８】
2018097822.tif 000010
【００８４】
実行環境監視項目テーブルは、ＩＤ、監視項目、および監視項目値のカラムから構成される。ＩＤカラムは、実行管理アプリケーション７１０が実行環境７２０の稼働状況を管理する項目を一意に識別するための値を格納するカラムである。監視項目カラムは、実行環境７２０で実行中の非同期処理コードの実行状況を監視するための項目を格納するカラムである。監視項目値カラムは、監視項目カラムに格納された項目に対する閾値を格納するカラムである。
【００８５】
例えば、実行環境監視項目テーブルのＩＤカラムの値が「１」のレコードは、実行環境７２０で実行される非同期処理コードのリトライを５回まで許容することを示す。非同期処理コードを５回実行しても非同期処理コードが処理を完了できなかった場合は、該非同期処理コードによる処理はエラーとなり実行管理アプリケーション７１０は、非同期処理コードの実行を中断させる。詳細には、実行管理アプリケーション７１０が非同期処理コードの終了指示を実行環境７２０に送信し、非同期処理コードの実行を中断させる。
【００８６】
また、実行環境監視項目テーブルのＩＤカラムの値が「２」のレコードは、実行環境７２０で実行される非同期処理コードによる処理に要する時間を３００秒までに制限することを示す。非同期処理コードによる処理が３００秒を越えても完了しない場合、詳細には、実行環境７２０が実行管理アプリケーション７１０に対して処理完了の通知を送信しない場合、実行管理アプリケーション７１０は、非同期処理コードの実行を中断させる。
【００８７】
実行環境７２０は、イベント情報管理サーバ１０４の記憶装置３０３に格納され、ＣＰＵ３０１によって実行される。実行環境７２０は、ファイルサーバ１０２が実行管理アプリケーション７１０に送信したイベントに関連付けられた非同期処理コードを実行するための仮想マシン環境である。実行環境７２０は、クラウドコンピューティングサービスとして提供されるものであり、図３に示した各ハードウェアが仮想マシンによってアプリケーションソフトウェアとしてそれぞれ実現され、物理ハードウェアと同様の挙動をとるものとする。
【００８８】
実行環境７２０は、通信部７２１、および実行部７２２から構成される。通信部７２１は、ネットワーク装置３０４を介してファイルサーバ１０２、ファイル情報管理サーバ１０３、管理アプリケーション７００、および実行管理アプリケーション７１０と通信を行う。
【００８９】
実行部７２２は、通信部７２１を介して実行管理アプリケーション７１０から受信したファイルサーバ１０２で発生したイベントに応じた非同期処理コードを管理アプリケーション７００から受信して実行する。また、実行部７２２は、実行中の非同期処理コードに対する監視リクエストをコード実行環境管理部７１４から受信して、非同期処理コードの実行を制御する。
【００９０】
図８は、本実施形態における実行結果管理サーバ１０５上で動作する実行結果管理アプリケーション８００のソフトウェア構成例を示す図である。
実行結果管理アプリケーション８００は、実行結果管理サーバ１０５の記憶装置３０３に格納され、ＣＰＵ３０１によって実行される。
【００９１】
実行結果管理アプリケーション８００は、通信部８０１、ファイル管理部８０２、およびファイル保存部８０３から構成される。通信部８０１は、ネットワーク装置３０４を介してイベント情報管理サーバ１０４と通信を行う。ファイル管理部８０２は、通信部８０１を介してイベント情報管理サーバ１０４からリクエストを受信する。
【００９２】
ファイル保存部８０３は、ファイル管理部８０２からの指示に従って、イベント情報管理サーバ１０４から受信した実行結果情報を保存する。以下、ファイル保存部８０３がイベント情報管理サーバ１０４から受信した実行結果情報を管理するデータの一例として実行結果管理テーブルを示す。
【００９３】
【表９】
2018097822.tif 000011
【００９４】
実行結果管理テーブルは、ＩＤ、保存パス、ファイル名、ファイルサイズ、およびファイルデータのカラムから構成される。ＩＤカラムは、実行結果管理サーバ１０５が保存する実行結果情報のファイルを一意に識別するための値を格納するカラムである。保存パスカラムは、実行結果管理サーバ１０５におけるファイルの保存先フォルダのパス情報を格納するカラムである。
【００９５】
本実施形態では、実行結果情報のファイルの保存パスは、ファイルサーバ１０２に保存されるファイルの実体の保存パスとファイル名とを組み合わせたパス情報とする。これによりファイルサーバ１０２のファイルの実体と、実行結果管理サーバ１０５に保存される該ファイルに対するデータ処理の実行結果情報のファイルとを対応付けることができる。なお、ファイルサーバのファイルと、それに対するデータ処理の実行結果情報のファイルとを対応付ける方法はこれに限られるものではない。
【００９６】
ファイル名カラムは、実行結果管理サーバ１０５が保存する実行結果情報のファイルの名称を格納するカラムである。本実施形態では、イベント情報管理サーバ１０４がデータ処理を開始するとファイル名が「ｓｔａｒｔ．ｌｏｇ」のログファイルを生成し、該データ処理が終了するとファイル名が「ｉｎｆｏ．ｌｏｇ」のログファイルを生成する。
【００９７】
そして、実行結果管理サーバ１０５は、それぞれのログファイルを実行結果情報として保存する。ファイル名が「ｉｎｆｏ．ｌｏｇ」のログファイルにはデータ処理の実行時のデバッグ情報や終了時の結果情報が出力される。すなわち、データ処理のコードによる処理に関するログ情報が記録される。ファイルサイズカラムは、実行結果管理サーバ１０５が保存するファイルのサイズを格納するカラムである。ファイルデータカラムは、実行結果管理サーバ１０５が保存するファイルの実体となるテキストデータを格納するカラムである。
【００９８】
次に、図９〜図１１を用いてイベント情報管理サーバ１０４において非同期処理コードが登録、および管理される処理と、実際にファイルサーバ１０２への操作に伴い発生したイベントに応じて非同期処理コードが実行されるまでの処理について説明する。
図９は、クライアント装置１０１が管理アプリケーション７００に非同期処理コードを登録する処理を説明するシーケンス図である。
【００９９】
ステップＳ９０１において、クライアント装置１０１は、通信部４０１を介してイベント情報管理サーバ１０４の管理アプリケーション７００に非同期処理コードの登録リクエストを送信する。以下、管理アプリケーション７００に送信される非同期処理コードの登録リクエストの一例として、登録リクエストレコード１、および登録リクエストレコード２を示す。
【０１００】
【表１０】
2018097822.tif 000012
【０１０１】
非同期処理コードの登録リクエストレコード１は、非同期処理コード、非同期処理コード名、実行対象ファイルパス、実行対象イベント、および実行環境ＩＤから構成される。登録リクエストレコード１の非同期処理コードは、非同期処理コードの実体をバイナリデータで格納する。非同期処理コード名は、非同期処理コードの名称を格納する。実行対象ファイルパスは、非同期処理コードを実行する対象となるファイルサーバ１０２上のファイルパスを格納する。
【０１０２】
実行管理アプリケーション７１０は、ファイルサーバ１０２から受信したイベントに含まれるファイルパスを参照する。そして、実行管理アプリケーション７１０は、該ファイルパスが登録リクエストレコード１の実行対象ファイルパスに格納された値と一致した場合に、該イベントは登録リクエストレコード１の非同期処理コードを実行すべきイベントであると判別する。
【０１０３】
実行対象イベントは、実行対象ファイルパスに格納されたファイルに対して、非同期処理コードを実行する対象となる操作を格納する。実行環境ＩＤは、非同期処理コードを実行する環境に該当する実行環境の設定を識別する値であり、実行環境設定テーブル（表５）のＩＤカラムの値が格納される。
【０１０４】
例えば、登録リクエストレコード１は、ファイルサーバ１０２上の「ｌｏｇｄａｔａ／ｃｌｉｅｎｔ１」以下にファイルが「追加」された場合に実行される、コード名が「ａｓｙｎｃｐｒｏｃ」の非同期処理コードを登録するためのリクエストである。
【０１０５】
図９の説明に戻る。ステップＳ９０２において、管理アプリケーション７００は、通信部７０１が受信した登録リクエストから非同期処理コードの管理レコードを生成し、コード保存部７０３の非同期処理コード管理テーブル（表４）に格納する。管理レコードのコード名カラムには、登録リクエストに含まれる非同期処理コード名の値が格納される。管理レコードのファイルデータカラムには、登録リクエストに含まれる非同期処理コード、すなわち非同期処理コードの実体であるバイナリデータが格納される。
【０１０６】
ステップＳ９０３において、管理アプリケーション７００は、イベント設定レコードを生成し、コード設定保存部７０４のイベント設定テーブル（表６）に格納する。イベント設定レコードの対象ファイルパスカラムには、登録リクエストに含まれる実行対象ファイルパスの値が格納される。イベント設定レコードの対象イベントカラムには、登録リクエストに含まれる実行対象イベントの値が格納される。
【０１０７】
イベント設定レコードの非同期処理コードＩＤカラムには、ステップＳ９０２でコード保存部７０３の非同期処理コード管理テーブル（表４）に格納した管理レコードのＩＤカラムの値が格納される。イベント設定レコードの実行環境ＩＤカラムには、登録リクエストに含まれる実行環境ＩＤの値が格納される。
【０１０８】
【表１１】
2018097822.tif 000013
【０１０９】
非同期処理コードの登録リクエストレコード２は、非同期処理コード、非同期処理コード名、スケジュール、および実行環境ＩＤから構成される。登録リクエストレコード２の非同期処理コードは、非同期処理コードの実体をバイナリデータで格納する。非同期処理コード名は、非同期処理コードの名称を格納する。スケジュールは、非同期処理コードが実行されるスケジュールを格納する。
【０１１０】
実行管理アプリケーション７１０は、タイマー７１５から取得するサーバ時刻が、登録リクエストレコード２のスケジュールに格納された値と合致した場合に、登録リクエストレコード２の非同期処理コードを実行すべきタイミングであると判別する。実行環境ＩＤは、非同期処理コードを実行する環境に該当する実行環境の設定を識別する値であり、実行環境設定テーブル（表５）のＩＤカラムの値が格納される。例えば、登録リクエストレコード２は、「毎日０時（ＵＴＣ）」に実行されるコード名が「ｗａｔｃｈｅｒ」の非同期処理コードを登録するためのリクエストである。
【０１１１】
クライアント装置１０１がステップＳ９０１で送信した登録リクエストが登録リクエストレコード２の場合、ステップＳ９０２において、管理アプリケーション７００は、通信部７０１が受信した登録リクエストレコード２から管理レコードを生成する。そして、管理アプリケーション７００は、該管理レコードをコード保存部７０３の非同期処理コード管理テーブル（表４）に格納する。
【０１１２】
管理レコードのコード名カラムには、登録リクエストレコード２の非同期処理コード名の値が格納される。管理レコードのファイルデータカラムには、登録リクエストレコード２の非同期処理コード、すなわち非同期処理コードのバイナリデータが格納される。そして、ステップＳ９０３において、管理アプリケーション７００は、スケジュール設定レコードを生成し、コード設定保存部７０４のスケジュール設定テーブル（表７）に格納する。
【０１１３】
スケジュール設定レコードのスケジュールカラムには、登録リクエストレコード２のスケジュールの値が格納される。スケジュール設定レコードの非同期処理コードＩＤカラムには、ステップＳ９０２でコード保存部７０３の非同期処理コード管理テーブル（表４）に格納した管理レコードのＩＤカラムの値が格納される。スケジュール設定レコードの実行環境ＩＤカラムには、登録リクエストレコード２の実行環境ＩＤの値が格納される。
【０１１４】
図１０および図１１は、ファイルサーバ１０２への操作をトリガとして非同期処理コードによるデータ処理が実行され、該データ処理のログ情報が記録されるまでの処理を説明するシーケンス図である。
本実施形態では、クラウドコンピューティングサービスの一例として、ネットワークに接続された各種デバイスや端末から収集されたデバイスやアプリケーションのログ情報や稼働情報をストレージに保存し、データベースで管理するサービスについて説明する。
【０１１５】
具体的には、クライアント装置１０１が収集した情報のファイルがファイルサーバ１０２にアップロードされる度にファイル情報管理サーバ１０３に該ファイルのファイル情報のレコードが作成され、管理される。ファイル情報は、例えば、アップロードされたファイルのファイル名やストレージ上の保存場所等である。なお、本実施形態では、ファイルサーバ１０２への操作を、非同期処理コードを実行するトリガとしているが、これに限られるものではない。
【０１１６】
また、本実施形態では、イベント駆動型コンピューティングサービスの一例として、ファイルサーバ１０２へファイルが追加されたことをトリガとして該ファイルの属性情報の抽出が実行される場合について説明する。具体的には、本実施形態では、非同期処理コードは、クライアント装置１０１がファイルサーバ１０２へファイル新規に登録する操作（イベント）により起動される。
【０１１７】
非同期処理コードが起動されると、イベント情報管理サーバ１０４は、実行結果管理サーバ１０５にログ情報として開始ログ「ｓｔａｒｔ．ｌｏｇ」を出力し、新規に登録されたファイルの属性情報を抽出する。そして、イベント情報管理サーバ１０４は、ファイル情報管理サーバ１０３のファイル情報管理部６１２に該属性情報を登録する。
【０１１８】
イベント情報管理サーバ１０４は、非同期処理コードの実行を終了すると、実行結果管理サーバ１０５にログ情報として該非同期処理コードによるデータ処理の実行ログ「ｉｎｆｏ．ｌｏｇ」を出力する。以下、イベント及びイベントに関連付けられたデータ処理の詳細について説明する。なお、非同期処理コードによるデータ処理は、ファイルサーバ１０２へ追加されたファイルの属性情報の抽出に限定されるものではない。
【０１１９】
従来、上述したようなイベント駆動型コンピューティングサービスにより実現される処理を実現するには、以下の管理が必要であった。すなわち、コンピューティングリソースに対して発生するイベントを検知するためのアプリケーションや所望の処理を実行するためのアプリケーション、該アプリケーションが稼働するインフラの構築や管理が必要であった。しかし、イベント駆動型コンピューティングサービスにより、利用者は所望の処理の開発にだけ集中することが可能となる。
【０１２０】
ステップＳ１００１において、クライアント装置１０１は、通信部４０１を介して情報収集部４０２がファイルとして出力したログ情報等のファイル情報の登録を要求する登録リクエストをファイル情報管理サーバ１０３に送信する。以下、ファイル情報管理サーバ１０３に送信されるファイル情報の登録リクエストの一例としてファイル情報の登録リクエストレコードを示す。
【０１２１】
【表１２】
2018097822.tif 000014
【０１２２】
ファイル情報の登録リクエストレコードは、クライアントＩＤ、およびファイル名を有する。クライアントＩＤは、クライアント装置１０１を一意に識別するための値を格納する。ファイル名は、ファイルサーバ１０２が保存するファイルの名称を格納する。
【０１２３】
ステップ１００２において、ファイル情報管理サーバ１０３は、のファイル情報管理部６１２は、受信したファイル情報の登録リクエストをもとに、通信部６１１を介して格納情報確定部６０２にファイル格納情報の確定を要求する確定リクエストを送信する。
【０１２４】
ステップ１００３において、格納情報確定部６０２は、受信したファイル情報の登録リクエストをもとに、通信部６０１を介してファイルサーバ１０２にファイル格納情報の発行を要求する発行リクエストを送信する。発行リクエストには、ファイル情報の登録リクエストに含まれるクライアントＩＤおよびファイル名が含まれる。
【０１２５】
ステップ１００４において、ファイルサーバ１０２の格納情報発行部５０２は、受信したファイル格納情報の発行リクエストをもとにファイル格納情報を生成する。以下、ファイル格納情報の一例としてファイル格納情報レコードを示す。
【０１２６】
【表１３】
2018097822.tif 000015
【０１２７】
ファイル格納情報レコードは、保存パスカラムおよび有効期限カラムから構成される。保存パスカラムは、ファイルサーバ１０２におけるファイルの保存先フォルダのパス情報を格納するカラムである。有効期限カラムは、ファイルサーバ１０２がクライアント装置１０１からファイルアップロードのリクエストの受信を許可する期限を格納するカラムである。
【０１２８】
ステップＳ１００５において、格納情報発行部５０２は、通信部５０１を介してファイル管理部５１２にファイル格納情報の登録を要求する登録リクエストを送信する。以下、ファイル格納情報の登録リクエストの一例としてファイル格納情報登録リクエストレコードを示す。
【０１２９】
【表１４】
2018097822.tif 000016
【０１３０】
ファイル格納情報登録リクエストレコードは、クライアントＩＤ、アップロードファイルパス、および有効期限を有する。クライアントＩＤは、クライアント装置１０１を一意に識別するための値を格納する。このクライアントＩＤには、ステップＳ１００３で取得したファイル格納情報の発行リクエストに含まれるクライアントＩＤの値が格納される。
【０１３１】
アップロードファイルパスは、ファイルサーバ１０２にアップロードされるファイルの実体のパス情報を格納する。このアップロードファイルパスには、ステップＳ１００４で生成したファイル格納情報レコードの保存パスとステップＳ１００３で取得したファイル格納情報の発行リクエストに含まれるファイル名とを結合した値が格納される。
【０１３２】
有効期限は、ファイルサーバ１０２がクライアント装置１０１からファイルアップロードのリクエストの受信を許可する期限を格納する。この有効期限には、ステップＳ１００４で生成したファイル格納情報レコードの有効期限の値が格納される。ファイル管理部５１２は、ファイル格納情報の登録リクエストをもとに、ファイル格納情報管理テーブル（表２）を更新し、ステップＳ１００５のレスポンスとして通信部５１１を介して格納情報発行部５０２に登録が完了した旨を送信する。
【０１３３】
ファイル管理部５１２からレスポンスを受信した格納情報発行部５０２は、ステップＳ１００３のレスポンスとしてステップ１００４で生成したファイル格納情報を、通信部５０１を介してファイル情報管理サーバ１０３に送信する。ファイル情報管理サーバ１０３の格納情報確定部６０２は、ステップＳ１００２のレスポンスとしてファイル格納情報を受信し、該ファイル格納情報を通信部６０１を介してファイル情報管理部６１２に送信する。
【０１３４】
ステップＳ１００６において、ファイル情報管理部６１２は、受信したファイル格納情報を、ファイル情報保存部６１３のファイル情報管理テーブル（表３）に登録する。なお、ステップＳ１００６の処理により登録される、ファイル情報管理テーブルのステータスカラムの値は、「仮登録」である。この後で、クライアント装置１０１によるファイルサーバ１０２へのファイルのアップロードが行われたことをトリガとして、イベント情報管理サーバ１０４によるデータ処理が行われる。
【０１３５】
そして、データ処理の結果として属性カラムの値がファイル情報管理テーブルに登録が完了することにより、ステータスカラムの値は「本登録」に更新される。処理の詳細については、ステップＳ１０２にて説明する。ファイル情報管理部６１２は、受信したファイル格納情報を、ステップＳ１００１のレスポンスとして通信部６１１を介してクライアント装置１０１に送信する。
【０１３６】
ステップＳ１０１０において、クライアント装置１０１は、受信したファイル格納情報をもとに、ファイルサーバ１０２にファイルのアップロード要求を実行するファイルアップロードリクエストをファイルサーバ１０２に送信する。以下、ファイルサーバ１０２に送信されるファイルアップロードリクエストの一例としてファイルアップロードリクエストレコードを示す。
【０１３７】
【表１５】
2018097822.tif 000017
【０１３８】
ファイルアップロードリクエストレコードは、アップロード先フォルダ、ファイル名、およびファイルデータを有する。アップロード先フォルダは、ファイルのアップロード先となるファイルサーバ１０２に存在するフォルダパスを格納する。このアップロード先フォルダには、ステップＳ１００１のレスポンスとして取得したファイル格納情報に含まれる保存パスの値が格納される。ファイル名は、アップロードするファイルの名称を格納する。ファイルデータは、アップロードするファイルのバイナリデータを格納する。
【０１３９】
ステップＳ１０１１において、ファイルサーバ１０２のファイル管理部５１２は、ファイル保存部５１３が管理するファイル格納情報管理テーブル（表２）からアップロードされたファイルと一致するレコードを取得する。具体的には、ファイル格納情報管理テーブル（表２）のアップロードファイルパスカラムの値が、ステップＳ１０１０で受信したファイルアップロードリクエストに含まれるアップロード先フォルダとファイル名とを結合した値と一致するレコードを取得する。
【０１４０】
ファイル管理部５１２は、取得したファイル格納情報管理テーブル（表２）のレコードの有効期限カラムの値がファイルサーバ１０２のサーバ時刻を超えているか判定する。有効期限カラムの値がサーバ時刻を越えている場合、ファイル管理部５１２は、通信部５１１を介してクライアント装置１０１に有効期限切れを通知するレスポンスを送信する。
【０１４１】
有効期限カラムの値がサーバ時刻を越えていない場合、ファイルアップロードリクエストに含まれるデータをファイル保存部５１３のファイル管理テーブル（表１）に保存する。ファイル管理部５１２は、ファイル管理テーブルへのデータの保存が完了すると、ステップＳ１０１１のレスポンスとして通信部５１１を介してクライアント装置１０１にファイルアップロードが完了した旨を送信する。
【０１４２】
ステップＳ１０２０において、ファイル管理部５１２は、ファイルが追加されたことを示すイベントを生成し、通信部５１１を介してイベント情報管理サーバ１０４に送信する。すなわち、ファイル管理部５１２は、イベント情報管理サーバ１０４にアップロードしたファイルに対するデータ処理の実行を要求する。以下、イベント情報管理サーバ１０４に送信される、ファイルが追加されたことを示すイベントの一例としてファイルアップロード完了イベントを示す。
【０１４３】
【表１６】
2018097822.tif 000018
【０１４４】
ファイルアップロード完了イベントは、ファイルパスおよびイベント種別を有する。ファイルパスは、イベントを生成する契機となったファイルのファイルサーバ１０２上でのパス情報を格納する。イベント種別は、イベントを生成する契機となったファイルに対して行われた操作を格納する。ここでは、ステップＳ１０１０にてクライアント装置１０１がファイルサーバ１０２にファイルを新規にアップロードしため、イベント種別の値は「追加」となる。
【０１４５】
ステップＳ１０２１において、イベント情報管理サーバ１０４のコード実行管理部７１２は、通信部７１１を介して受信したファイルアップロード完了イベントの内容を確認する。具体的には、コード実行管理部７１２は、ファイルアップロード完了イベントに含まれるファイルパスからファイル名を除いたフォルダパスと、イベント種別を取得する。
【０１４６】
そして、コード実行管理部７１２は、通信部７１１を介してコード設定保存部７０４のイベント設定テーブル（表６）からレコードを取得する。詳細には、イベント設定テーブル（表６）の対象ファイルパスカラムと対象イベントカラムの値の組み合わせが、ファイルアップロード完了イベントから取得したフォルダパスとイベント種別の値の組み合わせと一致するレコードを取得する。
【０１４７】
ステップＳ１０２２において、コード実行管理部７１２は、ステップＳ１０２１で取得したイベント設定レコードをもとに、ステップＳ１０２１で受信したイベントに関連付けられた非同期処理コードをコード保存部７０３から取得する。詳細には、コード実行管理部７１２は、コード保存部７０３の非同期処理コード管理テーブル（表４）のＩＤの値が、ステップＳ１０２２で取得したイベント設定レコードの非同期処理コードＩＤの値と一致するレコードを取得する。そして、コード実行管理部７１２は、該レコードのファイルデータカラムに格納された非同期処理コードのバイナリデータを取得する。
【０１４８】
ステップＳ１０２３において、コード実行管理部７１２は、ステップＳ１０２２で取得した非同期処理コードの実行設定をコード設定保存部７０４から取得する。詳細には、コード実行管理部７１２は、コード保存部７０３の実行環境設定テーブル（表５）のＩＤの値が、ステップＳ１０２２で取得したイベント設定レコードの実行環境ＩＤカラムの値と一致するレコードを取得する。
【０１４９】
ステップＳ１０２４において、コード実行管理部７１２は、ステップＳ１０２３で取得した実行設定の性能を有する実行環境７２０を作成し、起動する。ステップＳ１０２５において、コード実行管理部７１２は、通信部７１１を介して実行環境７２０の記憶装置３０３にステップＳ１０２２で取得した非同期処理コードを配置する。
【０１５０】
ステップＳ１０２６において、コード実行部７１３は、通信部７１１を介して実行環境７２０の実行部７２２に非同期処理コードの実行を要求する要求リクエストを送信する。実行部７２２は、非同期処理コードの実行リクエストを受信すると、ステップＳ１０２５で受信した非同期処理コードをＲＡＭ３０２に読み込み非同期処理コードの実行を開始する。以下、実行部７２２に送信される非同期処理コードの実行リクエストの一例として実行リクエストレコードを示す。
【０１５１】
【表１７】
2018097822.tif 000019
【０１５２】
実行リクエストレコードは、ファイルパスおよびイベント設定ＩＤを有する。ファイルパスは、非同期処理コードを実行する対象となるファイルサーバ１０２上のファイルパスを格納する。このファイルパスには、ステップＳ１０２０でコード実行管理部７１２が受信したファイルアップロード完了イベントに含まれるファイルパスの値が格納される。
【０１５３】
イベント設定ＩＤは、コード実行管理部７１２がステップＳ１０２１で取得したイベント設定レコードのＩＤの値を格納する。ステップＳ１０２７において、実行部７２２は、通信部７２１を介して実行結果管理サーバ１０５に非同期処理コードの処理開始を示す開始ログの出力を要求する出力リクエストを送信する。
【０１５４】
実行結果管理サーバ１０５のファイル管理部８０２は、出力リクエストをもとに、開始ログをファイル保存部８０３に出力し、ステップＳ１０２７のレスポンスとして通信部８０１を介して実行部７２２に出力が完了した旨を送信する。ステップＳ１０２８において、実行部７２２は、ステップ１０２６で受信した実行リクエスト（表１７）に含まれるファイルパスに該当するファイルをファイルサーバ１０２から取得する。
【０１５５】
ステップＳ１０２９において、実行部７２２は、ステップＳ１０２８で取得したファイルから各種属性情報を抽出し、ファイル属性情報レコードを生成する。そして、実行部７２２は、該ファイル属性情報レコードをファイル情報管理サーバ１０３に送信する。ファイル情報管理サーバ１０３のファイル情報管理部６１２は、受信したファイル属性情報レコードをファイル情報保存部６１３のファイル情報管理テーブル（表３）に登録する。
【０１５６】
詳細には、ファイル情報管理テーブル（表３）のアップロードファイルパスカラムの値が、ステップ１０２６で受信した非同期処理コード実行リクエストに含まれるファイルパスの値と一致するレコードの属性カラムにファイル属性情報レコードを格納する。ファイル情報管理テーブルにファイル属性情報が登録されることにより、ファイル情報管理テーブルのステータスカラムは、「仮登録」から「本登録」に更新される。
【０１５７】
ステップＳ１０３０において、実行部７２２は、通信部７２１を介して実行結果管理サーバ１０５にステップＳ１０２８〜ステップＳ１０２９までの実行ログの出力を要求する出力リクエストを送信する。実行結果管理サーバ１０５のファイル管理部８０２は、出力リクエストをもとに、実行ログをファイル保存部８０３に出力し、ステップＳ１０２７のレスポンスとして通信部８０１を介して実行部７２２に出力が完了した旨を送信する。
【０１５８】
実行部７２２は、ステップＳ１０３０までの処理が完了すると、コード実行管理部７１２に非同期処理コードの実行が完了した旨を送信する。ステップＳ１０３１において、コード実行管理部７１２は、実行環境７２０の仮想マシンをシャットダウンし、破棄する。
【０１５９】
図９〜図１１に示した処理により、ファイルサーバ１０２でイベントが発生すると、イベント情報管理サーバ１０４が該イベントに関連付けられた非同期処理コードを適宜実行する。しかし、イベントが発生したにも関わらず、イベントに関連付けられた非同期処理コードが実行されない場合がある。例えば、本実施形態では、ファイルサーバ１０２へのファイルアップロードが正常に終了したにも関わらず、ファイルアップロードに関連付けられた非同期処理コードが起動されず、非同期処理コードが実行されない場合がある。
【０１６０】
このように、イベント駆動側コンピューティングサービスにおいて、プログラムコードが起動されないエラーが発生した場合に、該エラーを検知する手段がなく、従って該エラーに対するリカバリ処理を実行するまでに多くの時間を費やすことになってしまう。
【０１６１】
そこで、本実施形態では、イベント発生に応じて実行される非同期処理コードとは別に、監視処理及びリカバリ処理を実行する監視用のプログラムコードをあらかじめ決められたスケジュールで実行する。監視処理およびリカバリ処理を実行するプログラムコードは、例えば、表１１に示した登録リクエストレコード２のように、イベント情報管理サーバ１０４に登録する。表１１に示したように、本実施形態では、監視用のプログラムコードは、定期的に実行される。
【０１６２】
図１２は、スケジュールで実行される監視処理およびリカバリ処理を説明するフローチャートである。
以下、監視処理およびリカバリ処理を実行するプログラムコードが、登録リクエストレコード２（表１１）によりイベント情報管理サーバ１０４に登録されたものとして説明する。
【０１６３】
イベント情報管理サーバ１０４のコード実行管理部７１２は、該登録リクエストレコード２をもとに、非同期処理コードおよび該非同期処理コードの実行設定をコード保存部７０３から取得し、該実行設定の性能を有する実行環境７２０を起動する。実行環境７２０が起動するまでの詳細は、ステップＳ１０２２〜１０２６までの処理と同様のため、その説明を省略する。以下、起動された実行環境７２０の実行部７２２の処理が実行する監視処理およびリカバリ処理について説明する。
【０１６４】
ステップＳ１１０１において、実行部７２２は、ファイル情報管理サーバ１０３に、ファイル情報管理テーブル（表３）においてステータスカラムの値が「仮登録」のレコードを要求する。ステップＳ１１０２において、実行部７２２は、ステップＳ１１０１でレコードが取得できたか否かを判定する。ステップＳ１１０２でレコードを取得できなかったと判定した場合は、監視処理およびリカバリ処理を終了する。ステップＳ１１０２でレコードが取得できたと判定した場合は、処理はステップ１１０３に進む。
【０１６５】
ステップＳ１１０３において、実行部７２２は、取得したレコードの有効期限カラムの値がイベント情報管理サーバ１０４のサーバ時刻を経過したか否かを判定する。取得したレコードの有効期限カラムの値がイベント情報管理サーバ１０４のサーバ時刻を経過していない場合、処理はステップＳ１１０２に戻り、次のレコードを取得する。取得したレコードの有効期限カラムの値がイベント情報管理サーバ１０４のサーバ時刻を経過していた場合、処理はステップＳ１１０４に進む。
【０１６６】
ステップＳ１１０４において、実行部７２２は、取得したレコードのアップロードファイルパスカラムの値が示すファイルの実体が存在するか否かを判定する。ファイルの実体が存在しない場合、実行部７２２は、クライアント装置１０１によるファイルアップロードリクエストが失敗したと判断し、処理はステップＳ１１０２に戻る。そして、次のレコードを取得する。
【０１６７】
ファイルアップロードリクエストが失敗した場合等は、例えば、クラウドコンピューティングサービスの１つであるモニタリングサービス（監視サービス）を利用して検出することが可能である。このため、本実施形態では、処理が失敗したファイルを特定し、リカバリ処理の対象とする必要がない。ファイルの実体が存在する場合、処理はステップＳ１１０５に進む。なお、ステップＳ１１０４の処理は行わず、ステップＳ１１０３からＳ１１０５の処理を行うようにしてもよい。
【０１６８】
ステップＳ１１０５において、実行部７２２は、実行結果管理サーバ１０５に取得したレコードのアップロードファイルパスカラムの値が示すファイルに対するデータ処理のログファイルが出力されているか否か判定する。具体的には、実行部７２２は、実行結果管理サーバ１０５の実行結果管理テーブル（表９）の保存パスカラムの値が該アップロードファイルパスカラムの値と一致するレコードが存在するか否かを判定する。一致するレコードが１つ以上存在する場合、実行部７２２は、データ処理のログファイルが出力されたと判断する。
【０１６９】
一方、実行部７２２は、一致するレコードが存在しない場合、データ処理のログファイルが出力されていないと判断する。ログファイルが出力されていた場合、実行部７２２は、データ処理は実行されたが該データ処理は失敗したと判断する。すなわち、アップロードファイルパスカラムの値が示すファイルパスで発生したイベントに関連付けられた非同期処理コードは起動されたが、該非同期処理コードによるデータ処理に失敗したことを示している。
【０１７０】
非同期処理コードによるデータ処理に失敗した場合等は、上述したように、例えば、モニタリングサービスを利用して検出することが可能である。このため、本実施形態では、処理が失敗したファイルを特定し、リカバリ処理の対象とする必要がない。
【０１７１】
この場合、処理はステップＳ１１０２に戻り、次のレコードを取得する。一方、ログファイルが出力されていない場合、実行部７２２は、非同期処理コードは実行されなかったと判断し、処理はステップＳ１１０７に進む。このように、ステップＳ１１０３〜Ｓ１１０５の処理により、実行されなかった非同期処理コードを特定することができる。このため、ログが残らないエラーが発生した場合であっても、エラーを特定し、該エラーに対するリカバリ処理を迅速に実行することが可能となる。
【０１７２】
ステップＳ１１０６〜Ｓ１１０９の処理は、非同期処理コードが実行されなかった場合のリカバリ処理として実行される。すなわち、ステップＳ１１０６〜Ｓ１１０９では、図１１のステップＳ１０２７〜Ｓ１０３０の処理と同様の処理が実行される。ステップＳ１１１０の処理が完了すると、処理はステップＳ１１０２に戻る。そして、次のレコードが取得され、実行部７２２は、監視処理（ステップＳ１１０２〜Ｓ１１０５）およびリカバリ処理（ステップＳ１１０６〜Ｓ１１０９）を繰り返す。
【０１７３】
図１３は、図１２で説明した監視処理およびリカバリ処理の応用例を説明するフローチャートである。
図１２で示したように、リカバリ処理では、図１０および図１１で示したイベント発生に応じて実行される非同期処理コードによるデータ処理と同等の処理が実行される。このため、監視処理およびリカバリ処理を実行するための非同期処理コードの、該リカバリ処理に該当するプログラムコードは、イベント発生に応じて実行される非同期処理コードのプログラムコードと共通化することができる。
【０１７４】
図１３に示す応用例では、監視処理およびリカバリ処理を実行する実行部７２２が、監視処理において、実行されなかった非同期処理コードを特定し、該非同期処理コードを再実行するトリガをかけることで、該リカバリ処理が実行されるように処理する。すなわち、監視処理およびリカバリ処理において、共通のプログラムコードは持たずにリカバリ処理を実行することが可能となる。
【０１７５】
図１３のステップＳ１２０１〜ステップＳ１２０５の処理は、図１２に示したステップＳ１１０１〜ステップＳ１２０５の監視処理と同様のため、その説明を省略する。ステップＳ１２０５までの処理によって、実行部７２２は、実行されなかった非同期処理コードを特定し、処理はステップＳ１２０６に進む。
【０１７６】
ステップＳ１２０６において、実行部７２２は、特定した非同期処理コードを再実行するためのイベントを生成し、通信部７２１を介してイベント情報管理サーバ１０４に送信する。以下、コード実行管理部７１２に送信される、非同期処理コードを再実行するためのイベントの一例として非同期処理コードの再実行イベントを示す。
【０１７７】
【表１８】
2018097822.tif 000020
【０１７８】
非同期処理コードの再実行イベントは、ファイルパスおよびイベント種別を有する。ファイルパスは、実行されなかった非同期処理コードの対象であるファイルのファイルサーバ１０２上でのパス情報を格納する。イベント種別は、実行されなかった非同期処理コードの対象であるファイルに対して行う操作を格納する。
【０１７９】
ステップＳ１２０６の処理が完了すると、処理はステップＳ１２０２に戻る。そして、次のレコードが取得され、実行部７２２は、監視処理（ステップＳ１２０２〜Ｓ１２０５）およびリカバリ処理（ステップＳ１２０６）を繰り返す。
【０１８０】
ステップＳ１２０６で再実行イベントを受信したコード実行管理部７１２は、該再実行イベントがステップＳ１０２０で受信するファイルアップロード完了イベントと同様のイベント通知のため、ステップＳ１０２１以降の処理を実行する。これにより、実行されなかった非同期処理コードが再度実行される。すなわち、ファイル情報管理テーブル（表３）を更新するデータ処理が行われる。
【０１８１】
以上のように、本実施形態によれば、イベント駆動型コンピューティングサービスにおいて起動されなかったプログラムコードを特定し、リカバリ処理を実行できる。
【０１８２】
（第２実施形態）
イベント駆動型コンピューティングサービスでは、複数のイベントが同時に発生した場合に非同期処理コードの実行順は保証されていない。また、イベント駆動型コンピューティングサービスでは、非同期処理コードの実行はイベント発生直後に実行されるとは限らず、時間が経過してから実行される場合がある。
【０１８３】
イベント発生後に時間が経過してから非同期処理コードが実行された場合、第１実施例形態では、監視処理およびリカバリ処理の非同期処理コードがイベントに関連付けられた非同期処理コードよりも先に実行されうる。すなわち、イベント発生後に、該イベントに関連付けられた非同期処理コードが実行待ちの状態で監視処理およびリカバリ処理が実行されると、「イベントに関連付けられた非同期処理コードは実行されなかった」と判断される。
【０１８４】
そして、実行されなかった非同期処理コードによるデータ処理がリカバリ処理として先に実行される。そして、実行待ちの状態であったイベントに関連付けられた非同期処理コードが後で実行されるため、該非同期処理コードによるデータ処理が重ねて実行されてしまう。
【０１８５】
イベント駆動型コンピューティングサービスでは、イベント発生に応じて実行される非同期処理コードの実行タイミングは、サービス提供側によって制御されるため、サービス利用者が実行タイミングを制御することができない。そこで、本実施形態では、非同期処理コードの実行状況を管理することで、イベントに関連付けられた非同期処理コードによるデータ処理の多重実行を回避できる。
【０１８６】
非同期処理コードの実行状況は、ファイルサーバ１０２のファイル保存部５１３が管理する。以下、ファイル保存部５１３が管理する本実施形態におけるファイル管理テーブルの一例を示す。
【０１８７】
【表１９】
2018097822.tif 000021
【０１８８】
第１実施形態におけるファイル管理テーブル（表１）に対して、本実施形態では、各ファイルに対する非同期処理コードの実行状況を示すステータスカラムが追加されている。
具体的には、本実施形態におけるファイル管理テーブルは、ＩＤ、保存パス、ファイル名、ファイルサイズ、ファイルデータ、およびステータスのカラムから構成され、ＩＤカラム〜ファイルデータカラムまでは第１実施形態と同様のためその説明を省略する。
【０１８９】
ステータスカラムは、ファイルサーバ１０２が保存するファイルに対する非同期処理コードの実行状況を格納するカラムである。ステータスカラムのとり得る値は、非同期処理コードの処理内容に応じて増減しうる。本実施形態では、非同期処理コードが実行されていない状況では値がなく、プログラムコードが実行されている最中では「実行中」とし、プログラムコードが正常に終了した状況では「成功」とする。
【０１９０】
図１４は、イベント情報管理サーバ１０４の実行部７２２が、イベント発生に応じて非同期処理コードを実行する際の処理を説明するフローチャートであり、第１実施形態における図１１のステップＳ１０２７〜Ｓ１０３０までの処理に相当する。ステップＳ１０２６までの処理は、第１実施形態と同様のため、その説明を省略する。
【０１９１】
ステップＳ１３０１において、実行部７２２は、ファイルサーバ１０２のファイル保存部５１３が管理するファイル管理テーブル（表１９）からステータスカラムの値を取得する。詳細には、ファイル管理テーブル（表１９）の保存パスカラムとファイル名カラムとを結合した値が、ステップ１０２６で受信した実行リクエスト（表１７）に含まれるファイルパスと一致するレコードをステータスカラムの値を取得する。
【０１９２】
ステップ１０２６で受信した実行リクエスト（表１７）に含まれるファイルパスには、ステップＳ１０２０でコード実行管理部７１２が受信したファイルアップロード完了イベントに含まれるファイルパスの値が格納されている。
【０１９３】
ステップＳ１３０２において、実行部７２２は、ステップＳ１３０１で取得したステータスカラムの値が「成功」であるか否かを判定する。ステータスカラムの値が「成功」である場合、実行部７２２は、監視処理およびリカバリ処理によって既に非同期処理コードが実行されたと判断し、処理を終了する。ステータスカラムの値が「成功」でない場合、処理はステップＳ１３０３に進む。
【０１９４】
ステップＳ１３０３において、実行部７２２は、ステップＳ１３０１で取得したステータスカラムの値が「実行中」であるか否かを判定する。ステータスカラムの値が「実行中」である場合、実行部７２２は、監視処理及びリカバリ処理によって非同期処理コードが実行中であると判断し、処理を終了する。ステータスカラムの値が「実行中」でない場合、実行部７２２は、まだ非同期処理コードが実行されていないと判断し、処理はステップＳ１３０４に進む。
【０１９５】
ステップＳ１３０４において、実行部７２２は、ファイルサーバ１０２に、ファイル管理テーブル（表１９）の、ステップＳ１３０１でステータスカラムの値を取得したレコードのステータスカラムの値を「実行中」に更新するように要求する。そして、ステップＳ１３０５〜Ｓ１３０７までの処理によって非同期処理コードによる処理を実行する。詳細は、図１１のステップＳ１０２８〜Ｓ１０３０までの処理と同様のため、その説明を省略する。
【０１９６】
ステップＳ１３０８において、実行部７２２は、ステップＳ１３０４で「実行中」に更新したステータスカラムの値を「成功」に更新するようファイルサーバ１０２に要求し、処理を終了する。
【０１９７】
図１５に、本実施形態に係る監視処理およびリカバリ処理を説明するためのフローチャートであり、第１実施形態における図１２の処理に相当する。
第１実施形態では、実行部７２２は、非同期処理コードの実行状況を、実行結果管理サーバ１０５に出力されるログファイルの有無に応じて判断した。
【０１９８】
これに対して、本実施形態では、実行部７２２は、非同期処理コードの実行状況をファイルサーバ１０２が管理するファイル管理テーブル（表１９）のステータスカラムの値によって判断する。すなわち、非同期処理コードによるデータ処理の実行状況を、該データ処理のログファイルの有無から判断するのではなく、実行状況を明示的に示す情報を用いることができるため、簡易な処理でより正確に状況を把握することができる。
【０１９９】
ステップＳ１４０１〜Ｓ１４０４までの処理は、図１２のステップＳ１１０１〜Ｓ１１０４までの処理と同様のため、その説明を省略する。また、ステップＳ１４０５〜Ｓ１４１２までの処理は、図１４のステップＳ１３０１〜Ｓ１３０８までの処理と同様のため、その説明を省略する。ステップＳ１４１２の処理が完了すると、処理はステップＳ１４０１に戻る。そして、次のレコードが取得され、実行部７２２は、監視処理（Ｓ１４０１〜Ｓ１４０７）およびリカバリ処理（ステップＳ１４０８〜Ｓ１４１２）を繰り返す。
【０２００】
このように、本実施形態によれば、イベントに応じた非同期処理コードの実行タイミングが利用者側で制御できない場合であっても、非同期処理コードによるデータ処理の多重実行を回避することができる。
【０２０１】
（その他の実施形態）
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【０２０２】
以上、本発明の好ましい実施形態について説明したが、本発明は、これらの実施形態に限定されず、その要旨の範囲内で種々の変形および変更が可能である。
【図１】
2018097822.tif 000022
【図２】
2018097822.tif 000023
【図３】
2018097822.tif 000024
【図４】
2018097822.tif 000025
【図５】
2018097822.tif 000026
【図６】
2018097822.tif 000027
【図７】
2018097822.tif 000028
【図８】
2018097822.tif 000029
【図９】
2018097822.tif 000030
【図１０】
2018097822.tif 000031
【図１１】
2018097822.tif 000032
【図１２】
2018097822.tif 000033
【図１３】
2018097822.tif 000034
【図１４】
2018097822.tif 000035
【図１５】
2018097822.tif 000036