(57)【要約】【課題】ユーザが、利用するデータの保存場所や利用するアプリケーション実行環境イメージの組み合わせを把握しなくても、コンテナ上でアプリケーションを利用する。【解決手段】情報処理装置１は、ユーザが所望するサービスを取得し、該取得したサービスのリソースを特定し、該取得したサービスを実行するコンテナが起動されていないときに（Ｓ１２）、停止候補のコンテナについて、起動時間と、実行されるサービスのレスポンス時間と、必要なリソースと、実行されるサービスへのリクエストの頻度とを用いて、停止候補のコンテナが停止した場合のユーザに与える影響度を算出し、該算出した影響度に基づいて、停止候補のコンテナのうち、該特定したリソースを確保するために停止するコンテナを判定する（Ｓ１３）。情報処理装置１は、判定したコンテナを停止し（Ｓ１４）、該取得したサービスのコンテナを起動する（Ｓ１６）。【選択図】図７
2020144540.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータが、
ユーザが所望するサービスを取得し、
該取得したサービスのリソースを特定し、
該取得したサービスを実行するコンテナが起動されていないときに、停止候補のコンテナについて、起動時間と、実行されるサービスのレスポンス時間と、必要なリソースと、実行されるサービスへのリクエストの頻度とを用いて、停止候補のコンテナが停止した場合のユーザに与える影響度を算出し、
該算出した影響度に基づいて、停止候補のコンテナのうち、特定したリソースを確保するためのコンテナを停止し、
該取得したサービスのコンテナを起動する
処理を実行することを特徴とする停止コンテナ判定方法。
【請求項２】
該算出する処理は、
前記停止候補のコンテナごとに、所定期間内の前記リクエストの頻度および前記レスポンス時間から得られる、停止候補のコンテナを停止しないで動作し続けた場合の第１の総レスポンス時間を算出し、
前記停止候補のコンテナごとに、前記起動時間と、所定期間内の前記リクエストの頻度および前記レスポンス時間とから得られる、停止候補のコンテナが停止中に起動した場合の第２の総レスポンス時間を算出し、
前記停止候補のコンテナごとに、前記第２の総レスポンス時間を前記第１の総レスポンス時間と比べた場合の比率を前記影響度として算出する
ことを特徴とする請求項１に記載の停止コンテナ判定方法。
【請求項３】
該停止する処理は、該特定したリソースを確保するために、前記停止候補のコンテナのうち、前記影響度が最小のコンテナまたはコンテナ群を停止する
ことを特徴とする請求項１または請求項２に記載の停止コンテナ判定方法。
【請求項４】
前記停止候補のコンテナの起動時間の間に要求されるリクエストの数を取得し、
該取得したリクエストの数分、それぞれのリクエストに対してレスポンスを返すそれぞれのレスポンス時間を取得し、
前記レスポンスを返している間にさらに要求されるリクエストがある場合には、当該リクエストに対してレスポンスを返すレスポンス時間を追加し、
前記レスポンスを返している間にさらに要求されるリクエストがない場合、または該追加したレスポンス時間の間にさらにリクエストが要求されない場合には、コンテナの起動開始から最後のレスポンス時間終了までの時間を、前記停止候補のコンテナに対する所定時間として算出する
ことを特徴とする請求項２に記載の停止コンテナ判定方法。
【請求項５】
ユーザが所望するサービスを取得し、
該取得したサービスのリソースを特定し、
該取得したサービスを実行するコンテナが起動されていないときに、停止候補のコンテナについて、起動時間と、実行されるサービスのレスポンス時間と、必要なリソースと、実行されるサービスへのリクエストの頻度とを用いて、停止候補のコンテナが停止した場合のユーザに与える影響度を算出し、
該算出した影響度に基づいて、停止候補のコンテナのうち、特定したリソースを確保するためのコンテナを停止し、
該取得したサービスのコンテナを起動する
処理をコンピュータに実行させることを特徴とする停止コンテナ判定プログラム。
【請求項６】
ユーザが所望するサービスを取得する取得部と、
前記取得部によって取得されたサービスのリソースを特定する特定部と、
前記取得部によって取得されたサービスを実行するコンテナが起動されていないときに、停止候補のコンテナについて、起動時間と、実行されるサービスのレスポンス時間と、必要なリソースと、実行されるサービスへのリクエストの頻度とを用いて、停止候補のコンテナが停止した場合のユーザに与える影響度を算出する算出部と、
前記算出部によって算出された影響度に基づいて、停止候補のコンテナのうち、前記特定部によって特定されたリソースを確保するためのコンテナを停止する停止部と、
前記取得部によって取得されたサービスのコンテナを起動する起動部と、
を有することを特徴とする情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、停止コンテナ決定方法等に関する。
【背景技術】
【０００２】
近年、サーバを必要とせずに、サービスを提供する実行環境を構築するための技術として、サーバレスアーキテクチャの技術が知られている（例えば、特許文献１〜５を参照）。かかるサーバレスアーキテクチャでは、サービスの開発者が事前にサーバレスアーキテクチャのサービスに処理内容を登録する。登録された処理内容に対応するＷｅｂ  ＡＰＩ（Application  Programming  Interface）の実行条件が満たされると、サーバレスアーキテクチャは、処理内容が実行可能なコンテナを起動し、処理内容に対して要求されたリクエストに対するレスポンスを返す。一定期間利用されないコンテナは、自動的に停止し、次に呼び出されるまで、起動することはない。サーバレスアーキテクチャのサービスの一例として、「ＡＷＳ  Ｌａｍｂｄａ（登録商標）」、「Ａｚｕｒｅ  Ｆｕｎｃｔｉｏｎｓ（登録商標）」や「Ｇｏｏｇｌｅ  Ｃｌｏｕｄ  Ｆｕｎｃｔｉｏｎｓ（登録商標）」等が挙げられる。
【０００３】
サーバレスアーキテクチャでは、必要な計算資源が十分にある場合には、常にコンテナを動作し続ければよいが、必要な計算資源が十分にない場合には、計算資源の利用の効率化が望まれる。計算資源の利用の効率化には、必要に応じてコンテナの停止と起動とを繰り返すことが知られている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１７−１６７７６３号公報
【特許文献２】特開２０１７−０９７６４２号公報
【特許文献３】特開２０１７−１７４０３８号公報
【特許文献４】国際公開第２００８／０８４８２６号
【特許文献５】国際公開第２００６／０５９６５０号
【発明の概要】
【発明が解決しようとする課題】
【０００５】
計算資源が限られている場合に、実行が必要になったサービスのコンテナを利用する際には、いずれかのコンテナを停止したうえで、必要なコンテナを起動する必要がある。しかしながら、実行しているコンテナのうちどのコンテナを停止してよいのかは自明でない。
【０００６】
例えば、コンテナの起動には、実行処理の内容に応じて、数秒から数分の時間がかかる。仮にコンテナが起動していれば、ユーザからのリクエストに対して数秒で応答できるが、起動に数分かかるサービスのコンテナが停止した場合には、次にこのサービスにリクエストを送信したユーザは、コンテナの起動時間とコンテナ内の処理時間だけ待つこととなる。ユーザは、サービスのレスポンスにばらつきがあり、稀に待ち時間が増えることを知っている。ところが、ユーザは、待ち時間の増加が１万回のリクエストに１回程度の頻度であれば、待ち時間が増えることを許容できるが、頻繁にコンテナが停止することで、数回に１回の頻度でレスポンスの遅延が発生すると、許容できない。一例として、起動時間が数秒のコンテナが優先的に停止したとしても、このコンテンツの普段のレイテンシが１ミリ秒（ｍｓ）であった場合、突然、レスポンス時間が起動時間を加算した数千倍になることになるので、起動時間が数秒のコンテナを優先的に停止することが良いとは限らない。また、新しいコンテナを起動するための計算資源を解放するために、巨大な計算資源を必要とするコンテナを１つ停止する場合と小規模の計算資源を必要とするコンテナを複数停止する場合のどちらが良いかも自明でない。
【０００７】
１つの側面では、計算資源が限られている場合に、新しいサービスをコンテナに立ち上げる際、停止するコンテナを判定することを目的とする。
【課題を解決するための手段】
【０００８】
１つの態様では、コンピュータが、ユーザが所望するサービスを取得し、該取得したサービスのリソースを特定し、該取得したサービスを実行するコンテナが起動されていないときに、停止候補のコンテナについて、起動時間と、実行されるサービスのレスポンス時間と、必要なリソースと、実行されるサービスへのリクエストの頻度とを用いて、停止候補のコンテナが停止した場合のユーザに与える影響度を算出し、該算出した影響度に基づいて、停止候補のコンテナのうち、該特定したリソースを確保するためのコンテナを停止し、該取得したサービスのコンテナを起動する、処理を実行する。
【発明の効果】
【０００９】
１つの態様によれば、計算資源が限られている場合に、新しいサービスをコンテナに立ち上げる際、停止するコンテナを判定することができる。
【図面の簡単な説明】
【００１０】
【図１】図１は、実施例に係る情報処理装置を含むシステムの処理の一例を示す図である。
【図２】図２は、実施例に係る情報処理装置の構成を示す機能ブロック図である。
【図３】図３は、実施例に係るコンテナ情報の一例を示す図である。
【図４】図４は、実施例に係るＡＰＩ利用ログの一例を示す図である。
【図５】図５は、実施例に係る指標の計算を説明する図である。
【図６】図６は、実施例に係る基準時間を計算する疑似コードの一例を示す図である。
【図７】図７は、実施例に係るコンテナ管理処理のフローチャートの一例を示す図である。
【図８】図８は、実施例に係る停止コンテナ判定処理のフローチャートの一例を示す図である。
【図９】図９は、実施例に係る停止コンテナ判定のシーケンスの一例を示す図である。
【図１０】図１０は、停止コンテナ判定プログラムを実行するコンピュータの一例を示す図である。
【発明を実施するための形態】
【００１１】
以下に、本願の開示する停止コンテナ判定方法、情報処理装置および停止コンテナ判定プログラムの実施例を図面に基づいて詳細に説明する。なお、実施例によりこの発明が限定されるものではない。
【実施例】
【００１２】
［情報処理装置を含むシステムの処理の一例］
図１は、実施例に係る情報処理装置を含むシステムの処理の一例を示す図である。図１に示すように、システムは、情報処理装置１と、ゲートウェイ２と、サービス用サーバ３とを有する。情報処理装置１は、Ｗｅｂサービスのコンテナに関する情報を蓄積する部分と、蓄積された情報をもとにコンテナの起動と停止を判定する部分と、実際にコンテナの起動と停止を実行する部分とを有する。Ｗｅｂサービスのコンテナに関する情報を蓄積する部分には、コンテナ情報２１，リソース情報２２，ＡＰＩ利用ログ２３が含まれる。蓄積された情報をもとにコンテナの起動と停止を判定する部分には、停止コンテナ判定部１２が含まれる。実際にコンテナの起動と停止を実行する部分には、コンテナ管理部１１が含まれる。また、サービス用サーバ３は、コンテナの実行基盤を示す。
【００１３】
ユーザがＡＰＩのリクエストを依頼すると、ゲートウェイ２が、ＡＰＩに対するＷｅｂサービスのコンテナがサービス用サーバ３上で起動されていれば、起動されているコンテナに対してリクエストを送信し、レスポンスを受信する（Ｓ１１０）。そして、ゲートウェイ２は、受信したレスポンスをユーザに返す。このとき、Ｗｅｂサービスのコンテナは、処理にかかった処理時間の情報をコンテナ情報２１に記録する。ゲートウェイ２は、レスポンスの処理にかかったレスポンス時間をコンテナ情報２１に記録する。
【００１４】
ゲートウェイ２が、ＡＰＩに対するＷｅｂサービスのコンテナがサービス用サーバ３上で起動されていなければ、当該コンテナの起動を情報処理装置１に依頼する（Ｓ１２０）。
【００１５】
情報処理装置１のコンテナ管理部１１は、リソース情報２２を用いて、起動を依頼されたコンテナを起動する場合のリソースが空いているかを確認する（Ｓ１３０）。コンテナ管理部１１は、空いていない場合には、どのコンテナを停止するべきかを停止コンテナ判定部１２に問い合わせる（Ｓ１４０）。
【００１６】
停止コンテナ判定部１２は、停止候補のコンテナについて、起動時間と、当該コンテナで実行中のＷｅｂサービスのレスポンス時間と、当該コンテナで実行中のＷｅｂサービスの必要なリソースと、当該コンテナで実行中のＷｅｂサービスへのリクエストの頻度を用いて、当該コンテナが停止した場合のユーザに与える影響度（指標）を算出する（Ｓ１５０）。コンテナについての起動時間およびレスポンス時間は、コンテナ情報２１に記憶される。リソースは、リソース情報２２に記憶される。リクエストの頻度は、ＡＰＩ利用ログ２３に記憶された情報から得られる。停止コンテナ判定部１２は、算出した影響度に基づいて、停止候補のコンテナのうち停止するコンテナを判定する。そして、停止コンテナ判定部１２は、停止すべきコンテナをコンテナ管理部１１に通知する（Ｓ１６０）。
【００１７】
コンテナ管理部１１は、起動すべきコンテナの起動に必要なリソースを確保するために、停止すべきコンテナを停止し、起動すべきコンテナを起動する（Ｓ１７０）。このとき、コンテナ管理部１１は、停止により解放されたリソースについて、リソース情報２２に記録し、起動により利用されるリソースについて、リソース情報２２に記録する（Ｓ１８０）。
【００１８】
ゲートウェイ２は、利用されたＷｅｂサービスのコンテナの種類をＡＰＩ利用ログ２３に記録する（Ｓ１９０）。
【００１９】
このようにして、情報処理装置１は、計算資源が限られている場合に、新しいサービスのコンテナを起動する際、停止候補のコンテナが停止した場合のユーザに与える影響度を用いることで、停止すべきコンテナを判定することができる。
【００２０】
［情報処理装置の構成］
図２は、実施例に係る情報処理装置の構成を示す機能ブロック図である。図２に示すように、情報処理装置１は、制御部１０および記憶部２０を有する。
【００２１】
制御部１０は、ＣＰＵ（Central  Processing  Unit）などの電子回路に対応する。そして、制御部１０は、各種の処理手順を規定したプログラムや制御データを格納するための内部メモリを有し、これらによって種々の処理を実行する。制御部１０は、コンテナ管理部１１および停止コンテナ判定部１２を有する。なお、コンテナ管理部１１は、特定部、停止部および起動部の一例である。停止コンテナ判定部１２は、算出部および停止部の一例である。
【００２２】
記憶部２０は、例えば、ＲＡＭ、フラッシュメモリ（Flash  Memory）などの半導体メモリ素子、または、ハードディスク、光ディスクなどの記憶装置である。記憶部２０は、コンテナ情報２１、リソース情報２２およびＡＰＩ利用ログ２３を有する。
【００２３】
コンテナ情報２１は、コンテナの起動時間およびレスポンスの処理時間等を対応付けた情報である。ここで、コンテナ情報２１の一例を、図３を参照して説明する。
【００２４】
図３は、実施例に係るコンテナ情報の一例を示す図である。図３に示すように、コンテナ情報２１は、起動にかかる時間（起動時間）およびレスポンスの処理にかかる時間（レスポンス時間）をコンテナイメージ名に対応付けた情報である。コンテナイメージ名は、コンテナに対するイメージの名称を示し、Ｗｅｂサービスのコンテナの種類ともいえる。コンテナは、イメージを基に作成される。イメージは、ＡＰＩのＷｅｂサービスによって生成される。
【００２５】
起動にかかる時間（起動時間）は、コンテナイメージ名が示すイメージを用いてコンテナを起動する時間を示す。一例として、起動時間は、後述するコンテナ管理部１１がコンテナの起動命令を出してからコンテナの起動処理が完了するまでにかかった時間である。起動時間は、コンテナ管理部１１によってコンテナ情報２１に記録されれば良い。
【００２６】
レスポンスの処理にかかる時間（レスポンス時間）は、ユーザがリクエストを出してからコンテナがユーザに結果を返すまでにかかった時間を示す。一例として、レスポンス時間は、ゲートウェイ２がコンテナにＡＰＩのリクエストを出してからコンテナからレスポンスが戻るまでの時間である。レスポンス時間は、ゲートウェイ２がユーザに結果（レスポンス）を返すタイミングで、コンテナ情報２１に記録されれば良い。なお、後述する処理時間は、コンテナがリクエストに対する処理を開始してから結果を求めるまでの時間であり、レスポンス時間に含まれる。
【００２７】
一例として、コンテナイメージ名が「ｔａｒｏｕ／ａａａ：ｖ１．０」である場合に、起動にかかる時間として「２５．１（秒）」、レスポンスの処理にかかる時間として「０．５３（秒）」と記憶している。
【００２８】
リソース情報２２は、サービス用サーバ３のリソースや、コンテナのリソースを含む情報である。リソース情報２２には、コンテナの起動に必要なリソースが含まれる。ここでいうリソースとは、例えば、メモリの容量やＣＰＵの処理速度のことをいう。
【００２９】
ＡＰＩ利用ログ２３は、ＡＰＩの利用ログである。ＡＰＩ利用ログ２３は、ユーザからＡＰＩのリクエストがあるたびに、ゲートウェイ２によって記録される。「リクエストの頻度」は、ＡＰＩ利用ログ２３から得られる。ここで、ＡＰＩ利用ログ２３の一例を、図４を参照して説明する。
【００３０】
図４は、実施例に係るＡＰＩ利用ログの一例を示す図である。図４に示すように、ＡＰＩ利用ログ２３は、コンテナイメージ名および時刻を対応付けた情報である。コンテナイメージ名は、ＡＰＩに対するＷｅｂサービスを実行するために必要な、コンテナに対するイメージの名称を示し、Ｗｅｂサービスのコンテナの種類ともいえる。ＡＰＩ利用ログ２３のコンテナイメージ名は、コンテナ情報２１のコンテナイメージ名に対応する。時刻は、ＡＰＩのリクエストがあった時刻を示す。時刻は、ＡＰＩのリクエストが終了した時刻であっても良い。
【００３１】
一例として、コンテナイメージ名が「ｔａｒｏｕ／ａａａ：ｖ１．０」である場合に、時刻として「２０１８−０９−０６  １３：３９：３２．・・・・」と記憶している。
【００３２】
コンテナ管理部１１は、コンテナを管理する。
【００３３】
例えば、コンテナ管理部１１は、コンテナの起動依頼を受け付けると、リソース情報２２を用いて、指定されたコンテナを起動する場合のリソースが空いているか否かを判定する。コンテナ管理部１１は、指定されたコンテナを起動する場合のリソースが空いている場合には、当該コンテナを起動する。
【００３４】
また、コンテナ管理部１１は、指定されたコンテナを起動する場合のリソースが空いていない場合には、当該コンテナを起動するために停止すべきコンテナを停止コンテナ判定部１２に問い合わせる。そして、コンテナ管理部１１は、問い合わせた結果、停止すべきコンテナを停止する。この後、コンテナ管理部１１は、指定されたコンテナを起動する。
【００３５】
また、コンテナ管理部１１は、指定されたコンテナの起動時間をコンテナ情報２１に記録する。コンテナ管理部１１は、指定されたコンテナのリソースの情報をリソース情報２２に更新する。
【００３６】
停止コンテナ判定部１２は、停止すべきコンテナを判定する。例えば、停止コンテナ判定部１２は、コンテナ管理部１１から停止すべきコンテナの問い合わせ依頼を受け付けると、停止候補のコンテナごとに、停止候補のコンテナが停止した場合のユーザに与える影響度（指標）を算出する。すなわち、停止コンテナ判定部１２は、停止候補のコンテナについて、起動時間と、実行されるサービスのレスポンス時間と、必要なリソースと、実行されるサービスへのリクエストの頻度とを用いて、影響度（指標）を算出する。停止候補のコンテナの起動時間およびサービスのレスポンス時間は、それぞれコンテナ情報２１から取得される。停止候補のコンテナの必要なリソースは、リソース情報２２から取得される。停止候補のコンテナのサービスへのリクエストの頻度は、ＡＰＩ利用ログ２３から取得される。停止候補のコンテナは、現にサービス用サーバ３で動作中のコンテナであり、停止候補のコンテナの情報は、例えば、サービス用サーバ３で管理されるＷｅｂサービス情報から取得される。そして、停止コンテナ判定部１２は、算出した影響度に基づいて、起動すべきコンテナを起動するために必要なリソースを確保するために、影響度が最も小さいコンテナまたはコンテナの集合を停止すべきコンテナとして判定する。停止すべきコンテナにコンテナの集合を含むのは、起動すべきコンテナを起動するために必要なリソースを確保するためである。つまり、１つのコンテナだけでは、起動すべきコンテナを起動するために必要なリソースを確保することができない場合があるため、停止すべきコンテナにコンテナの集合を含む。
【００３７】
ここでいう影響度とは、コンテナを停止することでどの程度ユーザに影響があるかの指標のことをいい、例えば、ユーザの待ち時間についての指標のことをいう。影響度の算出方法は、例えば、以下のとおりである。一例として、停止コンテナ判定部１２は、停止候補のコンテナごとに、基準となる時間（基準時間）内のリクエストの頻度およびレスポンス時間から得られる、停止候補のコンテナを停止しないで動作し続けた場合の第１の総レスポンス時間を算出する。そして、停止コンテナ判定部１２は、停止候補のコンテナごとに、起動時間と、基準時間内のリクエストの頻度およびレスポンス時間とから得られる、停止候補のコンテナが停止中に起動した場合の第２の総レスポンス時間を算出する。そして、停止コンテナ判定部１２は、停止候補のコンテナごとに、第２のレスポンス時間を第１の総レスポンス時間と比べた場合の比率を影響度（指標）として算出する。なお、基準時間は、レスポンス時間、コンテナの起動時間、基準時間内に届くユーザからのレスポンスの数から計算することが可能である。基準時間を計算する疑似コードの一例は、後述する。
【００３８】
［指標の計算］
ここで、実施例に係る指標の計算を、図５を参照して説明する。図５は、実施例に係る指標の計算を説明する図である。図５上図には、コンテナを停止せずにそのまま動作し続けた場合の様子が表わされている。図５下図には、コンテナを停止した後、同じコンテナを再び起動した場合の様子が表わされている。なお、Ｔｃｎは、基準時間である。ＴＲ（Ｃｎ）は、コンテナＣｎのレスポンス時間（処理時間を含む）を示す。ここでは、ＴＲ（Ｃｎ）は、便宜上、固定であるとする。ＴＢ（Ｃｎ）は、コンテナＣｎの起動時間を示す。Ｎ（Ｔｃｎ、Ｃｎ）は、コンテナＣｎの基準時間内のリクエストの頻度を示す。
【００３９】
図５上図に示すように、停止コンテナ判定部１２は、停止候補のコンテナＣｎについて、基準時間Ｔｃｎ内のリクエストの頻度Ｎ（Ｔｃｎ、Ｃｎ）およびレスポンス時間ＴＢ（Ｃｎ）から得られる第１の総レスポンス時間を算出する。第１の総レスポンス時間は、停止候補のコンテナＣｎを停止しないで動作し続けた場合のトータルのレスポンス時間である。すなわち、コンテナＣｎの第１の総レスポンス時間は、以下の式（１）によって算出される。
第１の総レスポンス時間Ａ（Ｃｎ）＝Ｎ（Ｔｃｎ、Ｃｎ）×ＴＲ（Ｃｎ）・・・式（１）
【００４０】
ここでは、基準時間Ｔｃｎ内のリクエストの頻度Ｎ（Ｔｃｎ、Ｃｎ）は、４であるので、第１の総レスポンス時間Ａ（Ｃｎ）は、４×ＴＲ（Ｃｎ）である。
【００４１】
図５下図に示すように、停止コンテナ判定部１２は、停止候補のコンテナＣｎについて、起動時間ＴＢ（Ｃｎ）と、基準時間Ｔｃｎ内のリクエストの頻度Ｎ（Ｔｃｎ、Ｃｎ）およびレスポンス時間ＴＢ（Ｃｎ）とから得られる第２の総レスポンス時間を算出する。第２の総レスポンス時間は、停止候補のコンテナＣｎが停止中に起動した場合のトータルのレスポンス時間である。すなわち、コンテナＣｎの第２の総レスポンス時間は、以下の式（２）によって算出される。
第２の総レスポンス時間Ｂ（Ｃｎ）＝Ｎ（Ｔｃｎ、Ｃｎ）×ＴＲ（Ｃｎ）＋ＴＢ（Ｃｎ）・・・式（２）
【００４２】
ここでは、基準時間Ｔｃｎ内のリクエストの頻度Ｎ（Ｔｃｎ、Ｃｎ）は、４であるので、第２の総レスポンス時間は、４×ＴＲ（Ｃｎ）＋ＴＢ（Ｃｎ）である。
【００４３】
そして、停止コンテナ判定部１２は、停止候補のコンテナごとＣｎについて、第２の総レスポンス時間Ｂ（Ｃｎ）を第１の総レスポンス時間Ａ（Ｃｎ）と比べた場合の比率Ｍ（Ｃｎ）を影響度（指標）として算出する。すなわち、コンテナＣｎを停止した場合の影響度（指標）は、以下の式（３）によって算出される。
指標Ｍ（Ｃｎ）＝Ｂ（Ｃｎ）／Ａ（Ｃｎ）・・・式（３）
【００４４】
停止コンテナ判定部１２は、停止候補のコンテナＣｎごとに、影響度（指標）Ｍ（Ｃｎ）を算出する。そして、停止コンテナ判定部１２は、新しいコンテナを起動するために必要なリソースを空けるために、影響度（指標）が最も小さいコンテナまたは影響度（指標）の総和が最も小さいコンテナの集合を停止すべきコンテナとして判定する。
【００４５】
「基準時間を計算する疑似コード」
ここで、基準時間の計算方法について、説明する。一例として、停止コンテナ判定部１２は、停止候補のコンテナごとに、以下の処理を行う。停止コンテナ判定部１２は、停止候補のコンテナについて、起動時間の間に要求されるリクエストの数を求める。停止コンテナ判定部１２は、起動時間の間に要求されるリクエストの数分、それぞれのリクエストに対してレスポンスを返すそれぞれのレスポンス時間を求める。停止コンテナ判定部１２は、レスポンスを返している間にさらに要求されるリクエストがある場合には、当該リクエストに対してレスポンスを返すレスポンス時間を追加する。停止コンテナ判定部１２は、レスポンスを返している間にさらに要求されるリクエストがない場合、または該追加したレスポンス時間の間にさらにリクエストが要求されない場合には、コンテナの起動開始から最後のレスポンス時間終了までの時間を、基準時間として算出する。
【００４６】
図６は、実施例に係る基準時間を計算する疑似コードの一例を示す図である。なお、Ｔｃｎは、基準時間である。ＴＲ（Ｃｎ）は、コンテナＣｎのレスポンス時間（処理時間を含む）を示す。ＴＢ（Ｃｎ）は、コンテナＣｎの起動時間を示す。Ｎ（Ｔ、Ｃｎ）は、コンテナＣｎのＴ秒内のリクエストの頻度を示す。ｉは、インデックスを示す。Ｔは、経過時間を示す。
【００４７】
図６に示すように、停止コンテナ判定部１２は、符号ｃ０のコードが示すように、経過時間Ｔ（０）が示す「０」時間の間に要求されるリクエストがないので、Ｔ（１）にＴＢ（Ｃｎ）を設定する。すなわち、Ｔ（１）には、コンテナＣｎの起動時間分の経過時間が設定される。そして、停止コンテナ判定部１２は、Ｔ（ｉ）がＴ（ｉ−１）と一致するまで、以下の処理を行う。すなわち、停止コンテナ判定部１２は、符号ｃ１のコードが示すように、起動時間Ｔ（１）に、起動時間（＝Ｔ（１）−Ｔ（０））の間に要求されるリクエストの数分Ｎのレスポンス時間ＴＲ（Ｃｎ）を加算し、加算した値を経過時間Ｔ（２）に設定する。さらに、停止コンテナ判定部１２は、符号ｃ１のコードが示すように、経過時間Ｔ（２）に、レスポンスを返している間（＝Ｔ（２）−Ｔ（１））にさらに要求されるリクエストがある場合には、当該リクエストの数分Ｎのレスポンス時間ＴＲ（Ｃｎ）を追加し、加算した値を経過時間Ｔ（３）に設定する。そして、停止コンテナ判定部１２は、Ｔ（ｉ）がＴ（ｉ−１）と一致すると、符号ｃ２のコードが示すように、コンテナの起動開始から最後のレスポンス時間終了までの時間Ｔ（ｉ）を、基準時間Ｔｃｎとして算出する。
【００４８】
［コンテナ管理処理のフローチャート］
図７は、実施例に係るコンテナ管理処理のフローチャートの一例を示す図である。
【００４９】
図７に示すように、コンテナ管理部１１は、コンテナの起動依頼を受け付けたか否かを判定する（ステップＳ１１）。コンテナの起動依頼を受け付けていないと判定した場合には（ステップＳ１１；Ｎｏ）、コンテナ管理部１１は、コンテナの起動依頼を受け付けるまで、判定処理を繰り返す。
【００５０】
一方、コンテナの起動依頼を受け付けたと判定した場合には（ステップＳ１１；Ｙｅｓ）、コンテナ管理部１１は、リソース情報２２を参照して、起動依頼のあったコンテナを起動するために必要なリソースが空いているか否かを判定する（ステップＳ１２）。コンテナを起動するために必要なリソースが空いていると判定した場合には（ステップＳ１２；Ｙｅｓ）、コンテナ管理部１１は、当該コンテナを起動すべく、ステップＳ１６に移行する。
【００５１】
一方、起動依頼のあったコンテナを起動するために必要なリソースが空いていないと判定した場合には（ステップＳ１２；Ｎｏ）、コンテナ管理部１１は、停止コンテナ判定処理を実行する（ステップＳ１３）。すなわち、コンテナ管理部１１は、起動依頼のあったコンテナを起動するために停止すべきコンテナの判定を停止コンテナ判定部１２に依頼する。なお、停止コンテナ判定処理のフローチャートは、後述する。
【００５２】
続いて、コンテナ管理部１１は、停止コンテナ判定処理によって判定された停止すべきコンテナを停止する（ステップＳ１４）。そして、コンテナ管理部１１は、リソース情報２２を更新する（ステップＳ１５）。
【００５３】
そして、コンテナ管理部１１は、起動依頼のあった、起動対象のコンテナを起動する（ステップＳ１６）。そして、コンテナ管理部１１は、リソース情報２２を更新する（ステップＳ１７）。そして、コンテナ管理部１１は、コンテナ管理処理を終了する。
【００５４】
［停止コンテナ判定処理のフローチャート］
図８は、実施例に係る停止コンテナ判定処理のフローチャートの一例を示す図である。
【００５５】
図７に示すように、停止コンテナ判定部１２は、停止コンテナの判定依頼を受け付けたか否かを判定する（ステップＳ２１）。停止コンテナの判定依頼を受け付けていないと判定した場合には（ステップＳ２１；Ｎｏ）、停止コンテナ判定部１２は、停止コンテナの判定依頼を受け付けるまで、判定処理を繰り返す。
【００５６】
一方、停止コンテナの判定依頼を受け付けたと判定した場合には（ステップＳ２１；Ｙｅｓ）、停止コンテナ判定部１２は、サービス用サーバ３で動作中のコンテナを選択する（ステップＳ２２）。
【００５７】
そして、停止コンテナ判定部１２は、コンテナ情報２１を参照し、選択したコンテナの起動時間を取得する（ステップＳ２３）。停止コンテナ判定部１２は、ＡＰＩ利用ログ２３を参照し、選択したコンテナで実行中のＷｅｂサービスへのリクエスト頻度の情報を取得する（ステップＳ２４）。停止コンテナ判定部１２は、コンテナ情報２１を参照し、各リクエストのレスポンス時間を取得する（ステップＳ２５）。そして、停止コンテナ判定部１２は、取得した情報を基に、選択したコンテナを停止した場合の影響度（指標）を計算する（ステップＳ２６）。停止コンテナ判定部１２は、影響度（指標）を、式（１）、式（２）および式（３）に基づいて計算すれば良い。
【００５８】
そして、停止コンテナ判定部１２は、サービス用サーバ３で動作中のコンテナを全て選択したか否かを判定する（ステップＳ２７）。コンテナを全て選択していないと判定した場合には（ステップＳ２７；Ｎｏ）、停止コンテナ判定部１２は、次のコンテナを選択すべく、ステップＳ２２に移行する。
【００５９】
一方、コンテナを全て選択したと判定した場合には（ステップＳ２７；Ｙｅｓ）、停止コンテナ判定部１２は、各影響度（指標）を基に、起動対象のコンテナを起動するために必要なリソースを確保するために、停止すべきコンテナを判定する（ステップＳ２８）。例えば、停止コンテナ判定部１２は、起動対象のコンテナを起動するために必要なリソース確保するために、影響度（指標）が最も小さいコンテナまたはコンテナの集合を判定する。そして、停止コンテナ判定部１２は、コンテナ判定処理を終了する。
【００６０】
［停止コンテナ判定のシーケンス］
図９は、実施例に係る停止コンテナ判定のシーケンスの一例を示す図である。なお、図９の中のＷｅｂサービス３１は、サービス用サーバ３で動作中のコンテナで実行中のＷｅｂサービスであるとする。Ｗｅｂサービス情報３２は、サービス用サーバ３で管理されるＷｅｂサービスの情報であるとする。
【００６１】
ユーザからＷｅｂ  ＡＰＩのリクエストを受け付けたゲートウェイ２は、リクエストされた、ＡＰＩに対するＷｅｂサービスのコンテナが存在するか否かを、Ｗｅｂサービス情報３２に対して問い合わせる（Ｓ２１０）。ゲートウェイ２は、問い合わせた結果、リクエストされた、ＡＰＩに対するＷｅｂサービスのコンテナが存在しない旨を受け付けると（Ｓ２２０）、Ｗｅｂサービスに対応するコンテナの起動をコンテナ管理部１１に依頼する（Ｓ２３０）。
【００６２】
コンテナ管理部１１は、リソース情報２２を参照して、Ｗｅｂサービスに対応するコンテナのリソースが空いているか否かを判定する（Ｓ２４０）。コンテナ管理部１１は、リソースが空いていないと判定した場合には、どのコンテナを停止するべきかを停止コンテナ判定部１２に問い合わせる（Ｓ２５０）。
【００６３】
停止コンテナ判定部１２は、現在動いている各コンテナの消費リソースとコンテナ基盤の空きリソースを、リソース情報２２から取得する（Ｓ２６０）。また、停止コンテナ判定部１２は、各コンテナの起動時間を、コンテナ情報２１から取得する（Ｓ２７０）。また、停止コンテナ判定部１２は、各コンテナで実行する各Ｗｅｂサービスへのリクエスト頻度の情報を、ＡＰＩ利用ログ２３から取得する（Ｓ２８０）。そして、停止コンテナ判定部１２は、取得した情報を元に、停止するコンテナを判定し、停止するコンテナをコンテナ管理部１１に通知する（Ｓ２９０，Ｓ３００）。
【００６４】
そして、コンテナ管理部１１は、通知を受けて、停止すべきコンテナを停止する（Ｓ３１０）。コンテナ管理部１１は、コンテナの停止により解放されたリソースの情報をリソース情報２２に更新する（Ｓ３２０）。
【００６５】
そして、コンテナ管理部１１は、リクエストされた、ＡＰＩに対するＷｅｂサービスのコンテナを起動する（Ｓ３３０）。コンテナ管理部１１は、コンテナが利用しているリソースの情報をリソース情報２２に更新する（Ｓ３４０）。
【００６６】
そして、ゲートウェイ２は、時刻、利用されたＷｅｂサービスの種類を、ＡＰＩ利用ログ２３に記録する（Ｓ３５０）。利用されたＷｅｂサービスの種類には、コンテナイメージ名が含まれる。
【００６７】
そして、ゲートウェイ２は、ルーティングし、該当するコンテナのＷｅｂサービス３１へリクエストを送信する（Ｓ３６０）。Ｗｅｂサービス３１は、リクエストに対する処理を実行する（Ｓ３７０）。そして、Ｗｅｂサービス３１は、処理時間をコンテナ情報２１に記録する（Ｓ３８０）。そして、Ｗｅｂサービス３１は、リクエストに対するレスポンスをゲートウェイ２に返す（Ｓ３９０）。ゲートウェイ２は、リクエストに対するレスポンスをユーザに返す（Ｓ４００）。
【００６８】
［実施例の効果］
実施例によれば、情報処理装置１は、ユーザが所望するサービスを取得する。情報処理装置１は、該取得したサービスのリソースを特定する。情報処理装置１は、該取得したサービスを実行するコンテナが起動されていないときに、停止候補のコンテナについて、起動時間と、実行されるサービスのレスポンス時間と、必要なリソースと、実行されるサービスへのリクエストの頻度とを用いて、停止候補のコンテナが停止した場合のユーザに与える影響度を算出する。情報処理装置１は、該算出した影響度に基づいて、停止候補のコンテナのうち、該特定したリソースを確保するためのコンテナを停止する。そして、情報処理装置１は、該取得したサービスのコンテナを起動する。かかる構成によれば、情報処理装置１は、計算資源が限られている場合に、ユーザが所望するサービスをコンテナに立ち上げる際、指標を用いて停止すべきコンテナを判定することができる。
【００６９】
また、上記実施例によれば、情報処理装置１は、停止候補のコンテナごとに、一定期間内のリクエストの頻度およびレスポンス時間から得られる、停止候補のコンテナを停止しないで動作し続けた場合の第１の総レスポンス時間を算出する。情報処理装置１は、停止候補のコンテナごとに、起動時間と、一定期間内のリクエストの頻度およびレスポンス時間とから得られる、停止候補のコンテナが停止中に起動した場合の第２の総レスポンス時間を算出する。情報処理装置１は、停止候補のコンテナごとに、第２のレスポンス時間を第１の総レスポンス時間と比べた場合の比率を影響度として算出する。かかる構成によれば、情報処理装置１は、ユーザに与える影響度を数値化することで、影響度を用いて停止すべきコンテナを判定することができる。
【００７０】
また、上記実施例によれば、情報処理装置１は、該特定したリソースを確保するために、前記停止候補のコンテナのうち、前記影響度が最小のコンテナまたはコンテナ群を停止する。かかる構成によれば、情報処理装置１は、ユーザに与える影響が最も小さいようなコンテナを停止することができる。
【００７１】
また、上記実施例によれば、情報処理装置１は、停止候補のコンテナの起動時間の間に要求されるリクエストの数を取得する。情報処理装置１は、該取得したリクエストの数分、それぞれのリクエストに対してレスポンスを返すそれぞれのレスポンス時間を取得する。情報処理装置１は、レスポンスを返している間にさらに要求されるリクエストがある場合には、当該リクエストに対してレスポンスを返すレスポンス時間を追加する。情報処理装置１は、レスポンスを返している間にさらに要求されるリクエストがない場合、または該追加したレスポンス時間の間にさらにリクエストが要求されない場合には、コンテナの起動開始から最後のレスポンス時間終了までの時間を、停止候補のコンテナに対する一定時間として算出する。かかる構成によれば、情報処理装置１は、停止候補のコンテナを判定する際に用いられる一定時間を、効率的に算出することができる。
【００７２】
［その他］
なお、上記実施例の情報処理装置１は、既知のパーソナルコンピュータ、ワークステーションなどの情報処理装置に、上記した制御部１０および記憶部２０などの各機能を搭載することによって実現することができる。
【００７３】
また、上記実施例では、図示した装置の各構成要素は、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、装置の分散・統合の具体的態様は図示のものに限られず、その全部または一部を、各種の負荷や使用状況等に応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。例えば、コンテナ管理部１１と停止コンテナ判定部１２とを統合しても良い。また、停止コンテナ判定部１２を、停止コンテナを判定する判定部と、停止コンテナを判定する際に用いられる基準時間を計算する計算部とに分散しても良い。記憶部２０を情報処理装置１の外部装置としてネットワーク経由で接続するようにしても良い。
【００７４】
また、上記実施例で説明した各種の処理は、あらかじめ用意されたプログラムをパーソナルコンピュータやワークステーション等のコンピュータで実行することによって実現することができる。そこで、以下では、図２に示した情報処理装置１と同様の機能を実現するプログラムを実行するコンピュータの一例を説明する。図１０は、停止コンテナ判定プログラムを実行するコンピュータの一例を示す図である。
【００７５】
図１０に示すように、コンピュータ２００は、各種演算処理を実行するＣＰＵ２０３と、ユーザからのデータの入力を受け付ける入力装置２１５と、表示装置２０９を制御する表示制御部２０７とを有する。また、コンピュータ２００は、記憶媒体からプログラム等を読取るドライブ装置２１３と、ネットワークを介して他のコンピュータとの間でデータの授受を行う通信制御部２１７とを有する。また、コンピュータ２００は、各種情報を一時記憶するメモリ２０１と、ＨＤＤ（Hard  Disk  Drive）２０５を有する。そして、メモリ２０１、ＣＰＵ２０３、ＨＤＤ２０５、表示制御部２０７、ドライブ装置２１３、入力装置２１５、通信制御部２１７は、バス２１９で接続されている。
【００７６】
ドライブ装置２１３は、例えばリムーバブルディスク２１１用の装置である。ＨＤＤ２０５は、停止コンテナ判定プログラム２０５ａおよび停止コンテナ判定関連情報２０５ｂを記憶する。
【００７７】
ＣＰＵ２０３は、停止コンテナ判定プログラム２０５ａを読み出して、メモリ２０１に展開し、プロセスとして実行する。かかるプロセスは、情報処理装置１の各機能部に対応する。停止コンテナ判定関連情報２０５ｂは、コンテナ情報２１、リソース情報２２およびＡＰＩ利用ログ２３に対応する。そして、例えばリムーバブルディスク２１１が、停止コンテナ判定プログラム２０５ａ等の各情報を記憶する。
【００７８】
なお、停止コンテナ判定プログラム２０５ａについては、必ずしも最初からＨＤＤ（Hard  Disk  Drive）２０５に記憶させておかなくても良い。例えば、コンピュータ２００に挿入されるフレキシブルディスク（ＦＤ）、ＣＤ−ＲＯＭ（Compact  Disk  Read  Only  Memory）、ＤＶＤ（Digital  Versatile  Disk）、光磁気ディスク、ＩＣ（Integrated  Circuit）カード等の「可搬用の物理媒体」に当該プログラムを記憶させておく。そして、コンピュータ２００がこれらから停止コンテナ判定プログラム２０５ａを読み出して実行するようにしても良い。
【符号の説明】
【００７９】
１  情報処理装置
１０  制御部
１１  コンテナ管理部
１２  停止コンテナ判定部
２０  記憶部
２１  コンテナ情報
２２  リソース情報
２３  ＡＰＩ利用ログ
【図１】
2020144540.tif 000003
【図２】
2020144540.tif 000004
【図３】
2020144540.tif 000005
【図４】
2020144540.tif 000006
【図５】
2020144540.tif 000007
【図６】
2020144540.tif 000008
【図７】
2020144540.tif 000009
【図８】
2020144540.tif 000010
【図９】
2020144540.tif 000011
【図１０】
2020144540.tif 000012