(57)【要約】【課題】  アプリケーションの終了時刻などユーザの要求を満たした上で、最低限の運用コストとなるようにリソースの算出、および仮想サーバとアプリケーションの配置を行う実行制御サーバを提供する。【解決手段】  実行制御サーバは、クラウドサービスにおいて、実行予定のアプリケーションをいずれの仮想サーバで実行させることが最適であるか、最適解を算出する。具体的には、新たに実行開始する予定のアプリケーションに関する実行予定情報と、アプリケーションを実行可能な仮想サーバの要求スペック情報と、既にインスタンス化されている仮想サーバにおける使用可能な残リソース情報に基づき、最適解を算出する。その最適解に基づき、必要であれば仮想サーバをインスタンス化し、アプリケーションを起動する。【選択図】図９
2014115905.tif 000002
【特許請求の範囲】
【請求項１】
物理サーバとネットワークを介して接続可能であって、該物理サーバにおける仮想環境である仮想サーバおよび該仮想サーバに構築されている１または複数のアプリケーションの実行を制御する情報処理装置であって、
前記アプリケーションを実行するために要求される前記仮想サーバのスペックを要求スペック情報として、要求スペック情報記憶手段に記憶させる要求スペック情報登録手段と、
新たに実行を開始する前記アプリケーションに関する実行予定情報を、実行予定情報記憶手段に記憶させる実行予定情報登録手段と、
前記物理サーバにおいて実行可能な状態にインスタンス化されている前記仮想サーバにおける使用可能なリソースのうち残リソース総計と、該仮想サーバにおいて実行されているアプリケーションに関する情報を残リソース情報として、残リソース情報記憶手段に記憶させる残リソース情報登録手段と、
前記実行予定情報記憶手段の前記実行予定情報と、前記要求スペック情報記憶手段の前記要求スペック情報と、前記残リソース情報記憶手段の前記残リソース情報とに基づき、実行すべきアプリケーションを、いずれの前記仮想サーバにおいて実行するかの最適解を決定する最適解算出手段と、
前記最適解算出手段の前記最適解により、インスタンス化するよう指定された前記仮想サーバをインスタンス化し、該仮想サーバの前記残リソース情報を前記残リソース情報記憶手段に登録するインスタンス生成手段と、
前記最適解算出手段の前記最適解により、指定の前記仮想サーバにおいて起動するよう指定された前記アプリケーションを起動させるアプリケーション起動手段と、
を備えることを特徴とする情報処理装置。
【請求項２】
前記最適解算出手段は、更に、
所望のタイミングで再実行するものであって、
前記インスタンス生成手段は、更に、
前記最適解算出手段の再実行によって新たに必要となる前記仮想サーバをインスタンス化するものであって、
実行中の前記アプリケーションが、前記最適解算出手段の再実行に基づき、該アプリケーションが実行されている前記仮想サーバのインスタンスとは別の第２の前記仮想サーバのインスタンスにおいて実行される場合には、該アプリケーションを再起動可能なように停止させ、該アプリケーションを前記アプリケーション起動手段により前記第２の仮想サーバのインスタンスにおいて起動させるアプリケーション再起動手段と、
インスタンス化されている前記仮想サーバのうち、全てのアプリケーションが停止した場合には、該仮想サーバのインスタンスを破棄してイメージにするインスタンス破棄手段と、
を更に備えることを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記仮想サーバのスペックごとに、該仮想サーバを使用する際の課金について課金情報として記憶する課金情報記憶手段と、
を更に備え、
前記最適解算出手段は、
前記アプリケーションごとに指定された所望の制約条件を満たし、且つ全ての該アプリケーションの実行のためにインスタンス化した前記仮想サーバに対する課金が、最小になるように算出することを特徴とする請求項１または請求項２に記載の情報処理装置。
【請求項４】
前記所望の制約条件は、前記アプリケーションの終了要求時刻であることを特徴とする請求項３に記載の情報処理装置。
【請求項５】
物理サーバとネットワークを介して接続可能であって、該物理サーバにおける仮想環境である仮想サーバおよび該仮想サーバに構築されている１または複数のアプリケーションの実行を制御する情報処理方法であって、
要求スペック情報登録手段が、前記アプリケーションを実行するために要求される前記仮想サーバのスペックを要求スペック情報として、要求スペック情報記憶手段に記憶させる要求スペック情報登録ステップと、
実行予定情報登録手段が、新たに実行を開始する前記アプリケーションに関する実行予定情報を、実行予定情報記憶手段に記憶させる実行予定情報登録ステップと、
残リソース情報登録手段が、前記物理サーバにおいて実行可能な状態にインスタンス化されている前記仮想サーバにおける使用可能なリソースのうち残リソース総計と、該仮想サーバにおいて実行されているアプリケーションに関する情報を残リソース情報として、残リソース情報記憶手段に記憶させる残リソース情報登録ステップと、
最適解算出手段が、前記実行予定情報記憶手段の前記実行予定情報と、前記要求スペック情報記憶手段の前記要求スペック情報と、前記残リソース情報記憶手段の前記残リソース情報とに基づき、実行すべきアプリケーションを、いずれの前記仮想サーバにおいて実行するかの最適解を決定する最適解算出ステップと、
インスタンス生成手段が、前記最適解算出ステップの前記最適解により、インスタンス化するよう指定された前記仮想サーバをインスタンス化し、該仮想サーバの前記残リソース情報を前記残リソース情報記憶手段に登録するインスタンス生成ステップと、
アプリケーション起動手段が、前記最適解算出ステップの前記最適解により、指定の前記仮想サーバにおいて起動するよう指定された前記アプリケーションを起動させるアプリケーション起動ステップと、
を含むことを特徴とする情報処理方法。
【請求項６】
コンピュータを、物理サーバとネットワークを介して接続可能であって、該物理サーバにおける仮想環境である仮想サーバおよび該仮想サーバに構築されている１または複数のアプリケーションの実行を制御する情報処理装置として機能させるためのプログラムであって、
前記コンピュータを、
前記アプリケーションを実行するために要求される前記仮想サーバのスペックを要求スペック情報として、要求スペック情報記憶手段に記憶させる要求スペック情報登録手段、
新たに実行を開始する前記アプリケーションに関する実行予定情報を、実行予定情報記憶手段に記憶させる実行予定情報登録手段、
前記物理サーバにおいて実行可能な状態にインスタンス化されている前記仮想サーバにおける使用可能なリソースのうち残リソース総計と、該仮想サーバにおいて実行されているアプリケーションに関する情報を残リソース情報として、残リソース情報記憶手段に記憶させる残リソース情報登録手段、
前記実行予定情報記憶手段の前記実行予定情報と、前記要求スペック情報記憶手段の前記要求スペック情報と、前記残リソース情報記憶手段の前記残リソース情報とに基づき、実行すべきアプリケーションを、いずれの前記仮想サーバにおいて実行するかの最適解を決定する最適解算出手段、
前記最適解算出手段の前記最適解により、インスタンス化するよう指定された前記仮想サーバをインスタンス化し、該仮想サーバの前記残リソース情報を前記残リソース情報記憶手段に登録するインスタンス生成手段、
前記最適解算出手段の前記最適解により、指定の前記仮想サーバにおいて起動するよう指定された前記アプリケーションを起動させるアプリケーション起動手段、
として機能させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、仮想サーバにおいてアプリケーションを実行する際に、いずれのアプリケーションをいずれの仮想サーバで実行すべきかを、コストに基づき最適に決定し、仮想サーバをインスタンス化し、アプリケーションを起動する実行制御サーバするに関する。
【背景技術】
【０００２】
ハードウェアであるサーバのリソース（ＣＰＵ、メモリなどの資源）を、ソフトウェアを用いて仮想的に複数のサーバとして分割する仮想サーバと呼ばれる技術が知られている。
【０００３】
例えば、クラウドコンピューティング（以下単にクラウドとする）と呼ばれるインターネット上のサービスにおいては、例えばユーザ企業のアプリケーションを、クラウド上における仮想サーバ上に構築（インストール、設定など）させ、利用させることでサービスが提供される。
【０００４】
サービス形態は、従量制（使用したリソース、時間など）に対する課金となるため、ユーザ企業にとっては、企業内にハードウェアを設置する場合と比べて、初期投資費用が大きく抑制されるというメリットが得られる。例えば、ユーザ企業は、通常であれば企業内にあるハードウェア上にアプリケーションを構築するかわりに、クラウドサービス上の“仮想サーバ”にアプリケーションを構築する。
【０００５】
仮想サーバは、アプリケーションを動作させる必要がない場合には、破棄することにより“サーバーイメージのファイル”（以下単にイメージ）となり、ほぼ料金はかからない。また、アプリケーションを実行する場合には、“仮想サーバ”のインスタンス化をすることで、実際のハードウェアのサーバのように使用可能な状態となり、内部にインストールされたアプリケーションを起動でき、この場合に、前述の従量制課金がなされる。
【０００６】
従って、企業内にハードウェアを用意する場合であれば、使用するピーク（１日の中、１月の中、１年の中のピーク）にあわせたリソースを用意する必要があるのに対して、クラウドにおいては、通常は、サーバはイメージとして非常に安価な課金がなされ、実行時にインスタンスとして、従量制課金がなされる、というコスト的なメリットが大きい。
【０００７】
しかしながら、クラウドベンダーは、通常、標準モデルとして幾つかのスペックを用意し、ユーザ企業と契約を行う。例えば、高スペック、中スペック、低スペックの仮想サーバとして、具体的なスペックを提示して、料金を決定している。従って、いくら安価であるとは言え、ユーザ企業として、高スペックの仮想サーバを契約し、処理負荷の少ないアプリケーションを実行するようなことはせず、最適なスペックの仮想サーバを契約する必要がある。あるいは、複数の仮想サーバを契約し、同じアプリケーションを構築しておき、処理する際のデータ量などに合わせて、いずれのスペックの仮想サーバをインスタンス化するか、を判断する方法も考えられる。
【０００８】
特許文献１では、仮想マシン、仮想マシンが配置されているホスト、および仮想マシンを操作するユーザ端末と通信可能な管理サーバであって、仮想マシンの体感性能を変更する要求を示す入力信号をユーザ端末から取得し、仮想マシンおよびホストの性能を示すシステム情報を仮想マシンおよびホストから取得する取得部と、取得部によって取得された入力信号に応じて、仮想マシンに必要なリソースの割り当てを算出するリソース算出部と、リソース算出部によって算出されたリソースの割り当てと、取得部によって取得されたシステム情報とに基づいて、仮想マシンの配置構成を決定する決定部と、決定部による決定に従って、仮想マシンの配置を指示する指示部とを備える管理サーバに関する技術を提供している。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開２０１１−２１０１３４号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
しかし、特許文献１における管理サーバは、体感性能が要求に満たない場合には、新規に仮想マシンをインスタンス化してアプリケーションの実行を再配置するものである。すなわち、すでにインスタンス化された仮想マシンが存在する状態で、他のアプリケーションを追加で実行する場合に、既にインスタンス化されている仮想マシン上で実行可能かどうかを算出することを考慮していない。
【００１１】
従って、例えば他のアプリケーションを追加で実行する場合に、“時間がかかってもよいから安価な方を選びたい”というリソースの算出、配置に関しての運用をすることができない。
【００１２】
本発明の目的は、以上の問題を解決するためのものであり、アプリケーションの終了時刻などユーザの要求を満たした上で、最低限の運用コストとなるようにリソースの算出、および仮想サーバとアプリケーションの配置を行う実行制御サーバを提供することである。
【課題を解決するための手段】
【００１３】
本発明は、物理サーバとネットワークを介して接続可能であって、該物理サーバにおける仮想環境で動作する仮想サーバおよび該仮想サーバに構築されている１または複数のアプリケーションの実行を制御する情報処理装置であって、前記アプリケーションを実行するために要求される前記仮想サーバのスペックを要求スペック情報として、要求スペック情報記憶手段に記憶させる要求スペック情報登録手段と、新たに実行を開始する前記アプリケーションに関する実行予定情報を、実行予定情報記憶手段に記憶させる実行予定情報登録手段と、前記物理サーバにおいて実行可能な状態にインスタンス化されている前記仮想サーバにおける使用可能なリソースのうち残リソース総計と、該仮想サーバにおいて実行されているアプリケーションに関する情報を残リソース情報として、残リソース情報記憶手段に記憶させる残リソース情報登録手段と、前記実行予定情報記憶手段の前記実行予定情報と、前記要求スペック情報記憶手段の前記要求スペック情報と、前記残リソース情報記憶手段の前記残リソース情報とに基づき、実行すべきアプリケーションを、いずれの前記仮想サーバにおいて実行するかの最適解を決定する最適解算出手段と、前記最適解算出手段の前記最適解により、インスタンス化するよう指定された前記仮想サーバをインスタンス化し、該仮想サーバの前記残リソース情報を前記残リソース情報記憶手段に登録するインスタンス生成手段と、前記最適解算出手段の前記最適解により、指定の前記仮想サーバにおいて起動するよう指定された前記アプリケーションを起動させるアプリケーション起動手段と、を備えることを特徴とする。
【発明の効果】
【００１４】
本発明により、アプリケーションの終了時刻などユーザの要求を満たした上で、最低限の運用コストとなるようにリソースの算出、および仮想サーバとアプリケーションの配置を行う実行制御サーバの提供が可能となった。
【図面の簡単な説明】
【００１５】
【図１】本発明の実施形態に係わるシステム構成の一例を示す図である。
【図２】本発明の実施形態に係わる実行制御サーバに適用可能なハードウェア構成の一例を示すブロック図である。
【図３】本発明の実施形態に係る物理サーバ内の仮想サーバのイメージおよびインスタンス化された状態を示すイメージ図である。
【図４】本発明の実施形態に係るアプリケーションを追加で実行する際の実行制御を示すイメージ図である。
【図５】本発明の実施形態に係る実行するアプリケーションと処理するデータ量に対し、要求される仮想サーバのスペックを算出するためのデータ構成の一例を示す図である。
【図６】本発明の実施形態に係る利用する仮想サーバと、その課金される金額を対応付けるデータ構成の一例を示す図である。
【図７】本発明の実施形態に係るインスタンス化されている仮想サーバに残リソース量を対応付けるデータ構成の一例を示す図である。
【図８】本発明の実施形態に係る追加で実行が予定されているアプリケーションに関する情報を管理するデータ構成の一例を示す図である。
【図９】本発明の実施形態に係る実行制御サーバのインスタンス化とアプリケーションの起動の処理の一例を示すフローチャートである。
【図１０】本発明の実施形態に係る実行制御サーバの破棄の処理の一例を示すフローチャートである。
【発明を実施するための形態】
【００１６】
以下、本発明の実施の形態を、図面を参照して詳細に説明する。
【００１７】
図１は、本発明の実施形態に係わるシステム構成の一例を示す図である。
【００１８】
実行制御サーバ１０１、クライアント端末１０８、管理者端末１０４、物理サーバ１０２、ストレージサーバ１０７は、ネットワーク１０５（ＬＡＮなど）およびインターネットなどにより接続されている。
【００１９】
物理サーバ１０２は、本発明では、クラウドベンダーなどが提供する情報処理装置である（図２を参照）。
【００２０】
仮想サーバ１０３は、例えばインターネット上でクラウドサービスを提供するベンダーがユーザ企業などに提供する仮想的な情報処理装置である。すなわち、仮想サーバ１０３は、実際には物理サーバ１０２上で動作するソフトウェアであり、例えば、情報処理装置（ハードウェアおよびＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ））をエミュレートされるものである。仮想サーバ１０３には技術的に他の実現方法もあるが、本発明においては、仮想サーバ１０３の実現方法は特定するものではない。ユーザ企業などは、例えば管理者端末１０４から仮想サーバ１０３を利用するためベンダーと契約し、アプリケーション１０６の開発や設定を行い、ユーザ企業内のエンドユーザ（従業員）などが、クライアント端末１０８からアプリケーションを利用する。なお、これらは仮想化技術により、仮想サーバを動かす物理サーバが備えている機能や周辺機器とは関係なく、仮想サーバに機能などを提供するものであり、この環境を“仮想環境”と呼ぶことがある。
【００２１】
なお、仮想サーバ１０３は、物理サーバ１０２のように電源を切って停止している状態と、電源を入れて起動した実行している状態があるわけではないが、対応する概念としてイメージとインスタンス、がある。具体的には、イメージとは、仮想サーバ（仮想的な情報処理装置であり、アプリケーションを含んでいてもよい）が実行されていない状態であり、物理サーバの「停止」している状態に対応する。イメージは、物理サーバ１０２上の静的なファイルである。インスタンスとは、前述のイメージをインスタンス化（物理サーバ１０２の「起動」に対応）により、インスタンスとして物理サーバの「実行」に対応する状態となる。逆にインスタンスを破棄（物理サーバの「停止」に対応）することが可能である。インスタンスを「破棄」すると、破棄直前の時点でのインスタンスの状態をそのままにイメージとして静的なファイルになる。
【００２２】
ストレージサーバ１０７は、クラウド上において、アプリケーション１０６の外部ストレージとして提供されるサービスである。アプリケーション１０６を停止する際にストレージサーバ１０７の格納先にデータを格納することで、アプリケーション１０６を再起動する際に、データの再利用が可能となる。従って、仮想サーバ１０３を破棄する際に、実行していたアプリケーション１０６がデータをストレージサーバ１０７に格納するようにしておくことで、アプリケーション１０６を正常に再起動可能とする。アプリケーション１０６と同一の仮想サーバ１０３内にデータを格納しておいてもよいが、ストレージサーバ１０７に格納することにより、仮想サーバ１０３を破棄した後、他の仮想サーバ１０３のアプリケーション１０６からデータを利用することが可能となる。
【００２３】
実行制御サーバ１０１（情報処理装置）は、物理サーバ１０２上にある仮想サーバ１０３のインスタンス化／破棄と、仮想サーバ１０３上のアプリケーション１０６の起動／停止を管理する。１または複数のアプリケーション１０６を、例えば時間的な制約がある中で、如何に最も安いコストで実行させるか、をコントロールする。その際、実行制御サーバ１０１は、仮想サーバ１０３のスペックを取得して、様々条件から最適な状態を算出する。実行制御サーバ１０１は、ユーザ企業などのネットワーク１０５に接続されていてもよいし、またそれ自体がクラウドサービス上の仮想サーバ１０３として構築されていてもよい。
【００２４】
ここでスペックとは、仮想サーバ１０３においてエミュレートされているＣＰＵの性能、メモリ（ＲＡＭ２０２など）の容量、ストレージとの通信速度などである。クラウドベンダーは、通常、利用価格が高額ではあるが短時間でアプリケーション１０６の処理を完了するスペックが高い仮想サーバ１０３、低額定額であるが処理に長時間かかるスペックが低い仮想サーバ１０３を用意し、ユーザ企業の運用に応じて選択させる。仮想サーバ１０３を使用していないときは、破棄しイメージにしておくことで、ほぼ料金のかからない状態となる。すなわち、クラウドベンダーのサービスにおけるユーザ企業のコスト的な負担は、仮想サーバ１０３を実行している間の従量課金制が主なものとなる。
【００２５】
図２は、本発明の実施形態に係わる実行制御サーバに適用可能なハードウェア構成の一例を示すブロック図である。なお、このハードウェア構成は、物理サーバ１０２、管理者端末１０４、クライアント端末１０８にも適用可能である。さらに、仮想サーバ１０３においても、これらの構成の一部または全てをエミュレートしている。
【００２６】
図２に示すように、実行制御サーバ１０１は、システムバス２０４を介してＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）２０１、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）２０２、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）２０３、入力コントローラ２０５、ビデオコントローラ２０６、メモリコントローラ２０７、通信Ｉ／Ｆコントローラ２０８等が接続された構成を採る。
【００２７】
ＣＰＵ２０１は、システムバス２０４に接続される各デバイスやコントローラを統括的に制御する。
【００２８】
また、ＲＯＭ２０３あるいは外部メモリ２１１には、ＣＰＵ２０１の制御プログラムであるＢＩＯＳ（Ｂａｓｉｃ  Ｉｎｐｕｔ／Ｏｕｔｐｕｔ  Ｓｙｓｔｅｍ）やＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）や、各サーバあるいは各ＰＣが実行する機能を実現するために必要な後述する各種プログラム等が記憶されている。また、本発明を実施するために必要な情報が記憶されている。なお外部メモリはデータベースであってもよい。
【００２９】
ＲＡＭ２０２は、ＣＰＵ２０１の主メモリ、ワークエリア等として機能する。ＣＰＵ２０１は、処理の実行に際して必要なプログラム等をＲＯＭ２０３あるいは外部メモリ２１１からＲＡＭ２０２にロードし、ロードしたプログラムを実行することで各種動作を実現する。
【００３０】
また、入力コントローラ２０５は、キーボード（ＫＢ）２０９や不図示のマウス等のポインティングデバイス等からの入力を制御する。
【００３１】
ビデオコントローラ２０６は、ディスプレイ２１０等の表示器への表示を制御する。尚、表示器は液晶ディスプレイ等の表示器でもよい。これらは、必要に応じて管理者が使用する。
【００３２】
メモリコントローラ２０７は、ブートプログラム、各種のアプリケーション、フォントデータ、ユーザファイル、編集ファイル、各種データ等を記憶する外部記憶装置（ハードディスク（ＨＤ））や、フレキシブルディスク（ＦＤ）、あるいは、ＰＣＭＣＩＡ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ  Ｍｅｍｏｒｙ  Ｃａｒｄ  Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ａｓｓｏｃｉａｔｉｏｎ）カードスロットにアダプタを介して接続されるコンパクトフラッシュ（登録商標）メモリ等の外部メモリ２１１へのアクセスを制御する。
【００３３】
通信Ｉ／Ｆコントローラ２０８は、ネットワーク１０５を介して外部機器と接続・通信し、ネットワークでの通信制御処理を実行する。例えば、ＴＣＰ／ＩＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ／Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）を用いた通信等が可能である。
【００３４】
尚、ＣＰＵ２０１は、例えばＲＡＭ２０２内の表示情報用領域へアウトラインフォントの展開（ラスタライズ）処理を実行することにより、ディスプレイ２１０上に表示することが可能である。また、ＣＰＵ２０１は、ディスプレイ２１０上のマウスカーソル（図示しない）等によるユーザ指示を可能とする。
【００３５】
本発明を実現するための後述する各種プログラムは、外部メモリ２１１に記録されており、必要に応じてＲＡＭ２０２にロードされることによりＣＰＵ２０１によって実行されるものである。さらに、上記プログラムの実行時に用いられる定義ファイルおよび各種情報テーブル等も、外部メモリ２１１に格納されており、これらについての詳細な説明についても後述する。
【００３６】
図３は、本発明の実施形態に係る物理サーバ内の仮想サーバのイメージおよびインスタンス化された状態を示すイメージ図である。物理サーバ１０２における仮想サーバ１０３には、前述の通りイメージの状態（物理サーバの停止状態に相当）とインスタンスの状態（物理サーバの実行状態に相当）がある。
【００３７】
仮想サーバ１０３ａにおいて、内部的にはアプリケーション１０６ａ〜１０６ｃが構築されている。しかし仮想サーバ１０３ａはイメージの状態、すなわち物理サーバ１０２における静的なファイルに過ぎず、アプリケーション１０６も、ファイルの一部を構成しているに過ぎない。
【００３８】
一方、アプリケーション１０６を起動／実行するためには、インスタンス化する（仮想サーバｂの状態）。その上で、図３の例では、アプリケーション１０６ａ、１０６ｃを起動し、実行状態としている。また、アプリケーション１０６ｃは停止のままである。
【００３９】
図４は、本発明の実施形態に係るアプリケーションを追加で実行する際の実行制御を示すイメージ図である。図４では、既に仮想サーバ１０３ａがインスタンス化されており、その中でアプリケーション１０６ａが実行されているものとする（状態（１））。
【００４０】
ここでアプリケーション１０６ｂを起動する場合には、２つの方法がある。
【００４１】
まず、既にインスタン化されている仮想サーバ１０３ａにおいて、アプリケーション１０６ｂを起動／実行する方法である（状態（２））。もちろん、仮想サーバ１０３ａのスペックがユーザ企業の条件（例えば処理時間などにおいて、アプリケーション１０６ａ、ｂの両方を完了するなど）を満たす必要がある。
【００４２】
次に、新たに仮想サーバ１０３ｂをインスタンス化し、仮想サーバ１０３ｂにおいて、アプリケーション１０６ｂを起動／実行する方法である（状態（３））。図４の状態（３）では、物理サーバ１０２（ａ，ｂ）が２つであるかのような図になっているが、実際には１つでも２つでもよい。仮想サーバ１０３が２つになっていることを説明したいための図に過ぎず、ユーザ企業にとっては、各仮想サーバのスペックが条件を満たしていればよく、また仮想サーバ１０３単位でのクラウドベンダーと契約するので、いずれの場合でもコストはかからない。
【００４３】
図５から図８の記憶部は、実行制御サーバ１０１内、または実行制御サーバ１０１から参照可能なデータベースに記憶されているものである。これら記憶部は、図９、図１０のフローチャート、すなわちアプリケーション１０６の起動を制御し、およびアプリケーション１０６の起動／終了に伴い必要な仮想サーバ１０３のインスタンス化あるいは破棄を制御するために実行制御サーバ１０１から参照される。
【００４４】
図５は、本発明の実施形態に係る実行するアプリケーションと処理するデータ量に対し、要求される仮想サーバのスペックを算出するためのデータ構成の一例を示す図である。
【００４５】
要求スペック情報記憶部５００は、アプリケーション名５０１、データ量５０２、負荷算出５０３等のデータ項目から構成されるデータベースである。また、データ量５０２は、例として件数（処理すべきデータの数）となっているが、単位はなんでもよい。アプリケーション毎に異なってもよい（他の例として処理データサイズ総計等）。
【００４６】
アプリＡ、Ｂにおいては、データ量５０２が複数の段階に分かれ、各々負荷算出５０３に「補助テーブル」（１）〜（６）と記載されている。これは、データ量（ここでは件数）に応じて、補助テーブルを参照することにより、処理時間を概算する。補助テーブル（１）を例にすると、アプリＡによるＣＰＵ負荷５１１（占有率）と使用する仮想サーバのスペック（５１２〜５１４）に応じて、データ量５０２に記載されたデータ量を処理するための時間がマッピングされている。データ量（件数）に幅があるため、概算である。
【００４７】
また、アプリＣにおいては、負荷算出５０３は、データ量５０２に対するマッピングではなくスペック算出式（Ｆ）により定義される例を記載している。アプリＡ、Ｂがデータ量５０２に対して段階的に分割されているのに対し、計算式によりデータ量５０２に応じてより算出する。
【００４８】
あくまでこれらの負荷算出の方法は例であり、他の方法であってもよい。また、図５ではＣＰＵの負荷を対応付けており「１００％」の場合のデータ項目も記載されているが、例えば、ＣＰＵは必ずしも１つのアプリケーションで１００％占有できるわけではない。例えば、メモリ容量、ストレージとの通信速度、データの書き込み／読み取り速度などを総合的に算出する必要があるが、図５では、ＣＰＵ以外は省略している。以降、説明の簡略化のため同様に省略するが、常に様々な制約からのスペック、負荷を算出するものとする。
【００４９】
また、仮想サーバスペック（５１２〜５１４）はあくまで例であり、クラウドベンダーにより異なる分類、異なる段階数で提供される。
【００５０】
図６は、本発明の実施形態に係る利用する仮想サーバと、その課金される金額を対応付けるデータ構成の一例を示す図である。
【００５１】
課金情報記憶部６００は、仮想サーバスペック６０１、従量課金６０２（１時間単価等）等のデータ項目により構成されるデータベースである。
【００５２】
仮想サーバスペック６０１が３段階であること、また従量課金６０２が１時間単位の単価で計算されること、また金額はあくまで例である。
【００５３】
図７は、本発明の実施形態に係るインスタンス化されている仮想サーバに残リソース量を対応付けるデータ構成の一例を示す図である。図７の残リソース情報記憶部７００の例では、２つの仮想サーバ（７０１、７０２）がインスタンス化されている。
【００５４】
各々の仮想サーバに対して、残リソース情報として、サーバ種別７１１、残リソース総計７１２、各々のアプリケーション１０６に対する残リソース（例ではＣＰＵ）の占有率７１３、推定残処理時間７１４、終了要求時刻７１５等のデータ項目が記載されている。
【００５５】
残リソース総計７１２は、例えばＣＰＵが実行中の各アプリに使用されることにより、他のアプリが実行された場合にどの程度使用可能か、ということを示す。
【００５６】
各々のアプリケーション１０６に対する占有率７１３は、リソースをどの程度使用しているかを示す。例ではＣＰＵのみだが、前述のように他のリソースも記載する必要がある。
【００５７】
また、推定残処理時間７１４は、残りのデータ量を処理するために必要と推定される時間が記載されている。
【００５８】
終了要求時刻７１５は、そのアプリケーション１０６が運用上完了しなければならない時刻である。
【００５９】
現在時刻に推定残処理時間７１４を加えても余裕がある場合や、現在実行しているアプリケーション１０６が使用しているリソースの占有率７１３を落とさずに他のアプリケーション１０６を残リソース総計７１２で実行可能であれば、同一の仮想サーバ１０３において他のアプリケーション１０６を起動／実行させることができる。
【００６０】
図８は、本発明の実施形態に係る追加で実行が予定されているアプリケーションに関する情報を管理するデータ構成の一例を示す図である。
【００６１】
実行予定情報記憶部８００は、アプリケーション名８０１、データ量８０２、開始予定時刻８０３、終了要求時刻８０４等のデータ項目から構成されるデータベースである。
【００６２】
図８から、アプリケーション１０６を実行するために必要なスペックの仮想サーバ１０３を算出し、現在インスタンス化されている仮想サーバ１０３内で実行可能（終了時刻などの要求を満たす）なら、その仮想サーバ１０３でアプリケーション１０６を起動する（相乗りする）。そうでなければ、新たに仮想サーバ１０３の中で適切なものを算出し、インスタンス化し、そこでアプリケーション１０６を実行する。算出には、図５、図６を用いる。
【００６３】
図９、図１０においては、ユーザ企業が契約し、使用可能なスペックにおける仮想サーバ１０３のインスタンス化、破棄についての処理を説明する。当然のことながらユーザ企業が、ユーザ企業によって開発あるいはインストール／設定したアプリケーション１０６を含む仮想サーバ１０３に関する処理である。また、便宜上、当該ユーザ企業が使用するアプリケーション１０６は、各々の仮想サーバ１０３に含まれているものとする。ただしあくまで例であり、例えば、あるアプリケーション１０６を実行するために明らかにスペックが不足している仮想サーバ１０３にまでインストールさせる必要はない。また、いずれの仮想サーバ１０３がいずれのアプリケーション１０６を含んでいるかは、インストール情報記憶部（不図示）に格納されているとする。
【００６４】
図９は、本発明の実施形態に係る仮想サーバのインスタンス化とアプリケーションの起動の処理の一例を示すフローチャートである。図９のフローチャートの各ステップは、実行制御サーバ１０１のＣＰＵ２０１により実行される。
【００６５】
Ｓ９０１においては、実行予定情報記憶部８００に基づき、開始予定時刻８０３が現在の時刻となっている実行予定情報があるか否かを判定する。なければ図９のフローチャートを完了する。あればＳ９０２に進む。
【００６６】
Ｓ９０２においては、Ｓ９０１で開始予定時刻８０３が現在の時刻となっている実行予定情報の他のデータ項目を取得する。
【００６７】
Ｓ９０３においては、インスタンス化された仮想サーバ１０３があるか否かを判定する。あればＳ９０４に進む。なければＳ９０５に進む。
【００６８】
Ｓ９０４においては、現在インスタンス化されている全ての仮想サーバ１０３における残リソース情報を取得する。
【００６９】
Ｓ９０５においては、インストール情報記憶部に記憶されたインストール情報の仮想サーバ１０３のうち、インスタンス化されていない全ての仮想サーバ１０３のスペックを取得する。
【００７０】
Ｓ９０６においては、追加で実行すべきアプリケーション１０６をいずれの仮想サーバ１０３上で実行すれば最適であるかを算出する（最適解算出部）。ここで最適であるとは、各々のアプリケーション１０６の終了要求時刻（図７の７１５）を条件（制約条件）として満たすように実行した上で、課金を最小限にすることである。
【００７１】
具体的には、既にインスタンス化されている仮想サーバ１０３を考慮した上で、いずれの仮想サーバ１０３を新たにインスタンス化し、それぞれの仮想サーバ１０３においていずれのアプリケーション１０６を実行するか、の組み合わせを計算する。その際に、例えば終了要求時刻などの制約条件が近いアプリケーションを同じ仮想サーバ１０３で実行することなども考慮した組み合わせ問題に帰着される。これらの組み合わせ問題は配送の問題（大きさが異なる複数のトラックに如何に荷物を積み込み、複数の目的地に配送するか）や、生産管理の最適化などにより周知の技術なので、詳細の説明は省略する。
【００７２】
Ｓ９０７からＳ９１３のループ処理は、全ての追加で実行すべきアプリケーション１０６（Ｓ９０２で取得した情報）の各々のアプリケーション１０６についての繰り返し処理である。
【００７３】
Ｓ９０８においては、起動する１つのアプリケーション１０６に着目する。
【００７４】
Ｓ９０９においては、着目中のアプリケーション１０６を実行する仮想サーバ１０３（Ｓ９０６で指定された仮想サーバ１０３）は、既にインスタンス化されているか否かを判定する。インスタンス化されていない場合（ＮＯの場合）には、Ｓ９１０に進む。インスタンス化されている場合（ＹＥＳの場合）には、Ｓ９１１に進む。
【００７５】
Ｓ９１０においては、着目中のアプリケーション１０６を起動するための仮想サーバ１０３をインスタンス化し、その情報を残リソース情報記憶部７００に追加する（インスタンス生成部）。
【００７６】
Ｓ９１１においては、着目中のアプリケーション１０６を、指定の仮想サーバ１０３において起動する（アプリケーション起動部における起動処理）。
【００７７】
Ｓ９１２においては、着目中のアプリケーション１０６を起動したことに基づいて、残リソース情報記憶部７００における指定の仮想サーバ１０３の残リソース情報を更新する（アプリケーション起動部における残リソース情報の更新処理）。
【００７８】
以上の処理により、新たにアプリケーション１０６を起動する際に、既にインスタンス化されている仮想サーバ１０３と新たにインスタンス化する仮想サーバ１０３を最適に組み合わせ、制約条件を満たし、且つ最小限のコストでアプリケーション１０６を実行／終了することが可能となる。
以上で、図９のフローチャートの説明を完了する。
【００７９】
図１０は、本発明の実施形態に係る仮想サーバの破棄の処理の一例を示すフローチャートである。図１０のフローチャートの各ステップは、実行制御サーバ１０１のＣＰＵ２０１により実行される。この処理を実行するのは、アプリケーション１０６のうち処理が完了したものがあり、残リソース情報記憶部７００が更新され、実際に仮想サーバ１０３の残リソースが増加している場合である。なおアプリケーション１０６の処理が完了したことは、実行制御サーバ１０１が監視することにより判定され、残リソース情報記憶部７００の更新も、実行制御サーバ１０１により処理されてもよい。
【００８０】
また、実際には仮想サーバ１０３の破棄（インスタンスをイメージ戻すこと）だけではなく、実行を継続するアプリケーション１０６をいずれの仮想サーバ１０３上で実行するかに関して改めて最適な算出をするため、新しい仮想サーバ１０３をインスタンス化する場合もあり得る。
【００８１】
Ｓ１００１においては、インスタンス化された仮想サーバ１０３があるか否かを判定する。具体的には、残リソース情報記憶部７００に登録された残リソース情報があるか否かを判定する。仮想サーバ１０３がある場合には、Ｓ１００２に進む。ない場合には、図１０のフローチャートを完了する。
【００８２】
Ｓ１００２においては、実行中のアプリケーション１０６をいずれの仮想サーバ１０３上で実行すれば最適であるかを算出する（最適解算出部）。ここで最適であるとは、Ｓ９０６で説明したものと同じ意味である。また、最適化するために、後述のステップにおいて、実行中のアプリケーション１０６を一旦停止し、他の仮想サーバ１０３で再起動する場合もあり得る。
【００８３】
Ｓ１００３からＳ１００６のループ処理は、最適化するために追加でインスタンス化する必要がある全ての仮想サーバ１０３に対する繰り返し処理である。
【００８４】
Ｓ１００４においては、インスタンス化すべき（インスタンス化前のイメージである）１つの仮想サーバ１０３に着目する。
【００８５】
Ｓ１００５においては、着目中の仮想サーバ１０３をインスタンス化し、その情報を残リソース情報記憶部７００に追加する（インスタンス生成部）。
【００８６】
Ｓ１００７からＳ１０１１のループ処理は、アプリケーション１０６が現在実行されている仮想サーバ１０３とは別の、新たに指定された他の仮想サーバ１０３において実行されるよう、Ｓ１００２の最適化において判定されたものについての処理を繰り返す。
【００８７】
Ｓ１００８においては、１つのアプリケーション１０６に着目する。すなわち、別の仮想サーバ１０３で再起動するよう指定されたアプリケーション１０６のうちの１つに着目する。
【００８８】
Ｓ１００９においては、仮想サーバ１０３において実行中である着目中のアプリケーションを停止させる。また、残リソース情報記憶部７００の仮想サーバ１０３に対応する残リソース情報から、停止したアプリケーションの情報を削除し、また、残リソース総計７１２を更新する（アプリケーション再起動部において実行されるアプリケーション停止部）。
【００８９】
Ｓ１０１０においては、新たに指定された他の仮想サーバ１０３において着目中のアプリケーションを再起動させる。また、残リソース情報記憶部７００の新たに指定された他の仮想サーバ１０３に対応する残リソース情報に、再起動したアプリケーションの情報を追加し、また、残リソース総計７１２を更新する（アプリケーション再起動部において実行されるアプリケーション起動部）。
【００９０】
Ｓ１０１２からＳ１０１５のループ処理は、インスタンス化されていたが、最適化の結果、破棄されることになる全ての仮想サーバ１０３に対する繰り返し処理である。すなわち、実行しているアプリケーション１０６が１つもない仮想サーバ１０３に対する繰り返し処理である。
【００９１】
Ｓ１０１３においては、（現在インスタンス化されているが、破棄してイメージにすべき）１つの仮想サーバ１０３に着目する。
【００９２】
Ｓ１０１４においては、着目中の仮想サーバ１０３を破棄し（イメージにし）、その情報を残リソース情報記憶部７００から削除する（インスタンス破棄部）。
【００９３】
図１０で説明した処理は、例えば一定時間毎、１つのアプリケーション１０６が完了する毎、などに実行（再実行）することで、随時、インスタンス化する仮想サーバ１０３を最適化する効果が得られる。その他、所望のタイミングで実行させるよう実装することが可能である。
以上により、図１０のフローチャートの説明を完了する。
【００９４】
なお、上述した各種データの構成及びその内容はこれに限定されるものではなく、用途や目的に応じて、様々な構成や内容で構成されることは言うまでもない。
【００９５】
以上、一実施形態について示したが、本発明は、例えば、システム、装置、方法、プログラムもしくは記録媒体等としての実施態様をとることが可能であり、具体的には、複数の機器から構成されるシステムに適用しても良いし、また、一つの機器からなる装置に適用しても良い。
【００９６】
また、本発明におけるプログラムは、図９に示すフローチャートの処理方法をコンピュータが実行可能なプログラムであり、本発明の記憶媒体は図９の処理方法をコンピュータが実行可能なプログラムが記憶されている。なお、本発明におけるプログラムは図９の各装置の処理方法ごとのプログラムであってもよい。
【００９７】
以上のように、前述した実施形態の機能を実現するプログラムを記録した記録媒体を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ（またはＣＰＵやＭＰＵ）が記録媒体に格納されたプログラムを読出し実行することによっても、本発明の目的が達成されることは言うまでもない。
【００９８】
この場合、記録媒体から読み出されたプログラム自体が本発明の新規な機能を実現することになり、そのプログラムを記憶した記録媒体は本発明を構成することになる。
【００９９】
プログラムを供給するための記録媒体としては、例えば、フレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＤＶＤ−ＲＯＭ、磁気テープ、不揮発性のメモリカード、ＲＯＭ、ＥＥＰＲＯＭ、シリコンディスク、ソリッドステートドライブ等を用いることができる。
【０１００】
また、コンピュータが読み出したプログラムを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムの指示に基づき、コンピュータ上で稼働しているＯＳ（オペレーティングシステム）等が実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【０１０１】
さらに、記録媒体から読み出されたプログラムが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵ等が実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【０１０２】
また、本発明は、複数の機器から構成されるシステムに適用しても、１つの機器からなる装置に適用してもよい。また、本発明は、システムあるいは装置にプログラムを供給することによって達成される場合にも適応できることは言うまでもない。この場合、本発明を達成するためのプログラムを格納した記録媒体を該システムあるいは装置に読み出すことによって、そのシステムあるいは装置が、本発明の効果を享受することが可能となる。  さらに、本発明を達成するためのプログラムをネットワーク上のサーバ、データベース等から通信プログラムによりダウンロードして読み出すことによって、そのシステムあるいは装置が、本発明の効果を享受することが可能となる。
【０１０３】
なお、上述した各実施形態およびその変形例を組み合わせた構成も全て本発明に含まれるものである。
【符号の説明】
【０１０４】
１０１  実行制御サーバ
１０２  物理サーバ
１０３  仮想サーバ
１０４  管理者端末
１０５  ネットワーク
１０６  アプリケーション
１０７  ストレージサーバ
１０８  クライアント端末
【図１】
2014115905.tif 000003
【図２】
2014115905.tif 000004
【図３】
2014115905.tif 000005
【図４】
2014115905.tif 000006
【図５】
2014115905.tif 000007
【図６】
2014115905.tif 000008
【図７】
2014115905.tif 000009
【図８】
2014115905.tif 000010
【図９】
2014115905.tif 000011
【図１０】
2014115905.tif 000012