JP2018142165A - プログラム、システム、及び方法 - Google Patents
プログラム、システム、及び方法 Download PDFInfo
- Publication number
- JP2018142165A JP2018142165A JP2017035933A JP2017035933A JP2018142165A JP 2018142165 A JP2018142165 A JP 2018142165A JP 2017035933 A JP2017035933 A JP 2017035933A JP 2017035933 A JP2017035933 A JP 2017035933A JP 2018142165 A JP2018142165 A JP 2018142165A
- Authority
- JP
- Japan
- Prior art keywords
- program
- file
- code
- data
- condition
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Abstract
【課題】 受信するデータに対応するバージョンのプログラムを起動するための仕組みを提供する。
【解決手段】 システムを構成するコンピューターによって、前記システムに含まれるストレージシステムの所定領域へのデータ登録に応じて発生するシステムイベントに従い実行されるプログラムであって、前記システムイベントでの登録対象のデータが第1の条件および第2の条件のいずれを満たすかを判定する判定手段と、前記第1の条件を満たすと前記判定手段が判定した場合に、第1の処理システムに対応する第1のプログラムの起動を行い、前記第2の条件を満たすと前記判定手段が判定した場合に、第2の処理システムに対応する第2のプログラムの起動を行う起動手段として前記コンピューターを機能させる。
【選択図】 図1
【解決手段】 システムを構成するコンピューターによって、前記システムに含まれるストレージシステムの所定領域へのデータ登録に応じて発生するシステムイベントに従い実行されるプログラムであって、前記システムイベントでの登録対象のデータが第1の条件および第2の条件のいずれを満たすかを判定する判定手段と、前記第1の条件を満たすと前記判定手段が判定した場合に、第1の処理システムに対応する第1のプログラムの起動を行い、前記第2の条件を満たすと前記判定手段が判定した場合に、第2の処理システムに対応する第2のプログラムの起動を行う起動手段として前記コンピューターを機能させる。
【選択図】 図1
Description
本発明は、クラウドコンピューティングサービスにおけるイベント駆動型コンピューティングサービスを実現するプログラム、システム、及び方法に関する。
近年、各種のクラウドコンピューティングサービスが存在する。たとえば、Amazon Web Service(以下「AWS」と略す)や、Google Cloud Platform、Microsoft Azureなどである。これらは、仮想サーバーやストレージなどのコンピューティングリソースを、性能や容量に応じて時間単位で課金する形態でサービス提供することで普及してきている。利用者は、これらのサービスを利用することで、自ら物理的な設備を持たなくても、Webシステムなどの情報処理システムを低コストで柔軟に構築することができる。
クラウドコンピューティングサービスの利用例として、ネットワークに接続された各種デバイスやモバイル端末、コンピューター端末から、デバイスやアプリケーションのログ情報や稼働情報を収集してストレージに保存して管理するものがある。ここでは、情報(ファイル等)がストレージにアップロードされるごとにレコードが作成され、ファイル名や置き場所等がデータベースで管理される。
特許文献1には、クラウドコンピューティングサービスを利用したシステムではないが、複数のアプリケーションサーバーのそれぞれに搭載されるアプリケーション間でのデータ連携を実現するアプリケーション連携システムについて記載されている。このアプリケーション連携システムでは、特定パラメータのデータ更新があった際に、このデータ更新をトリガにして、予め登録されているデータドリブン型のスクリプトが起動され、データ更新やアプリケーション間のデータ連携が行われる。
クラウドコンピューティングサービスでも、「ファイルのアップロード」などのイベントの発生に応じて、軽量な処理ができるサービス(以後「イベント駆動型コンピューティングサービス」と呼ぶ)が提供されている。そのサービスで代表的なものが、Amazon Lambda、Google Cloud Functions、Azure Functionsなどである。これらは、クラウドコンピューティングサービスに対して所望の処理を実現するためのプログラムコードを登録しておくことで、イベント発生時に、該処理を実行させることができるサービスである。ここで言うイベントとは、例えば、ファイルの着信、DBテーブルの更新、アプリケーションやデバイスにより生成されたカスタムイベントなどである。
さらに、Amazon Lambdaでは、イベント駆動型の非同期処理コードであるプログラム(Lambda関数と呼ばれる)のバージョンを管理することが可能である。イベントが発生した際には、予め指定したバージョンのLambda関数を呼び出すことのできる仕組みがある。この仕組みにより、開発ワークフローに合わせて、異なるバリエーションのLambda関数の管理が容易となる。
また、近年、上述したクラウドコンピューティングサービスを用いて構築されるシステムをバージョンアップする際などに、Blue−Greenデプロイメントと呼ばれる技術が利用されることがある。まず、クラウドコンピューティングサービス上では、顧客であるクライアントに対してサービスの提供を行っている現行バージョンの処理システムが本番環境として動作している。ここで、次バージョンの処理システムをクラウドコンピューティングサービス上に更に構築し、動作確認のためのテストを完了した後に、本番環境となる処理システムが切り替えられて、システムのバージョンアップが実現される。具体的に、処理システムのテストでは、動作検証のためのテストリクエストを、決められたスケジュールに従って送信し、それらのリクエストに対し正常な動作を確認することとなる。ここで、現行のバージョンのアプリケーションが動作する、切り替え元の処理システムは、Blue環境と呼ばれ、次バージョンのアプリケーションが動作する、切り替え先の処理システムは、Green環境と呼ばれる。
上述したイベント駆動型コンピューティングサービスでは、2つの処理システムそれぞれに対応する異なるバージョンの2つのプログラム(非同期処理コード)を用意することは可能である。しかしながら、前述のクラウドコンピューティングサービスでは、データを保存するストレージは、両処理システムで共通のものが利用される。ここで、ストレージの特定の領域へデータをアップロードするというイベントの発生に応じて起動できるプログラムは1つしか指定することができない。したがって、上述したシステムのバージョンアップ前のような2つの処理システムが共存する期間において、発生するイベントが2つの処理システムのいずれかのデータ処理に関係するものだとしても、現状、同じバージョンのプログラムが起動されてしまう。
本発明は、上記課題に鑑みてなされたものであり、対象のデータが満たす条件に応じたプログラムを起動させるための仕組みを提供することを目的とする。
上記課題を解決するために、本発明は、システムを構成するコンピューターによって、前記システムに含まれるストレージシステムの所定領域へのデータ登録に応じて発生するシステムイベントに従い実行されるプログラムであって、前記システムイベントでの登録対象のデータが第1の条件および第2の条件のいずれを満たすかを判定する判定手段と、前記第1の条件を満たすと前記判定手段が判定した場合に、第1の処理システムに対応する第1のプログラムの起動を行い、前記第2の条件を満たすと前記判定手段が判定した場合に、第2の処理システムに対応する第2のプログラムの起動を行う起動手段として前記コンピューターを機能させる。
本発明によれば、対象のデータが満たす条件に応じたプログラムを起動させることができる。
以下、発明を実施するための形態について、図面を用いて説明する。
(実施例1)
図1は、本実施形態に係るシステムの全体構成の一例を示す図である。システムには、クライアント装置101、検証用クライアント装置102、ファイルサーバー103、ファイル情報管理システム104、イベント情報管理サーバー105が含まれる。特に、ファイルサーバー103、ファイル情報管理システム104、及びイベント情報管理サーバー105は、クラウドコンピューティングサービスによって提供されるプラットフォームやリソースを利用して構築されるシステムに含まれる。なお、以降、このシステムをクラウドシステムと呼ぶ場合もある。IaasやPaasなどのクラウドコンピューティングサービスは、リソースとして、例えばインターネット上のデータセンターに存在するサーバーコンピューター上で動作する複数の仮想マシンやストレージなどを提供する。仮想マシンとは、仮想化技術によって、サーバーコンピューターを物理的な構成にとらわれずに論理的な単位で分割し、それぞれが独立したオペレーティングシステムをもって動作する論理的なコンピューターである。
図1は、本実施形態に係るシステムの全体構成の一例を示す図である。システムには、クライアント装置101、検証用クライアント装置102、ファイルサーバー103、ファイル情報管理システム104、イベント情報管理サーバー105が含まれる。特に、ファイルサーバー103、ファイル情報管理システム104、及びイベント情報管理サーバー105は、クラウドコンピューティングサービスによって提供されるプラットフォームやリソースを利用して構築されるシステムに含まれる。なお、以降、このシステムをクラウドシステムと呼ぶ場合もある。IaasやPaasなどのクラウドコンピューティングサービスは、リソースとして、例えばインターネット上のデータセンターに存在するサーバーコンピューター上で動作する複数の仮想マシンやストレージなどを提供する。仮想マシンとは、仮想化技術によって、サーバーコンピューターを物理的な構成にとらわれずに論理的な単位で分割し、それぞれが独立したオペレーティングシステムをもって動作する論理的なコンピューターである。
ネットワーク100は、システムの全体構成に含まれる各要素間で通信を行うための基盤である。本実施例においては、クライアント装置101、検証用クライアント装置102とそれら以外の構成要素との間はインターネットによって接続されるものとして説明する。それら以外の構成要素間においては、イントラネット、インターネットまたはその他のネットワークシステムを介して接続されている。
クライアント装置101、検証用クライアント装置102は、図1に示す図の各構成要素のうち、ネットワーク100を介してファイルサーバー103、ファイル情報管理システム104と相互に接続する。本実施例においては、クライアント装置101、検証用クライアント装置102はPC(パーソナルコンピューター)を前提に説明を進めるが、ネットワーク100を介した通信機能を有する端末であれば種別は問わない。なお、本実施例においては、クライアント装置101は、ファイル情報管理システム104のBlue環境と通信を行う。つまり、クライアント装置101は、クラウドシステムにより提供されるサービスの利用者が操作するPCである。検証用クライアント装置102は、ファイル情報管理システム104のGreen環境に対し、動作検証のためのテストリクエストを、決められたスケジュールに従って送信する。
ファイルサーバー103は、クライアント装置101、検証用クライアント装置102から送信されるファイルの実体を受信し、保存するストレージシステムとして機能する。ファイルサーバー103は、クライアント装置101、検証用クライアント装置102から送信される様々なフォーマットのファイルを保存する機能を有する。
ファイル情報管理システム104は、ファイル情報管理アプリケーションが稼働する仮想マシン群によって構成される。ファイル情報管理システム104は、クライアント装置101、検証用クライアント装置102から送信されるファイルの属性情報とファイルサーバー103上の保存場所情報(URL)を関連付けて保存する。
イベント情報管理サーバー105は、イベント駆動型コンピューティングサービスにおけるプログラムコードの管理及び実行を行う。
ここで、イベント駆動型コンピューティングサービスが利用され始める前について説明する。従来、クラウドコンピューティングサービスの利用者により、イベントを検知するためのポーリングや所望の処理を実行するためのアプリケーションと該アプリケーションが稼働するためのインフラの構築や管理が必要だった。しかしながら、イベント駆動型コンピューティングサービスでは、クラウドコンピューティングサービス側で、所望の処理を実現するプログラムコードを実行するためのインフラが用意されて、かつ、イベントを検知するためのポーリング処理が実行される。そのため、クラウドコンピューティングサービスの利用者は、イベント処理の実現が従来に比べて随分と容易になった。
イベント駆動型コンピューティングサービスの利用者は事前にイベント情報管理サーバー105にプログラムとそれを実行するためのファイルサーバー103で発生するイベントとを関連付けて登録する。ここでのイベントとは、具体的には「ファイルサーバー103の所定領域にファイルがアップロードされたこと」や「ファイルサーバー103の所定のパスに保存されるファイルが更新されたこと」などである。すなわち、イベントは、ファイルサーバー103で保存されるファイルに対してクライアント装置101などが行う操作のことを指す。また、イベント情報管理サーバー105には、プログラムを実行する仮想マシンの環境情報などコンピューティングリソースの情報も、イベントと関連付けて登録される。環境情報として、具体的には、仮想マシンで稼働するCPUやRAMの性能が、イベント登録時に指定される。これにより、イベント情報管理サーバー105は、ファイルサーバー103でイベントが検出されたタイミングで、ファイルサーバー103で実行される処理とは非同期で所定のプログラムを実行できる。以降、イベント情報管理サーバー105が、ファイルサーバー103で検出されるイベントに応答して実行されるプログラムを非同期処理コードと呼ぶ。また、ファイルサーバー103で検出されるイベントを、システムイベントとも呼ぶ。
図2は、クライアント装置101、検証用クライアント装置102のハードウェア構成の一例を示す図である。
システムバス200はクライアント装置101、検証用クライアント装置102を構成する各ハードウェアを相互に接続するバスである。本実施例においては特に言及しない限り、システムバス200はCPU201からの制御命令をシステムバス200に接続された各ハードウェアに伝播させるものとする。
CPU201は、RAM202及び記憶装置203から読み込んだプログラムを実行し、本実施例を実現するためにシステムバス200で接続されたクライアント装置の各ハードウェアを直接的あるいは間接的に制御する。RAM202は、CPU201が動作するためのワーク領域として利用される一時メモリ領域である。記憶装置203は、基本ソフトウェアであるOSやその他ソフトウェアモジュールが記憶されているHDDに代表されるような外部記憶装置である。
ネットワーク装置204は、ネットワーク100に接続して他の装置と通信を行うハードウェアである。入出力インターフェース205は、入出力装置206と接続するためのインターフェースである。入出力インターフェース205は例えばPS2やUniversal Serial Bus(USB)、アナログやデジタルのディスプレイインターフェースを備える。入出力装置206は、入出力インターフェース205を介して、情報のインプットおよびアウトプットを行う装置である。入出力装置206は例えばディスプレイ、キーボード、マウスなどがある。
図3は、クラウドシステムが構築されるデータセンター上に存在するサーバーコンピューターのハードウェア構成の一例を示す図である。
システムバス300は、サーバーコンピューターを構成する各ハードウェアを相互に接続するバスである。本実施例においては特に言及しない限り、システムバス300はCPU301からの制御命令を、システムバスに接続された各ハードウェアに伝播させるものとする。
CPU301は、RAM302および記憶装置303から読み込んだプログラムを実行し、本実施例を実現するためにシステムバス300で接続されたクライアント装置の各ハードウェアを直接的あるいは間接的に制御する。RAM302は、CPU301が動作するためのワーク領域として利用される一時メモリ領域である。記憶装置303は、基本ソフトウェアであるOSやその他ソフトウェアモジュールが記憶されているHDDに代表されるような外部記憶装置である。ネットワーク装置304は、ネットワーク100に接続して他の装置と通信を行うハードウェアである。
なお、ファイルサーバー103、ファイル情報管理システム104、イベント情報管理サーバー105の機能構成も、図3に示すハードウェア構成と同じ構成である。つまり、それらは、仮想マシンソフトウェアによって、アプリケーションソフトウェアが実現され、物理ハードウェア要素と同様の挙動をとるものとする。
図4は、クライアント装置101、検証用クライアント装置102のソフトウェア構成の一例を示す図である。
アプリケーション400は、クライアント装置101の記憶装置203に格納されてCPU201によって実行される、クライアント装置の情報を送信するアプリケーションである。アプリケーション400は、通信部401、情報収集部402から構成される。
通信部401は、ネットワーク装置204を介してファイルサーバー103、ファイル情報管理システム104と通信を行う。情報収集部402は、クライアント装置101が生成するクライアント装置情報を収集して、ファイルとして記憶装置203に保存する。具体的には、情報収集部402は、クライアント装置101が出力するハードウェアのログ情報などを逐次ファイルとして記憶装置203に保存する。
アプリケーション410は、検証用クライアント装置102の記憶装置203に格納されてCPU201によって実行される、ファイル情報管理システム104を検証するためのアプリケーションである。アプリケーション410は、通信部411、検証情報管理部412から構成される。
通信部411は、検証情報管理部412から、ファイル情報管理システム104が正常に稼働しているかどうかを確認するための検証用ファイル情報を、検証情報管理部412から取得する。その上で、通信部411は、ネットワーク装置204を介してファイルサーバー103、ファイル情報管理システム104と通信を行い、ファイル情報管理システム104の検証を行う。
検証情報管理部412は、通信部411がファイル情報管理システム104に対して送信する検証用ファイル情報を記憶装置203に保存する。具体的には、検証情報管理部412は、ファイル情報管理システムに対する正常系のリクエストや異常系のリクエストおよび関連するファイルを、プロジェクトファイル形式で保存する。
図5は、ファイルサーバー103で稼働するアプリケーション500のソフトウェア構成の一例を示す図である。
アプリケーション500は、ファイルサーバー103の記憶装置303に格納されCPU301によって実行される、ファイル管理のためのアプリケーションである。アプリケーション500は、通信部501、ファイル管理部502、ファイル保存部503から構成される。
通信部501は、ネットワーク装置304を介してクライアント装置101、検証用クライアント装置102、ファイルサーバー103、ファイル情報管理システム104、イベント情報管理サーバー105と通信を行う。
ファイル管理部502は、通信部501を介してクライアント装置101、検証用クライアント装置102、ファイル情報管理システム104、イベント情報管理サーバー105からのリクエストを受信する。また、ファイル管理部502は、通信部501を介してイベント情報管理サーバー105へイベントを送信する。
ファイル保存部503は、ファイル管理部502からの指示に従って、クライアント装置101、検証用クライアント装置102から受信したファイルの実体を保存する。またファイル保存部503は、ファイル管理部502からの指示にしたがって図1に示す本実施例の各構成要素からリクエストに応じたファイルの実体を送信する。ファイル保存部503がファイルの実体を管理するデータの一例を、以下のファイル管理テーブルに示す。
IDカラムには、ファイルサーバー103に保存されるファイルをアプリケーション500が一意に識別するための値が格納される。保存パスカラムには、ファイルサーバー103におけるファイルの保存先フォルダのパス情報が格納される。ファイル名カラムには、ファイルサーバー103に保存されるファイルの名称の値が格納される。ファイルデータカラムには、ファイルサーバー103に保存されるファイルの実体となるバイナリデータが保存される。属性カラムには、ファイルサーバー103に保存されるファイルの属性情報が格納される。本実施例においては、属性カラムには、該ファイルのイベントを実行する非同期処理コード名が、属性情報として格納されている。例えば、本テーブルのIDカラムが「1」のデータは、「GreenProc」の非同期処理コードが実行されることを意味している。
図6は、ファイル情報管理システム104の構成例を示す図である。図6(A)は、Green環境610が生成される前のファイル情報管理システム104を示す図である。図6(A)において、ファイル情報管理システム104は、Blue環境600で構成され、CPU301によって実行される。なお、のように、ロードバランサーと仮想マシンとを含むBlue環境600などを、処理システムとも呼ぶ。
図6(B)は、Green環境610が生成された後のファイル情報管理システム104を示す図である。図6(B)において、ファイル情報管理システム104は、図6(A)のファイル情報管理システム104の構成にGreen環境610が追加されて、処理システムを複数含むこととなる。Green環境610は、検証用クライアント装置102による動作検証が完了した後に、Blue環境600と代わって本番環境となる。
ここで、システムバージョンアップの方法であるBlue−Greenデプロイメントについて説明する。ここで、システムのバージョンアップとは、例えば、システム内の仮想マシンで実行されるアプリケーションのバージョンアップが含まれる。バージョンアップ後のシステムは、提供できる機能が追加されたり、管理するデータの種類や形式が変更されたりする。まず、クラウドコンピューティングサービス上では、外部ネットワークからのリクエストを受け付けて処理を行っている本番環境としての処理システムが動作している。処理システムは、少なくとも、リクエストを処理する1以上の仮想マシンと、それらにリクエストを分散させる負荷分散装置として機能するロードバランサーとで構成される。そして、該処理システムをバージョンアップさせたい場合には、現行のバージョンの該処理システムとは異なるバージョンの処理システムをクラウドコンピューティングサービス上に更に構築する。そのあと、バージョンアップさせたいタイミングになったら、クラウドコンピューティングサービス上で外部ネットワークからのリクエストの送信対象を示す接続先の設定の変更などを行い、本番環境となる処理システムを切り替える。ここでは、本番環境がバージョンアップ後の処理システムに切り替えられる。この切り替えによって、システムのバージョンアップが実現される。
図6においてBlue環境600は、現行のバージョンのアプリケーションが動作する処理システムであり、ロードバランサー601、仮想マシン602から構成される。Green環境610は、次バージョンのアプリケーションが動作する処理システムであり、ロードバランサー611、仮想マシン612から構成される。なお、ロードバランサー601、611、仮想マシン602、612は、それぞれの環境において、複数存在しても良い。
ロードバランサー601は、負荷分散装置であり、クライアント装置101から受け付けたリクエストを仮想マシン602に転送する。仮想マシン602は、ロードバランサー601から転送されたリクエストを受け付けて処理するWebサーバーである。
ロードバランサー611は、負荷分散装置であり、検証用クライアント装置102から受け付けた動作検証リクエストを仮想マシン612に分散させる。仮想マシン612は、ロードバランサー611から転送された、リクエストを受け付けて処理するWebサーバーである。
図7は、仮想マシン602、612で稼働するアプリケーション700のソフトウェア構成の一例を示す図である。
アプリケーション700は、仮想マシン602、612上に配置されてCPU301によって実行される、ファイル情報を管理するためのアプリケーションである。アプリケーション700は、通信部701、ファイル情報管理部702、ファイル情報保存部703から構成される。
通信部701は、ネットワーク装置304を介して、ファイルサーバー103と通信を行う。さらに、通信部701は、Blue環境であればロードバランサー601と通信を行い、Green環境であればロードバランサー611と通信を行う。
ファイル情報管理部702は、通信部701を介してロードバランサー601、611、ファイルサーバー103からのリクエストを受信する。ファイル情報管理部702は、取得したリクエスト情報をもとにファイル情報保存部703にファイル情報の保存を要求する。
ファイル情報保存部703は、ファイル情報管理部702からの指示に従って、ファイルサーバー103から受信したファイルの実体から抽出した各属性情報を保存する。イベント情報管理サーバー105が実行する非同期処理コードの実行結果として、各属性情報がファイル情報保存部703に保存される。
ファイル情報保存部703がファイルの属性情報を管理するデータの一例を、以下のファイル情報管理テーブルに示す。
IDカラムには、ファイル情報管理システム104において保存するファイルの属性情報をアプリケーション700が一意に識別するための値が格納される。アップロードファイルパスカラムには、ファイルサーバー103に保存されるファイル実体のパスが格納される。属性カラムには、ファイルの実体から抽出した属性情報がそれぞれ格納される。属性カラムに格納される値としては、アプリケーションの用途に関する情報などがある。例えば、ファイルサイズやファイルから抽出した全文検索用のインデックステキストデータ等が挙げられる。なお、本実施例においては、抽出する属性情報の値については特に限定するものではない。
図8は、イベント情報管理サーバー105で稼働する各アプリケーションのソフトウェア構成の一例を示す図である。
イベント情報管理サーバー105は、アプリケーション800、アプリケーション820、実行環境830から構成される。アプリケーション800、アプリケーション820、実行環境830は、イベント情報管理サーバー105の記憶装置303に格納され、CPU301によって実行される。アプリケーション800は、イベント情報管理サーバー105で実行する非同期処理コードの保存や、非同期処理コードの実行設定の管理を行う。アプリケーション800は、通信部801、非同期処理コード管理部802、非同期処理コード保存部803、非同期処理コード設定保存部804、非同期処理コード810から構成される。
通信部801は、ネットワーク装置304を介してクライアント装置101、ファイルサーバー103、ファイル情報管理システム104、アプリケーション820と通信を行う。非同期処理コード管理部802(以降、管理部802と記載)は、通信部801を介してクライアント装置101からの非同期処理コード登録リクエストを受信する。また、アプリケーション820からの非同期処理コード要求リクエストを受信する。
非同期処理コード保存部803(以降、保存部803と記載)は、管理部802からの指示に従って、クライアント装置101から受信した非同期処理コードを保存する。また、保存部803は、管理部802からの指示に従って、アプリケーション820に非同期処理コードを送信する。保存部803が非同期処理コードを管理するデータの一例を、以下の非同期処理コード管理テーブルに示す。
IDカラムには、アプリケーション800において、保存される非同期処理コードを一意に識別するための値が格納される。コード名カラムには、アプリケーション800において、保存される非同期処理コードのコード名称の値が格納される。ファイルデータカラムは、アプリケーション800において、保存される非同期処理コードのバイナリデータが保存される。次に、非同期処理コード設定保存部804(以降、設定保存部804と記載)は、管理部802からの指示に従って、クライアント装置101から受信した非同期処理コードの実行設定を非同期処理コードの実体と関連付けて保存する。また、保存部803は、管理部802からの指示に従って、アプリケーション820に非同期処理コードの実行設定を非同期処理コードと合わせて送信する。
設定保存部804が非同期処理コードの実行設定を管理するデータの一例を、以下の実行環境設定テーブル、イベント設定テーブルに示す。
IDカラムには、アプリケーション800において、非同期処理コードを実行する仮想マシン環境の設定を一意に識別するための値が格納される。実行環境タイプカラムには、非同期処理コードを実行する仮想マシン環境の特徴を示す名称が格納される。CPUカラムには、非同期処理コードを実行する仮想マシン環境のCPU値が格納される。RAMカラムには、非同期処理コードを実行する仮想マシン環境のRAM値が格納される。HDDカラムには、非同期処理コードを実行する仮想マシン環境のHDDのサイズが格納される。
IDカラムには、アプリケーション800において、非同期処理コードの実行対象となるイベントを一意に識別するための値が格納される。対象ファイルパスカラムには、非同期処理コードを実行する対象のファイルパスが格納される。対象イベントカラムには、非同期処理コードを実行する条件となる対象ファイルパスカラムに格納されたファイルパスに該当するファイルに対して実行された操作の内容が格納される。非同期処理コードIDカラムには、実行される非同期処理コードに該当する非同期処理コード管理テーブルのIDカラムの値が格納される。実行環境IDカラムには、非同期処理コードを実行する環境に該当する実行環境設定テーブルのIDカラムの値が格納される。
ここで、イベント設定テーブルのIDカラムの値が「1」のレコードを例にとって説明する。これは、「logdata」以下のフォルダにファイルが「追加」された場合に「Dispatch」の非同期処理コードをCPU 2GHz、RAM 4GB、HDD1GBの仮想マシン環境で実行することを意味している。
次に、非同期処理コード810は、設定保存部804によって保存された非同期処理コードのバイナリデータであり、イベント情報管理サーバー105の記憶装置303に格納され、CPU301によって実行される。本実施例においては、ディスパッチコード811、Blue環境コード812、Green環境コード813が格納されるものとする。
ディスパッチコード811は、「logdata」以下のフォルダにファイルが「追加」された場合に実行される非同期処理コード「Dispatch」のバイナリデータである。Blue環境コード812は、現行のバージョンの非同期処理コード「BlueProc」のバイナリデータである。Blue環境コード812のバージョンは、Green環境コード813のバージョンと比較して古い。Green環境コード813は、次バージョンの非同期処理コード「GreenProc」のバイナリデータである。Green環境コード813のバージョンは、Blue環境コード812のバージョンと比較して新しい。
アプリケーション820は、ファイルサーバー103から受信するイベントに応じた非同期処理コードとその実行設定をアプリケーション800から取得する。さらに、アプリケーション820は、取得した非同期処理コードを実行する実行環境830を作成するものである。
アプリケーション820は、通信部821、非同期処理コード実行管理部822、非同期処理コード実行部823、非同期処理コード実行環境管理部824から構成される。通信部821は、ネットワーク装置304を介しファイルサーバー103、ファイル情報管理システム104、アプリケーション800、実行環境830と通信を行う。非同期処理コード実行管理部822(以降、管理部822と記載)は、通信部821を介してファイルサーバー103からイベント、アプリケーション800から非同期処理コードおよび実行設定を受信する。
非同期処理コード実行部823(以降、実行部823と記載)は、管理部822からの指示に従って、ファイルサーバー103から受信したイベントに対応する非同期処理コードおよび実行設定を受信する。また、実行部823は、ファイルサーバー103から受信した実行設定に基づき、実行環境830を生成し、イベントに対応する非同期処理コードの実行を指示する。
非同期処理コード実行環境管理部824(以降、管理部824と記載)は、実行環境830で実行する非同期処理コードの実行状況を管理する。管理部824が管理する実行環境830の稼働条件の一例を、以下の実行環境監視項目テーブルに示す。
IDカラムには、アプリケーション820において、実行環境830の稼働状況を管理する項目を一意に識別するための値が格納される。監視項目カラムには、実行環境830で実行中の非同期処理コードの実行状況を監視するための項目が格納される。監視項目値カラムには、監視項目カラムに格納された項目に対する閾値が格納される。例えば、実行環境監視項目テーブルのIDカラムの値が「1」のレコードの場合、実行環境830で実行される非同期処理コードのリトライを5回まで許容することを意味する。5回実行しても非同期処理コードがイベントの処理を完了できなかった場合は、エラーとなりアプリケーション820は非同期処理コードの実行を中断する。
また、実行環境監視項目テーブルのIDカラムの値が「2」のレコードの場合、実行環境830で実行される非同期処理コードがイベントの処理に要する時間を300秒までと制限することを意味する。300秒を越えても非同期処理コードがアプリケーション820に対して処理完了の通知を送信しない場合は、処理を中断させる。
次に、実行環境830は、ファイルサーバー103がアプリケーション820に送信したイベントを対応する非同期処理コードを実行して処理するための仮想マシン環境である。実行環境830は、通信部831、実行部832から構成される。通信部831は、ネットワーク装置304を介しファイルサーバー103、ファイル情報管理システム104、アプリケーション800、実行環境830と通信を行う。実行部832は、通信部831を介してアプリケーション820から受信したファイルサーバー103で発生したイベントを、アプリケーション800から受信した非同期処理コードを実行して処理する。また、実行部832は、管理部824から逐次実行監視リクエストを受信し、実行中の非同期処理コードに対する監視リクエストをアプリケーション820から受信して、非同期処理コードの実行を制御する。
図9に、図8で説明したイベント情報管理サーバー105上での非同期処理コードの登録処理の一連の流れをシーケンス図で示す。図9は、本実施例においてクライアント装置101がアプリケーション800に非同期処理コードを登録する一連の処理を示したシーケンス図である。なお、クライアント装置101ではなく、不図示のシステム管理者PCが非同期処理コードを登録しても良い。
S901において、クライアント装置101は、通信部401を介してアプリケーション800に非同期処理コード登録リクエストを送信する。非同期処理コード登録リクエストとしてアプリケーション800に送信されるレコードの一例を、非同期処理コード登録リクエストレコードとして以下に示す。
非同期処理コードカラムには、非同期処理コードの実体がバイナリデータで格納される。非同期処理コード名カラムには、非同期処理コードのコード名が格納される。実行対象ファイルパスカラムには、非同期処理コードを実行する対象となるファイルサーバー103上のファイルパスが格納される。アプリケーション820は、ファイルサーバー103から受信するイベントに含まれるファイルパスを参照して、このカラムに格納されたパスと一致した場合に非同期処理コードを実行すべきイベントであると判別することになる。実行対象イベントカラムには、ファイルサーバー103上の実行対象ファイルパスに格納されたファイルに対して、非同期処理コードを実行する対象とする操作が格納される。実行環境IDカラムには、非同期処理コードを実行する実行環境に該当する実行環境設定テーブルのIDカラムの値が格納される。
例えば、表7に示す非同期処理コード登録リクエストレコードの1行目は、ファイルサーバー103の「logdata」フォルダ以下にファイルが追加された場合に実行される非同期処理コード「Dispatch」の登録要求である。なお、2行目の「BlueProc」および3行目の「GreenProc」はファイルパス、イベントの値ともに空であるが、これはコードのみを登録し、特にイベントとの紐づけは行わないことを意味する。なお、本実施例においては、「Dispatch」がディスパッチコード811、「BlueProc」がBlue環境コード812、「GreenProc」がGreen環境コード813に対応するものとする。
次に、S902において、アプリケーション800は、通信部701が受信した非同期処理コード登録リクエストレコードから非同期処理コード管理レコードを生成する。さらに、それを保存部803の非同期処理コード管理テーブルに格納する。非同期処理コード管理レコードのコード名カラムには非同期処理コード登録リクエストレコードの非同期処理コード名カラムの値が格納される。非同期処理コード管理レコードのファイルデータカラムには非同期処理コード登録リクエストレコードの非同期処理コードカラムのバイナリデータが格納される。
S903において、アプリケーション800は、イベント設定レコードを生成して、設定保存部804のイベント設定テーブルに格納する。イベント設定レコードの対象ファイルパスカラムには、非同期処理コード登録リクエストレコードの実行対象ファイルパスカラムの値が格納される。イベント設定レコードの対象イベントカラムには、非同期処理コード登録リクエストレコードの実行対象イベントカラムの値が格納される。イベント設定レコードの非同期処理コードIDカラムには、S902で保存部803の非同期処理コード管理テーブルに格納された非同期処理コード管理レコードのIDカラムの値が格納される。イベント設定レコードの実行環境IDカラムには、非同期処理コード登録リクエストレコードの実行環境IDカラムの値が格納される。
以上の図9で示すシーケンスの処理によって、アプリケーション800に非同期処理コードが登録されることになる。
図10に、Blue環境における一連の処理の流れをシーケンス図で示す。図10は、クライアント装置101がファイル情報管理システムのBlue環境600に対してファイル情報を登録して、ファイル情報管理システム104のBlue環境コード812が実行されるまでの一連の処理を示したシーケンス図である。
S1001において、クライアント装置101は、通信部401を介してデータ登録のためのリクエストをファイル情報管理システム104のBlue環境600に送信する。なお、不図示のDNS(Domain Name System)サーバーで、クライアント装置101からのリクエストの送信先がBlue環境600のロードバランサー601に設定されているものとする。具体的には、DNSサーバーで保持されるレコードが、クライアント装置101からのリクエストの送信先として、Blue環境600のロードバランサー601を示している。つまり、DNSサーバーのレコードが書きかえられることで、Blue−Greenデプロイメントが実行される。ここでの登録対象となるデータは、情報収集部402がファイルとして出力したログ情報などである。ファイル情報登録リクエストとしてファイル情報管理システム104のBlue環境600に送信されるレコードの一例を、ファイル情報登録リクエストレコードとして以下に示す。
ファイル名カラムには、登録されるファイルの名称が格納される。アップロード先フォルダカラムには、ファイルのアップロード先となるファイルサーバー103のフォルダパスが格納される。次に、S1002において、ファイル情報管理システム104のBlue環境600のロードバランサー601は、ファイル情報登録リクエストを受信し、仮想マシン602にリクエストに送信する。仮想マシン602で稼働するアプリケーション700の通信部701は、ロードバランサー601からファイル情報登録リクエスト(表8)を受信する。ファイル情報管理部702は、通信部701が受信したファイル情報登録リクエスト(表8)をもとに、登録対象のデータに関する情報であるファイル情報をファイル情報保存部703に登録する。ファイル情報管理部702は、ファイル情報の登録が成功すると、通信部701を介して、クライアント装置101にファイル情報登録成功を示すレスポンスを送信する。
S1003において、クライアント装置101は、通信部401を介して情報収集部402がファイルとして出力したログファイルを登録するファイルアップロードリクエストをファイルサーバー103に送信する。ファイルアップロードリクエストとしてファイルサーバー103に送信されるレコードの一例をファイルアップロードリクエストレコードに示す。
ファイルデータカラムには、送信対象のファイルのバイナリデータが格納される。アップロードパスカラムには、ファイルのアップロード先となるファイルサーバー103に存在するファイルパスが格納される。関連非同期処理コード名カラムには、ファイルのアップロードに関連して実行を行う非同期処理コード810のコード名が格納される。なお、図10のシーケンスにおいては、Blue環境の非同期処理コードであるBlue環境コード812を実行することを想定する。クライアント装置101は、表9で示すように、関連非同期処理コード名カラムに値を入れずに、ファイルアップロードリクエストを送信する。一方、表13を用いて後述する検証用クライアント装置からのファイルアップロードリクエストには、関連非同期処理コード名カラムに値が入る。これにより、クライアント装置からのリクエストのカラムをクライアント装置で動作するアプリケーションの更新の手間が不要となり、また、クライアント装置101からのリクエストのデータサイズを増やさずに済む。
したがって、関連非同期処理コード名カラムが「空」であることから、検証用クライアント装置102ではなくクライアント装置101からのリクエストであることが判別可能となる。つまり、関連非同期処理コード名カラムが「空」であることに基づき、本リクエストでの登録対象のデータが第1の条件を満たすと判定され、Blue環境コード812が起動される。
次に、S1004において、ファイルサーバー103は、通信部501が受信したファイルアップロードリクエストに含まれる各データをファイル保存部503のファイル管理テーブルに追加する。ファイルサーバー103は、ファイル保存部503への各データの追加が完了すると、通信部501を介してクライアント装置101にファイルアップロードが完了したことを通知するレスポンスを送信する。
S1005において、ファイルサーバー103は、ファイルのアップロードが完了したことを示すイベントを生成して、通信部501を介してアプリケーション820に通知する。ファイルアップロード完了イベントとして、アプリケーション820に送信されるレコードの一例を、以下のファイルアップロード完了イベントに示す。
ファイルパスカラムには、イベントを生成するきっかけとなったファイルのファイルサーバー103でのファイルパスが格納される。イベント種別カラムには、ファイルパスカラムに格納されたファイルパスに保存されているファイルサーバー103のファイルに対して行われた操作内容が格納される。ファイルサーバー103は、S1003でクライアント装置101からファイルを新規にアップロードされたため、上述の例においては「追加」の値が入る。
次に、S1006において、アプリケーション820は、通信部821を介して受信したファイルアップロード完了イベントの内容を管理部822で確認する。まず、管理部822は、ファイルアップロード完了イベントのファイルパスカラムの値からファイル名を除いたフォルダパスと、イベント種別カラムの値を取得する。次に、管理部822は、通信部821を介して、アプリケーション800の設定保存部804のイベント設定テーブル(表5)を参照する。そして、対象ファイルパスカラムの値と対象イベントカラムの値の組み合わせと一致する、フォルダパスとイベント種別カラムの値の組み合わせのレコードを検索し、取得する。
S1007において、管理部822は、S1006で受信したイベントに対応する非同期処理コードをアプリケーション800から取得する。管理部822は、イベント設定レコードの非同期処理コードIDカラムの値が一致するレコードを保存部803の非同期処理コード管理テーブル(表3)から検索する。そして、管理部822は、ファイルデータカラムに格納された非同期処理コードのバイナリデータを取得する。なお、本実施例においては、ここでディスパッチコード811のバイナリデータが取得されるものとする。
S1008において、管理部822は、S1007で取得した非同期処理コード(ディスパッチコード811)を実行するための設定をアプリケーション800から取得する。管理部822は、イベント設定レコードの実行環境IDカラムの値が一致するレコードを、保存部803の実行環境設定テーブル(表4)から検索し、取得する。
S1009において、管理部822は、S1008で取得した実行環境設定レコードに基づく性能の実行環境830の仮想マシンを作成し、起動する。
S1010において、管理部822は、通信部821を介して実行環境830の記憶装置303にS1007で取得した非同期処理コード(ディスパッチコード811)を配備する。
S1011において、実行部823は、通信部821を介して実行環境830の実行部832に非同期処理コード実行リクエストを送信する。非同期処理コード実行リクエストとして、実行部832に送信されるレコードの一例を、以下の非同期処理コード実行リクエストレコードに示す。
ファイルパスカラムには、非同期処理コードの処理対象であるファイルのファイルサーバー103上でのパスが格納される。格納されるパスは、具体的には、S1005で受信したファイルアップロード完了イベントレコードのファイルパスカラムの値である。イベント設定IDカラムには、アプリケーション820がS1006で取得したイベント設定レコードのIDカラムの値が格納される。
S1012において、実行部832は非同期処理コード実行リクエストを受信するとS1010で受信したディスパッチコード811をRAM302に読み込み、非同期処理コードの実行を開始する。
ここで、図11に、S1013からS1015で行われるディスパッチコード811の処理の実コードの一例を示す。図11は、ディスパッチコード811を示す図であり、本コードは実行環境830の実行部832で実行される。
1行目は、ディスパッチを行う関数の開始を示す。2行目から12行目では、本コードにおけるローカル変数定義を行う。また、9行目で、イベントの発生契機となったファイルサーバー103のファイルパスを変数に代入している。なお、本実施例においては、ファイルパスは、「logdata/client002/201605.log」となる。
13行目では、9行目で定義したファイルパスに対応するファイルサーバー103のファイル情報の取得を行う。14行目では、ディスパッチ先の非同期処理コード名を定義し、初期化する。
15行目では、13行目のファイルサーバー103からのファイル情報の取得に失敗したかどうかを判定する。16行目は、15行目の判定処理において、ファイルサーバー103からのファイル情報の取得に失敗したと判定された場合に行われる処理であり、エラーが発生した旨をコンソール表示する。
17行目以降は、15行目の判定処理において、ファイルサーバー103からのファイル情報の取得に成功したと判定された場合に行われる処理である。なお、本実施例においては、15行目の判定処理において、ファイルサーバー103からのファイル情報の取得に成功したと判定されたものとする。よって、17行目以降の処理が実行される。
18行目では、17行目で取得したファイル情報から、属性情報である関連非同期処理コード名を抽出する。なお、図10のシーケンスにおいては、表9のデータが取得されるものとする。よって、関連非同期処理コード名は、「空」の値が取得される。19行目では、18行目で取得した関連非同期処理コード名が「空」であるかどうかを判定する。
20行目は、19行目の判定処理において、関連非同期処理コード名が「空」であると判定された場合に行われる処理である。ここでは、14行目で定義したディスパッチ先の非同期処理コード名に、Blue環境コード812の非同期処理コード名である「BlueProc」を代入する。なお、図10のシーケンスにおいては、19行目の判定処理において、関連非同期処理コード名が「空」である、つまり第1の条件を満たすと判定されたものとする。そのため、20行目の処理が実行される。
21行目から23行目は、19行目の判定処理において、関連非同期処理コード名が「空」でないと判定された場合に行われる処理であり、14行目で定義したディスパッチ先の非同期処理コード名に、18行目で取得した関連非同期処理コード名を代入する。なお、図10のシーケンスにおいては、19行目の判定処理において、関連非同期処理コード名が「空」であると判定されているため、21行目から23行目の処理は実行されない。
24行目から27行目は、ディスパッチ先の関連非同期処理コードを呼び出すための変数定義を行う。28行目は、ディスパッチ先の関連非同期処理コードを呼び出す処理を行う。この際、呼び出す関連非同期処理コード名は、14行目で定義した非同期処理コード名となる。図10のシーケンスにおいては、20行目で代入された、第1の処理システムに対応する第1のプログラムとして、Blue環境コード812の非同期処理コード名である「BlueProc」が呼び出される。
29行目は、28行目のディスパッチ先の関連非同期処理コードの呼び出しに成功したかどうかを判定する。30行目は、29行目の判定処理において、ディスパッチ先の関連非同期処理コードの呼び出しに失敗したと判定された場合に行われる処理であり、エラーが発生した旨をコンソール表示する。
31行目から33行目は、9行目の判定処理において、ディスパッチ先の関連非同期処理コードの呼び出しに成功したと判定された場合に行われる処理であり、ディスパッチコード811の正常終了処理を行う。なお、本実施例においては、29行目の判定処理において、ディスパッチ先の関連非同期処理コードの呼び出しに成功したと判定されたものとする。よって、31行目から33行目の処理が実行される。
34行目は、28行目の処理の終了記号を意味する。35行目は、13行目の処理の終了記号を意味する。36行目は、1行目の処理の終了記号を意味する。
以上、図11で示した処理コードによって、図10のS1013からS1015の処理が完了し、ディスパッチコード811によるBlue環境コード812の適切なディスパッチが行われる。
ここで、図10の説明に戻る。S1016において、管理部822は、S1015で取得したBlue環境コード812の呼び出しを受けて、Blue環境コード812をアプリケーション800から取得する。S1017において、管理部822は、通信部821を介して実行環境830の記憶装置303にS1016で取得した非同期処理コード(Blue環境コード812)を配備する。
S1018において、実行部823は、通信部821を介して実行環境830の実行部832に、Blue環境コード812の実行リクエストを送信する。S1019において、実行部832はBlue環境コード812の実行リクエストを受信するとS1016で取得したBlue環境コード812をRAM302に読み込み、Blue環境コード812の実行を開始する。
以上、図10のシーケンスによって、Blue環境における一連の処理が完了し、本番環境であるクライアント装置101からのリクエストを関連させて、Blue環境コード812を実行させることができる。
なお、Blue−Greenデプロイメントによる本番環境の切り替え後に、S1007で管理部822がアプリケーション800から、表3における「GreenProc」を取得するように、管理部802は設定変更を行う。これにより、本番環境の切り替え後には、クライアント装置101からのデータ受信の際に、表3における「GreenProc」が呼び出されることとなる。
また、本番環境に対応するLambda関数にエイリアスを設定しておき、他のアプリケーションは常にこのエイリアスを参照するようにしておいてもよい。ここで、エイリアスとは、イベントが発生した際に、予め指定したLambda関数のバージョンを呼び出すことのできるプログラムであり、現状のAmazon Lambdaで提供される機能の一つである。つまり、20行目で示す関連非同期処理コード名が「空」であると判定された場合に行われる処理において、14行目で定義したディスパッチ先の非同期処理コード名として、エイリアスを指定しておいても良い。すると、Blue−Greenデプロイメントによる本番環境の切り替え後には、クライアント装置101からのデータ受信の際に、表3における「GreenProc」が呼び出されることとなる。
図12に、Green環境における動作検証の処理の流れをシーケンス図で示す。図12は、検証用クライアント装置102がファイル情報管理システムのGreen環境610に対して検証用ファイル情報を登録して、Green環境コード813が実行されるまでの一連の処理を示したシーケンス図である。なお、図12はあくまで動作検証のパターンの1つであり、当該シーケンスは動作検証が十分に行われたと判断される基準を満たすまで、繰り返し実行されてもよいものとする。
S1201において、検証用クライアント装置102は、通信部411を介してデータ登録のためのリクエストをファイル情報管理システム104のGreen環境610に送信する。なお、検証用クライアント装置102は、Green環境610のロードバランサー611を示す宛先情報を保持しているために、ロードバランサー611にリクエストを送ることができる。ここでの登録対象となるデータは、検証情報管理部412がファイルとして出力した検証用ファイル情報などである。検証用ファイル情報登録リクエストとして、ファイル情報管理システム104のGreen環境610に送信されるレコードの一例を検証用ファイル情報登録リクエストレコードに示す。
次に、S1202において、ファイル情報管理システム104のGreen環境610のロードバランサー611は、検証用ファイル情報登録リクエストを受信し、仮想マシン612にリクエストに送信する。仮想マシン612で稼働するアプリケーション700の通信部701は、ロードバランサー611からファイル情報登録リクエストを受信する。ファイル情報管理部702は、通信部701が受信したファイル情報登録リクエストをもとにファイル情報保存部703にファイル情報を登録する。ファイル情報管理部702は、ファイル情報の登録が成功すると、通信部701を介して、クライアント装置101に検証用ファイル情報登録成功を示すレスポンスを送信する。
S1203において、検証用クライアント装置102は、通信部411を介して検証情報管理部412がファイルとして出力した検証用ファイルを登録するファイルアップロードリクエストをファイルサーバー103に送信する。ファイルアップロードリクエストとしてファイルサーバー103に送信されるレコードの一例を、以下のファイルアップロードリクエストレコードに示す。
なお、ファイルデータカラム、アップロードパスカラム、関連非同期処理コード名カラムは、表9と同様のため、説明は省略する。なお、図12のシーケンスでは、Green環境の非同期処理コードであるGreen環境コード813を実行することを想定する。そのため、表12の関連非同期処理コード名は、Green環境コード813の非同期処理コード名である「GreenProc」を指定している。
したがって、関連非同期処理コード名カラムに入っている「GreenProc」の値、つまりGreen環境コード813を特定するための情報から、検証用クライアント装置102からのリクエストであることが判別可能となる。つまり、このリクエストに含まれる「GreenProc」の値に基づき、本リクエストでの登録対象のデータが第2の条件を満たすと判定される。S1204からS1212は、図10のS1004からS1012と同様のため、説明は省略する。
S1213において、図11の13行目以降の処理である、ファイルサーバー103のファイル情報の取得が行われる。なお、図11の18行目の処理において抽出される関連非同期処理コード名は、表9で指定した「GreenProc」の値となる。
S1214において、図11の19行目以降の処理である、ディスパッチコード811が呼び出す非同期処理コードの判定が行われる。なお、図12のシーケンスにおいては、関連非同期処理コード名は「GreenProc」のため、図11の19行目の処理において、関連非同期処理コード名は「空」でない、つまり第2の条件を満たすと判定される。そのため、図11の21行目から23行目の処理が実行され、14行目で定義したディスパッチ先の非同期処理コード名に、「GreenProc」が代入される。
S1215において、図11の28行目以降の処理である、関連非同期処理コードの呼び出しが行われる。なお、図12のシーケンスにおいては、第2の処理システムに対応する第2のプログラムとして、Green環境コード813の非同期処理コード名である「GreenProc」が呼び出される。S1216において、管理部822は、S1215で受信したGreen環境コード813の呼び出しを受けて、Green環境コード813をアプリケーション800から取得する。S1217において、管理部822は、通信部821を介して実行環境830の記憶装置303にS1216で取得した非同期処理コード(Green環境コード813)を配備する。S1218において、実行部823は、通信部821を介して実行環境830の実行部832に、Green環境コード813の実行リクエストを送信する。S1219において、実行部832はGreen環境コード813の実行リクエストを受信するとS1216で受信したGreen環境コード813をRAM302に読み込み、Green環境コード813の実行を開始する。
以上、図12のシーケンスによって、Green環境における検証処理の1パターンが完了し、検証用クライアント装置102からのリクエストと関連させて、Green環境コード813を実行させることができる。
図10と図12のシーケンスによって、本番環境であるBlue環境コード812を稼働させつつ、次バージョンであるGreen環境コード813を動作検証することができる。その後、Green環境コード813の動作検証が完了した上で、Blue環境コード812をGreen環境コード813に置き換える。本実施例により、イベント駆動型コンピューティングサービスにおいて、Green環境の十分な動作検証を行った上でBlue−Green切り替えを実現することができる。
また、本実施例は、上述したように2つの処理システムのそれぞれに対応する2つのプログラムを呼び分ける場合だけでなく、1つの処理システムに対応する2つのプログラムを呼び分ける場合にも適用可能である。
(実施例2)
実施例1では、非同期処理コードのBlue−Greenの呼び分けを実現するための方法として、検証用クライアント装置102が実行する非同期処理コード名をファイルサーバー103に送信する形態を説明した。そのため、実施例1においては、検証用クライアント装置102が、実行される非同期処理コード名を把握する必要がある。それに対して、本実施例では、クライアント側ではなくファイル情報管理システム104側で、実行する非同期処理コード名を管理する形態を説明する。
実施例1では、非同期処理コードのBlue−Greenの呼び分けを実現するための方法として、検証用クライアント装置102が実行する非同期処理コード名をファイルサーバー103に送信する形態を説明した。そのため、実施例1においては、検証用クライアント装置102が、実行される非同期処理コード名を把握する必要がある。それに対して、本実施例では、クライアント側ではなくファイル情報管理システム104側で、実行する非同期処理コード名を管理する形態を説明する。
図13は、本実施例における仮想マシン602、612で稼働するアプリケーション1300のソフトウェア構成の一例を示す図である。
アプリケーション1300は、仮想マシン602、612上に配置され、CPU301によって実行される。アプリケーション1300は、通信部701、ファイル情報管理部1301、バージョン情報管理部1302、ファイル情報保存部1303から構成される。
通信部701は、図7と同様のため、説明は省略する。ファイル情報管理部1301は、通信部701を介して、ロードバランサー601、611、ファイルサーバー103からのリクエストを受信し、さらにバージョン情報管理部1302からバージョン情報を取得する。ファイル情報管理部1301は、これらの情報をもとにファイル情報保存部1303にファイル情報の保存を要求する。
バージョン情報管理部1302は、アプリケーション1300のバージョン情報を管理する。なお、本実施例においては、Blue環境600の仮想マシン602に配置されたアプリケーション1300のバージョンを「Version.1」とする。そして、Green環境610の仮想マシン612に配置されたアプリケーション1300のバージョンを「Version.2」とする。
ファイル情報保存部1303は、図7のファイル情報保存部703の処理に加えて、バージョン情報に紐づく非同期処理コード名を属性情報として保存する。ファイル情報保存部1303がファイルの属性情報を管理するデータの一例を、以下のファイル情報管理テーブルに示す。
IDカラム、アップロードファイルパスカラム、ファイルサイズカラムに関しては、表2と同様のため、説明は省略する。関連非同期処理コード名カラムは、属性カラムであり、実行する非同期処理コード名が格納される。なお、本実施例においては、バージョン情報管理部1302が保存しているアプリケーション1300のバージョンと対応した値を関連非同期処理コード名としているが、この値に関しては特に限定するものではない。
図14は、本実施例におけるイベント情報管理サーバー105で稼働する各アプリケーションのソフトウェア構成の一例を示す図である。
アプリケーション1400は、図8の非同期処理コード810と同様に、イベント情報管理サーバー105の記憶装置303に格納され、CPU301によって実行される。本実施例においては、ディスパッチコード1411、Version.1コード1412、Version.2コード1413が格納されるものとする。
ディスパッチコード1411は、「logdata」以下のフォルダにファイルが「追加」された場合に実行される非同期処理コード「Dispatch」のバイナリデータである。
Version.1コード1412は、Blue環境600のアプリケーション1300のバージョンである「Version.1」に対応する非同期処理コードのバイナリデータである。Version.2コード1413は、Green環境610のアプリケーション1300のバージョンである「Version.2」に対応する非同期処理コードのバイナリデータである。その他の要素は、図8と同様のため、説明は省略する。
図15は、検証用クライアント装置102がファイル情報管理システムのGreen環境610に対して、ファイル情報を登録してファイル情報管理システム104のGreen環境コード813が実行されるまでの処理を示したシーケンス図である。
S1501において、検証用クライアント装置102は、S1001と同様の手順で、ファイル情報管理システム104のGreen環境610にファイル情報登録リクエストを送信する。なお、ここでのファイル情報登録リクエストは、表8と同様であるものとする。
S1502において、ファイル情報管理システム104のGreen環境610のロードバランサー611は、ファイル情報登録リクエストを受信し、仮想マシン612にリクエストに送信する。仮想マシン612で稼働するアプリケーション1300の通信部701は、ロードバランサー611からファイル情報登録リクエストを受信する。ファイル情報管理部1301は、通信部701が受信したファイル情報登録リクエストと、バージョン情報管理部1302から取得した現在のバージョン情報と対応付けたファイル情報として、ファイル情報保存部1303で登録する。なお、図15のシーケンスにおいて、登録されるファイル情報は、表14の通りとする。S1503からS1509は、S1003からS1009と同様のため、説明は省略する。
S1510において、S1010と同様の手順で、非同期処理コードが実行環境830に配備される。なお、本実施例においては、ディスパッチコード1411が配備される。S1511において、S1011と同様の手順で、ディスパッチコード1411の実行リクエストが、実行環境830に送信される。S1512において、S1012と同様の手順で、ディスパッチコード1411の実行が開始される。
図16に、S1513からS1515で行われるディスパッチコード1411の処理の実コードの一例を示す。図16は、ディスパッチコード1411を示す図であり、本コードは実行環境830の実行部832で実行される。
1行目から6行目は、図11の1行目から6行目と同様のため、説明は省略する。7行目は、図11の14行目と同様に、ディスパッチ先の非同期処理コード名を定義し、初期化する。
8行目から11行目は、図11の9行目から12行目と同様のため、説明は省略する。12行目は、ファイル情報管理システム104のGreen環境610から、ファイルサーバー103のアップロードファイルパスに対応するファイル情報を取得し、ファイル情報に含まれる関連非同期処理コード名を取得する。本実施例においては、「logdata/client/201605.log」に対応する関連非同期処理コード名「Version.2」が取得される。
13行目は、12行目で取得した関連非同期処理コード名が「空」であるかを判定する。14行目は、13行目の判定処理において、関連非同期処理コード名が「空」であると判定された場合に行われる処理であり、エラーが発生した旨をコンソール表示する。15行目以降は、13行目の判定処理において、関連非同期処理コード名が「空」でないと判定された場合に行われる処理である。なお、本実施例においては、関連非同期処理コード名は「Version.2」のため、13行目の判定処理において「空」でないと判定されたものとする。そのため、15行目以降の処理が実行される。
16行目は、7行目で定義したディスパッチ先の非同期処理コード名に、Version.2コード1413の非同期処理コード名である「Version.2」を代入する。
17行目から20行目は、24行目から27行目と同様のため、説明は省略する。21行目は、図11の28行目と同様に、ディスパッチ先の関連非同期処理コードを呼び出す処理を行う。なお、図15のシーケンスにおいては、Version.2コード1413の非同期処理コード名である「Version.2」が呼び出される。22行目から26行目は、図11の29目から33行目と同様のため、説明は省略する。27行目は、13行目の処理の終了記号を意味する。28行目は、1行目の処理の終了記号を意味する。
以上、図16の処理によって、図15のS1513からS1515の処理が完了し、ディスパッチコード1411によるVersion.2コード1413の適切なディスパッチが行われる。
ここで、図15の説明に戻る。S1516において、管理部822は、S1515で取得したVersion.2コード1413の呼び出しを受けて、Version.2コード1413をアプリケーション800から取得する。
S1517において、管理部822は、通信部821を介して実行環境830の記憶装置303にS1016で取得した非同期処理コード(Version.2コード1413)を配備する。S1518において、実行部823は、通信部821を介して実行環境830の実行部832に、Version.2コード1413の実行リクエストを送信する。S1519において、実行部832はVersion.2コード1413の実行リクエストを受信するとS1516で取得しVersion.2コード1413をRAM302に読み込み、Version.2コード1413の実行を開始する。
以上、図10のシーケンスによって、Green環境における一連の処理が完了し、検証用クライアント装置102による検証リクエストと関連させて、Version.2コード1413を実行させることができる。本実施例により、検証用のクライアント装置でGreen環境コードを把握できない場合でも、次バージョンの非同期処理コードを動作検証することが可能となる。
(実施例3)
実施例1では、検証用クライアント装置102が、実施例2では、ファイル情報管理システム104が、それぞれ実行する非同期処理コード名を制御する形態を説明した。本実施例では、クライアント側による制御、サーバー側による制御のいずれのパターンでも動作検証を行えるような柔軟性を実現する形態を説明する。
実施例1では、検証用クライアント装置102が、実施例2では、ファイル情報管理システム104が、それぞれ実行する非同期処理コード名を制御する形態を説明した。本実施例では、クライアント側による制御、サーバー側による制御のいずれのパターンでも動作検証を行えるような柔軟性を実現する形態を説明する。
図17は、本実施例におけるイベント情報管理サーバー105で稼働する各アプリケーションのソフトウェア構成の一例を示す図である。
アプリケーション1500は、図8の非同期処理コード810と同様に、イベント情報管理サーバー105の記憶装置303に格納され、CPU301によって実行される。本実施例においては、ディスパッチコード1711、Blue環境コード812、Green環境コード813、Version.1コード1412、Version.2コード1413が格納されるものとする。ディスパッチコード1711は、「logdata」以下のフォルダにファイルが「追加」された場合に実行される非同期処理コード「Dispatch」のバイナリデータである。その他の要素は、図8、図14と同様のため、説明は省略する。
図18は、本実施例におけるディスパッチコード1711を示す図であり、本コードは実行環境830の実行部832で実行される。
1行目から18行目は、図11の1行目から18行目と同様のため、説明は省略する。19行目は、図11の19行目と同様に、18行目で取得したファイルサーバー103のファイル情報に含まれる関連非同期処理コード名が「空」であるかを判定する。この際、「空」であると判定された場合は、検証用クライアント装置102による非同期処理コードの制御が行われなかったケースであり、20行目から25行目の処理が実行される。一方、「空」でないと判定された場合は、検証用クライアント装置102による非同期処理コードの制御が行われたケースであり、26行目から28行目の処理が実行される。
20行目は、図16の12行目と同様のため、説明は省略する。21行目は、図16の13行目と同様に、20行目で取得したファイル情報管理システム104のファイル情報に含まれる関連非同期処理コード名が「空」であるかを判定する。
22行目は、21行目の判定処理において、ファイル情報管理システム104のファイル情報に含まれる関連非同期処理コード名が「空」であると判定された場合に行われる処理である。この判定結果によって、検証用クライアント装置102、ファイル情報管理システム104のどちらの非同期処理コードの制御も行われていないと判定されたことになるため、本番環境の処理とみなされる。そのため、22行目は、図11の20行目と同様に、関連非同期処理コードはBlue環境コード812の非同期処理コード名を指定する。
23行目から25行目は、21行目の判定処理において、ファイル情報管理システム104のファイル情報に含まれる関連非同期処理コード名が「空」でないと判定された場合に行われる処理である。この判定結果によって、ファイル情報管理システム104が明示的に関連非同期処理コードを指定したとみなされる。そのため、23行目から25行目は、関連非同期処理コード名に、20行目で取得した、ファイル情報管理システム104のファイル情報に含まれる非同期処理コード名を指定する。
26行目から28行目は、19行目の判定処理において、ファイルサーバー103のファイル情報に含まれる関連非同期処理コード名が「空」でないと判定された場合に行われる処理である。この判定結果によって、検証用クライアント装置102が明示的に関連非同期処理コードを指定したとみなされる。そのため、26行目から28行目は、関連非同期処理コード名に、18行目で取得した、ファイルサーバー103のファイル情報に含まれる非同期処理コード名を指定する。29行目から、41行目は、図11の24行目から36行目と同様のため、説明は省略する。
以上、図18のディスパッチコード1711の処理によって、検証用クライアント装置102、ファイル情報管理システム104それぞれが指定した非同期処理コード名を呼び出すことができる。本実施例により、それぞれが実行する非同期処理コード名を制御したとしても、適切に動作検証を行うことができる。
(他の実施例)
本発明は、上述した実施例を適宜組み合わせることにより構成された装置あるいはシステムやその方法も含まれるものとする。
本発明は、上述した実施例を適宜組み合わせることにより構成された装置あるいはシステムやその方法も含まれるものとする。
ここで、本発明は、上述した実施例の機能を実現する1つ以上のソフトウェア(プログラム)を実行する主体となる装置あるいはシステムである。また、その装置あるいはシステムで実行される上述した実施例を実現するための方法も本発明の1つである。また、そのプログラムは、ネットワークまたは各種記憶媒体を介してシステムあるいは装置に供給され、そのシステムあるいは装置の1つ以上のコンピューター(CPUやMPU等)によりそのプログラムが読み出され、実行される。つまり、本発明の1つとして、さらにそのプログラム自体、あるいは当該プログラムを格納したコンピューターにより読み取り可能な各種記憶媒体も含むものとする。また、上述した実施例の機能を実現する回路(例えば、ASIC)によっても、本発明は実現可能である。
103 ファイルサーバー
104 ファイル情報管理システム
105 イベント情報管理サーバー
800、820 アプリケーション
830 実行環境
104 ファイル情報管理システム
105 イベント情報管理サーバー
800、820 アプリケーション
830 実行環境
Claims (11)
- システムを構成するコンピューターによって、前記システムに含まれるストレージシステムの所定領域へのデータ登録に応じて発生するシステムイベントに従い実行されるプログラムであって、
前記システムイベントでの登録対象のデータが第1の条件および第2の条件のいずれを満たすかを判定する判定手段と、
前記第1の条件を満たすと前記判定手段が判定した場合に、第1の処理システムに対応する第1のプログラムの起動を行い、前記第2の条件を満たすと前記判定手段が判定した場合に、第2の処理システムに対応する第2のプログラムの起動を行う起動手段として前記コンピューターを機能させるためのプログラム。 - 前記判定手段は、前記システムイベントでの登録対象のデータの属性に基づき、該データが、前記第1の条件および前記第2の条件のいずれを満たすかを判定することを特徴とする請求項1に記載のプログラム。
- 前記システムに含まれる複数の処理システムのそれぞれは、
前記システムの外部にあるクライアント装置から、データ登録のためのリクエストを受信する受信手段と、
前記受信したリクエストでの登録対象のデータに関する情報と、当該処理システムの情報とを対応付けて保持する保持手段と、を有し、
前記判定手段は、前記受信手段がリクエストを受信した後、前記システムイベントが発生した際に、前記リクエストでの登録対象のデータに対応付けられて前記第1の処理システムの情報が前記保持手段で保持されている場合には、前記第1の条件を満たすと判定し、前記リクエストでの登録対象のデータに対応付けられて前記第2の処理システムの情報が前記保持手段で保持されている場合には、前記第2の条件を満たすと判定することを特徴とする請求項1に記載のプログラム。 - 前記第1のプログラムのバージョンは、前記第2のプログラムのバージョンと比較して古いことを特徴とする請求項1乃至3のいずれか1項に記載のプログラム。
- 前記起動手段は、前記登録対象のデータが前記第1の条件を満たすと前記判定手段が判定した場合、前記第1のプログラムとは異なる、前記システムに含まれるDNS(Domain Name System)サーバーで保持されるレコードが示す処理システムに対応するプログラムを起動させるためのプログラムの起動を行うことを特徴とする請求項1乃至4のいずれか1項に記載のプログラム。
- コンピューティングリソースを指定して予め登録されたプログラムをシステムイベントに応答して実行するサービスを提供するシステムであって、
システム内にあるストレージシステムの所定領域へのデータ登録に応じて発生するシステムイベントを検出する検出手段と、
前記システムに予め登録されたプログラムを実行する実行手段と、を有し、
前記実行手段は、前記検出手段が検出したシステムイベントに応じて、該システムイベントでの登録対象のデータが第1の条件および第2の条件のいずれを満たすかを判定する第3のプログラムを実行し、
前記実行手段は、前記第3のプログラムの実行により前記システムイベントでの登録対象のデータが前記第1の条件を満たすと判定された場合に、第1の処理システムに対応する第1のプログラムを更に実行し、前記第3のプログラムの実行により前記システムイベントでの登録対象のデータが前記第2の条件を満たすと判定された場合に、第2の処理システムに対応する第2のプログラムを更に実行することを特徴とするシステム。 - 前記第3のプログラムの実行により、前記システムイベントでの登録対象のデータの属性に基づき、該データが、前記第1の条件および前記第2の条件のいずれを満たすかが判定されることを特徴とする請求項6に記載のシステム。
- 前記システムに含まれる複数の処理システムのそれぞれは、
前記システムの外部にあるクライアント装置から、データ登録のためのリクエストを受信する受信手段と、
前記受信したリクエストでの登録対象となるデータに関する情報と、当該処理システムの情報とを対応付けて保持する保持手段と、を有し、
前記第3のプログラムの実行により、前記受信したリクエストでの登録対象のデータに対応付けられて前記第1の処理システムの情報が前記保持手段で保持されている場合には、前記第1の条件を満たすと判定され、前記受信したリクエストでの登録対象のデータに対応付けられて前記第2の処理システムの情報が前記保持手段で保持されている場合には、前記第2の条件を満たすと判定されることを特徴とする請求項6に記載のシステム。 - 前記第1のプログラムのバージョンは、前記第2のプログラムのバージョンと比較して古いことを特徴とする請求項6乃至8のいずれか1項に記載のシステム。
- 前記実行手段は、前記第3のプログラムの実行により前記登録対象のデータが前記第1の条件を満たすと判定された場合も、前記第1のプログラムとは異なる、前記システムに含まれるDNS(Domain Name System)サーバーで保持されるレコードが示す処理システムに対応するプログラムを実行するためのプログラムを更に実行することを特徴とする請求項6乃至9のいずれか1項に記載のシステム。
- コンピューティングリソースを指定して予め登録されたプログラムをシステムイベントに応答して実行するサービスを提供するシステムの方法であって、
システム内にあるストレージシステムの所定領域へのデータ登録に応じて発生するシステムイベントを検出する検出工程と、
前記システムに予め登録されたプログラムを実行する実行工程と、を有し、
前記実行工程では、前記検出工程で検出されたシステムイベントに応じて、該システムイベントでの登録対象のデータが第1の条件および第2の条件のいずれを満たすかを判定する第3のプログラムが実行され、
前記実行工程では、前記第3のプログラムの実行により前記システムイベントでの登録対象のデータが前記第1の条件を満たすと判定された場合に、第1の処理システムに対応する第1のプログラムが更に実行され、前記第3のプログラムの実行により前記システムイベントでの登録対象のデータが前記第2の条件を満たすと判定された場合に、第2の処理システムに対応する第2のプログラムが更に実行されることを特徴とする方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2017035933A JP2018142165A (ja) | 2017-02-28 | 2017-02-28 | プログラム、システム、及び方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2017035933A JP2018142165A (ja) | 2017-02-28 | 2017-02-28 | プログラム、システム、及び方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2018142165A true JP2018142165A (ja) | 2018-09-13 |
Family
ID=63528167
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2017035933A Pending JP2018142165A (ja) | 2017-02-28 | 2017-02-28 | プログラム、システム、及び方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2018142165A (ja) |
-
2017
- 2017-02-28 JP JP2017035933A patent/JP2018142165A/ja active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101970839B1 (ko) | 서비스의 2차 위치에서의 작업의 재생 기법 | |
JP5401922B2 (ja) | 仮想システム制御プログラム、方法及び装置 | |
CN112099918A (zh) | 容器化环境中的集群的实时迁移 | |
US7415706B1 (en) | Dynamic handling of multiple software component versions for device management | |
CN112463144B (zh) | 分布式存储的命令行服务方法、系统、终端及存储介质 | |
JP4876438B2 (ja) | コンポーネントソフトウェアの運用方法および運用基盤 | |
US20160191623A1 (en) | Methods and systems of workload mobility across divergent platforms | |
CN110096424B (zh) | 测试的处理方法、装置、电子设备及存储介质 | |
CN102025778A (zh) | 一种基于Shell的软件版本升级工作方法 | |
US9753718B1 (en) | Non-disruptive upgrade including rollback capabilities for a distributed file system operating within a cluster of nodes | |
JP4141875B2 (ja) | リカバリ処理方法及びその実施システム並びにその処理プログラム | |
JP2011164704A (ja) | クライアントプログラム、端末、サーバ装置、システムおよび方法 | |
CN112860282B (zh) | 集群插件的升级方法、装置和服务器 | |
CN110336695A (zh) | 一种部署和维护应用的方法和服务器 | |
CN103309751A (zh) | 提供文件系统功能的终端的设备和方法 | |
CN110795278B (zh) | 用于提供文件级恢复的系统和方法 | |
CN114968406B (zh) | 一种插件管理方法、装置、电子设备及存储介质 | |
JP6942458B2 (ja) | プログラム、システム及び情報処理方法 | |
JP2004086769A (ja) | アプリケーションの更新処理方法、更新処理システム及び更新処理プログラム | |
CN111381812B (zh) | 程序发布方法、调用方法、装置、存储介质和计算机设备 | |
CN111966877A (zh) | 前端服务方法、装置、设备及存储介质 | |
JP4870794B2 (ja) | 仮想マシンの監視管理装置、監視管理方法及びコンピュータプログラム | |
JP2018142165A (ja) | プログラム、システム、及び方法 | |
US11163636B2 (en) | Chronologically ordered log-structured key-value store from failures during garbage collection | |
CN113672334A (zh) | 一种容器管理方法及装置 |