以下、本発明の実施例を、図面を用いて説明する。ただし、本発明は以下に示す実施例の記載内容に限定して解釈されるものではない。本発明の思想ないし趣旨から逸脱しない範囲で、その具体的構成を変更し得ることは当業者であれば容易に理解される。
図1は、実施例1のシステムの構成の一例を示す図である。図2は、実施例1の計算機の構成の一例を示す図である。
実施例1のシステムは、デプロイ計画生成システム100、クライアントPC101、アプリケーションカタログ管理システム102、デプロイ制御システム103、及び複数の基盤システム(クラウドシステム)104から構成される。デプロイ計画生成システム100、クライアントPC101、アプリケーションカタログ管理システム102、デプロイ制御システム103、及び複数の基盤システム104は、LAN(Local Area Network)及びWAN(Wide Area Network)等のネットワークを介して互いに接続される。ネットワークの接続方式は有線及び無線のいずれでもよい。
クライアントPC101は、所定のサービスを実現するアプリケーションを利用するユーザが操作する端末である。
基盤システム104は、所定のサービスを実現するアプリケーションを構成するインスタンスを実行する環境を提供する計算機システムである。
アプリケーションカタログ管理システム102は、アプリケーションに関する情報であるアプリケーションカタログを管理する。
デプロイ計画生成システム100は、アプリケーションを構成するインスタンスをデプロイするためのデプロイ計画を生成する。インスタンスは、例えば、関数、コンテナ、及び仮想計算機等である。
デプロイ制御システム103は、デプロイ計画生成システム100によって立案され、かつ、ユーザによって選択されたデプロイ計画に基づいて、環境にインスタンスをデプロイする。
デプロイ計画生成システム100、アプリケーションカタログ管理システム102、デプロイ制御システム103、及び基盤システム104の各々は、例えば、図2に示すような計算機200から構成される。
計算機200は、CPU201、主記憶装置202、副記憶装置203、及びネットワークインタフェース204を有する。各ハードウェア要素はバスを介して互いに接続される。なお、計算機200は、キーボード、マウス、及びタッチパネル等の入力装置を有してもよいし、また、ディスプレイ等の出力装置を有してもよい。
CPU201は、主記憶装置202に格納されるプログラムを実行する。CPU201は、プログラムにしたがって処理を実行することによって機能部(モジュール)として機能する。以下の説明では、機能部を主語に処理を説明する場合、CPU201が機能部を実現するプログラムを実行していることを示す。
主記憶装置202は、メモリ等であり、CPU201が実行するプログラム及びプログラムが使用する情報を格納する。また、主記憶装置202は、プログラムが一時的に使用するワークエリアを含む。
副記憶装置203は、HDD(Hard Disk Drive)及びSSD(Solid State Drive)等であり、永続的に大量のデータを格納する。主記憶装置202に格納されるプログラム及び情報は、副記憶装置203に格納されてもよい。この場合、CPU201が副記憶装置203からプログラム及び情報を読み出し、主記憶装置202にロードする。
ネットワークインタフェース204は、ネットワークを介して外部の装置と通信する。
デプロイ計画生成システム100は、環境候補検索部110、情報収集部111、及び予測部112を有する。また、デプロイ計画生成システム100は、基盤システム稼働管理情報120、インスタンス稼働管理情報121、起動時間管理情報122、リソース量予測モデル情報123、起動時間予測モデル情報124、及びデプロイ計画DB125を保持する。
基盤システム稼働管理情報120は、基盤システム104の稼働状態を管理するための情報である。インスタンス稼働管理情報121は、インスタンスの稼働状態を管理するための情報である。起動時間管理情報122は、インスタンスの起動時間を管理するための情報である。リソース量予測モデル情報123は、インスタンスのデプロイに必要なリソース量を予測するためのモデルを管理するための情報である。起動時間予測モデル情報124は、インスタンスの起動時間を予測するためのモデルを管理するための情報である。デプロイ計画DB125は、インスタンスをデプロイする環境の組み合わせ等を含むデプロイ計画に関する情報を格納するデータベースである。
情報収集部111は、各種情報を収集する。予測部112は、リソース量予測モデル情報123を用いて、インスタンスのデプロイに必要なリソース量を予測し、また、起動時間予測モデル情報124を用いて、インスタンスの起動時間を予測する。環境候補検索部110は、インスタンスをデプロイする環境の組み合わせを検索し、デプロイ計画を生成する。
なお、デプロイ計画生成システム100が有する各機能部については、複数の機能部を一つの機能部にまとめてもよいし、一つの機能部を機能毎に複数の機能部に分けてもよい。例えば、予測部112を、リソース量を予測する機能部と、起動時間を予測する機能部とに分けてもよい。
図3は、実施例1の基盤システム稼働管理情報120の一例を説明する図である。
基盤システム稼働管理情報120は、基盤システムID301、クラスタID302、CPU情報303、メモリ情報304、及びタイムスタンプ305を含むエントリを格納する。一つの環境に対して一つのエントリが存在する。なお、エントリに含まれるフィールドは前述したものに限定されない。前述したフィールドのいずれかを含まなくてもよいし、また、他のフィールドを含んでもよい。
基盤システムID301は、基盤システム104のIDを格納するフィールドである。クラスタID302は、環境を構成するクラスタのIDを格納するフィールドである。基盤システム104には一つ以上のクラスタが構成され、一つのクラスタを用いて一つの環境が実現されるものとする。
CPU情報303は、クラスタが有するCPUに関する情報を格納するフィールド群である。CPU情報303には、諸元、総数量、及び未割当量等のフィールドが含まれる。メモリ情報304は、クラスタが有するメモリに関する情報を格納するフィールド群である。メモリ情報304には、諸元、総量、及び未割当量等のフィールドが含まれる。なお、エントリは、ネットワーク帯域等に関するフィールドを含んでもよい。
タイムスタンプ305は、エントリに対応する情報を取得した日時を格納するフィールドである。
図4は、実施例1のインスタンス稼働管理情報121の一例を説明する図である。
インスタンス稼働管理情報121は、アプリケーションID401、インスタンスID402、インスタンス種別403、CPU情報404、メモリ情報405、及びタイムスタンプ406を含むエントリを格納する。一つのインスタンスに対して一つのエントリが存在する。なお、エントリに含まれるフィールドは前述したものに限定されない。前述したフィールドのいずれかを含まなくてもよいし、また、他のフィールドを含んでもよい。
アプリケーションID401は、アプリケーションのIDを格納するフィールドである。インスタンスID402は、アプリケーションを構成するインスタンスのIDを格納するフィールドである。インスタンス種別403は、インスタンスの種別を格納するフィールドである。例えば、関数、コンテナ、及び仮想計算機等が格納される。
本実施例では、インスタンスの種別に応じて起動方法が判別される。関数等、サーバレスインスタンスの場合、コールドスタート及びウォームスタートのいずれかを選択できる。ウォームスタートは、デプロイ時にリソースを割当て、起動させることを示す。コールドスタートは、デプロイ時には起動させず、リクエスト受信時にインスタンスにリソースを割当て、起動させることを示す。
CPU情報404は、インスタンスのCPUの使用量に関する情報を格納するフィールド群である。CPU情報404には、割当値、最小使用率、最大使用率、及び平均使用率等のフィールドが含まれる。メモリ情報405は、インスタンスのメモリの使用量に関する情報を格納するフィールド群である。メモリ情報405には、割当量、最小使用量、最大使用量、及び平均使用量等のフィールドが含まれる。なお、エントリは、ネットワーク帯域等に関するフィールドを含んでもよい。
タイムスタンプ406は、エントリに対応する情報を取得した日時を格納するフィールドである。
図5は、実施例1の起動時間管理情報122の一例を説明する図である。
起動時間管理情報122は、アプリケーションID501、インスタンスID502、インスタンス種別503、環境504、リソース505、起動種別506、起動時間507、及びタイムスタンプ508を含むエントリを格納する。一つのインスタンスに対して一つのエントリが存在する。なお、エントリに含まれるフィールドは前述したものに限定されない。前述したフィールドのいずれかを含まなくてもよいし、また、他のフィールドを含んでもよい。
アプリケーションID501、インスタンスID502、及びインスタンス種別503は、アプリケーションID401、インスタンスID402、及びインスタンス種別403と同一のフィールドである。
環境504は、インスタンスがデプロイされた基盤システム104及びクラスタのIDを格納するフィールドである。リソース505は、インスタンスに対して割り当てられたリソースに関する情報を格納するフィールド群である。リソース505には、CPU及びメモリ等のフィールドが含まれる。
起動種別506は、インスタンスの起動種別を格納するフィールドである。起動種別506には、ウォームスタート及びコールドスタートのいずれかが格納される。起動時間507は、リクエストを受信してからインスタンスが処理を実行可能な状態になるまでの時間(起動時間)を格納するフィールドである。
タイムスタンプ508は、起動時間が計測された日時を格納するフィールドである。
図6は、実施例1のリソース量予測モデル情報123の一例を説明する図である。
リソース量予測モデル情報123は、アプリケーションID601、インスタンスID602、インスタンス種別603、モデル604、及びタイムスタンプ605を含むエントリを格納する。一つのインスタンスに対して一つのエントリが存在する。なお、エントリに含まれるフィールドは前述したものに限定されない。前述したフィールドのいずれかを含まなくてもよいし、また、他のフィールドを含んでもよい。
アプリケーションID601、インスタンスID602、及びインスタンス種別603は、アプリケーションID401、インスタンスID402、及びインスタンス種別403と同一のフィールドである。
モデル604は、各リソースのリソース量を予測するためのモデルを格納するフィールド群である。モデル604には、CPU及びメモリ等のリソース量を予測するためのモデルを格納するフィールドが含まれる。
タイムスタンプ605は、モデルが登録された日時を格納するフィールドである。
図7は、実施例1の起動時間予測モデル情報124の一例を説明する図である。
起動時間予測モデル情報124は、アプリケーションID701、インスタンスID702、インスタンス種別703、モデル704、及びタイムスタンプ705を含むエントリを格納する。一つのインスタンスに対して一つのエントリが存在する。なお、エントリに含まれるフィールドは前述したものに限定されない。前述したフィールドのいずれかを含まなくてもよいし、また、他のフィールドを含んでもよい。
アプリケーションID701、インスタンスID702、及びインスタンス種別703は、アプリケーションID401、インスタンスID402、及びインスタンス種別403と同一のフィールドである。
モデル704は、インスタンスの起動種別ごとの起動時間を予測するためのモデルを格納するフィールド群である。モデル704には、コールドスタートの起動時間を予測するためのモデルと、ウォームスタートの起動時間を予測するためのモデルとが格納される。
タイムスタンプ705は、モデルが登録された日時を格納するフィールドである。
図8A、図8B、図8C、図8D、及び図8Eは、実施例1のデプロイ計画DB125の一例を説明する図である。
デプロイ計画DB125は、予測リソース量情報800、配置パターン情報810、起動パターン情報820、起動タイミング情報830、及びデプロイ計画管理情報840を含む。
図8Aに示す予測リソース量情報800は、インスタンスに必要なリソース量の予測値を管理するための情報である。予測リソース量情報800は、インスタンスID801、インスタンス種別802、及びリソース量803を含むエントリを格納する。一つのインスタンスに対して一つのエントリが存在する。なお、エントリに含まれるフィールドは前述したものに限定されない。前述したフィールドのいずれかを含まなくてもよいし、また、他のフィールドを含んでもよい。
インスタンスID801及びインスタンス種別802は、インスタンスID402及びインスタンス種別403と同一のフィールドである。
リソース量803は、インスタンスに必要なリソース量の予測値を格納するフィールドである。リソース量803には、CPU及びメモリ等のリソース量の予測値が格納される。
図8Bに示す配置パターン情報810は、アプリケーションを構成するインスタンスの各々のデプロイ先の環境の組み合わせを示す配置パターンを管理するための情報である。配置パターン情報810は、配置パターンID811及びインスタンス812を含むエントリを格納する。一つの配置パターンに対して一つのエントリが存在する。なお、エントリに含まれるフィールドは前述したものに限定されない。前述したフィールドのいずれかを含まなくてもよいし、また、他のフィールドを含んでもよい。
配置パターンID811は、配置パターンのIDを格納するフィールドである。インスタンス812は、アプリケーションを構成する各インスタンスのデプロイ先の環境の情報を格納するフィールド群である。インスタンス812には、アプリケーションを構成するインスタンスの数だけフィールドが存在する。フィールドには、基盤システム104のID及びクラスタのIDの組み合わせが格納される。
図8Cに示す起動パターン情報820は、アプリケーションを構成するインスタンスの各々の起動種別の組み合わせを示す起動パターンを管理するための情報である。起動パターン情報820は、起動パターンID821及びインスタンス822を含むエントリを格納する。一つの起動パターンに対して一つのエントリが存在する。なお、エントリに含まれるフィールドは前述したものに限定されない。前述したフィールドのいずれかを含まなくてもよいし、また、他のフィールドを含んでもよい。
起動パターンID821は、起動パターンのIDを格納するフィールドである。インスタンス822は、アプリケーションを構成する各インスタンスの起動種別を格納するフィールド群である。インスタンス822には、アプリケーションを構成するインスタンスの数だけフィールドが存在する。フィールドには、ウォームスタート及びコールドスタートのいずれかが格納される。
図8Dに示す起動タイミング情報830は、起動パターンに対するインスタンスの起動タイミングを管理するための情報である。起動タイミング情報830は、起動タイミングID831、起動パターンID832、及び起動タイミング833を含むエントリを格納する。一つの起動タイミングに対して一つのエントリが存在する。なお、エントリに含まれるフィールドは前述したものに限定されない。前述したフィールドのいずれかを含まなくてもよいし、また、他のフィールドを含んでもよい。
起動タイミングID831は、起動タイミングのIDを格納するフィールドである。起動パターンID832は、起動タイミングの設定対象である起動パターンのIDを格納するフィールドである。起動タイミング833は、起動パターンに対するインスタンスの起動タイミングを格納するフィールドである。
図8Eに示すデプロイ計画管理情報840は、アプリケーションを構成するインスタンスをデプロイするためのデプロイ計画を管理するための情報である。デプロイ計画管理情報840は、配置パターンID841、起動パターンID842、起動タイミング843、予測処理時間844、予測起動時間845、予測コスト846、及び予測消費電力847を含むエントリを格納する。一つのデプロイ計画に対して一つのエントリが存在する。なお、エントリに含まれるフィールドは前述したものに限定されない。前述したフィールドのいずれかを含まなくてもよいし、また、他のフィールドを含んでもよい。
実施例1では、デプロイ計画は、配置パターン、起動パターン、及び起動タイミングの組み合わせによって定義される。
配置パターンID841、起動パターンID842、及び起動タイミング843は、配置パターンID811、起動パターンID821、及び起動タイミングID831と同一のフィールドである。
予測処理時間844は、デプロイ計画に基づいてインスタンスをデプロイした場合のアプリケーションの処理時間の予測値を格納するフィールドである。予測起動時間845は、デプロイ計画に基づいてインスタンスをデプロイした場合において、コールドスタートのインスタンスの起動時間の予測値を格納するフィールドである。予測コスト846は、デプロイ計画に基づいてインスタンスをデプロイした場合のアプリケーションの運用に要するコストの予測値を格納するフィールドである。予測消費電力847は、デプロイ計画に基づいてインスタンスをデプロイした場合のアプリケーションの運用による消費電力の予測値を格納するフィールドである。
予測処理時間844、予測起動時間845、予測コスト846、及び予測消費電力847は、デプロイ計画の性能指標である。
図9は、実施例1のデプロイ計画生成システム100が実行する基盤システム稼働管理情報120の更新処理の一例を説明するフローチャートである。
情報収集部111は、基盤システム104から基盤システム104の稼働情報を取得する(ステップS101)。例えば、情報収集部111は、取得要求を送信することによって基盤システム104から基盤システム104の稼働情報を取得する。また、基盤システム104が周期的に基盤システム104の稼働情報を送信するようにしてもよい。
基盤システム104の稼働情報には、基盤システム104のID、クラスタのID、及びリソースの情報等が含まれる。
情報収集部111は、取得した基盤システム104の稼働情報に基づいて基盤システム稼働管理情報120を更新する(ステップS102)。基盤システム稼働管理情報120に稼働情報を取得した基盤システム104のエントリが存在しない場合、情報収集部111は、基盤システム稼働管理情報120にエントリを追加し、追加されたエントリに稼働情報に含まれる値を設定する。基盤システム稼働管理情報120に稼働情報を取得した基盤システム104のエントリが存在する場合、情報収集部111は、当該エントリに稼働情報に含まれる値を上書きする。
図10は、実施例1のデプロイ計画生成システム100が実行するインスタンス稼働管理情報121の更新処理の一例を説明するフローチャートである。
情報収集部111は、基盤システム104からインスタンスの稼働情報を取得する(ステップS201)。例えば、情報収集部111は、取得要求を送信することによって基盤システム104から、当該基盤システム104が提供する環境にデプロイされているインスタンスの稼働情報を取得する。基盤システム104が周期的にインスタンスの稼働情報を送信するようにしてもよい。また、基盤システム104は、インスタンスによる処理が実行された場合、稼働情報を送信するようにしてもよい。
インスタンスの稼働情報には、基盤システム104のID、クラスタのID、アプリケーションのID、インスタンスのID及び種別、並びに、リソースの使用量に関する情報等が含まれる。
情報収集部111は、取得したインスタンスの稼働情報に基づいてインスタンス稼働管理情報121を更新する(ステップS202)。インスタンス稼働管理情報121に稼働情報を取得したインスタンスのエントリが存在しない場合、情報収集部111は、インスタンス稼働管理情報121にエントリを追加し、追加されたエントリに稼働情報に含まれる値を設定する。インスタンス稼働管理情報121に稼働情報を取得したインスタンスのエントリが存在する場合、情報収集部111は、当該エントリに稼働情報に含まれる値を上書きする。
図11は、実施例1のデプロイ計画生成システム100が実行する起動時間管理情報122の更新処理の一例を説明するフローチャートである。
情報収集部111は、基盤システム104からインスタンスの起動処理情報を取得する(ステップS301)。例えば、基盤システム104は、インスタンスの起動処理を実行した場合、インスタンスの起動処理情報を送信する。
起動処理情報には、アプリケーションのID、インスタンスのID及び種別、基盤システム104のID、環境のID、インスタンスに割り当てられたリソース量、起動種別、及び起動時間等が含まれる。
情報収集部111は、取得したインスタンスの起動処理情報に基づいて起動時間管理情報122を更新する(ステップS302)。起動時間管理情報122に起動処理情報を取得したインスタンスのエントリが存在しない場合、情報収集部111は、起動時間管理情報122にエントリを追加し、追加されたエントリに起動処理情報に含まれる値を設定する。起動時間管理情報122に起動処理情報を取得したインスタンスのエントリが存在する場合、情報収集部111は、当該エントリに起動処理情報に含まれる値を上書きする。
図12は、実施例1のデプロイ計画生成システム100が実行するリソース量予測モデル情報123の更新処理の一例を説明するフローチャートである。
予測部112は、インスタンス稼働管理情報121を参照し(ステップS401)、インスタンスのリソースの割当量に関する情報を用いて、各リソースのリソース量予測モデルを生成する(ステップS402)。例えば、多変量解析、機械学習等を用いて、モデルが生成される。本発明は、モデルの生成手法に限定されない。
予測部112は、リソース量予測モデルの生成結果に基づいて、リソース量予測モデル情報123を更新する(ステップS403)。リソース量予測モデル情報123にインスタンスのエントリが存在しない場合、予測部112は、リソース量予測モデル情報123にエントリを追加し、当該エントリにID及びリソース量予測モデル等を設定する。リソース量予測モデル情報123にインスタンスのエントリが存在する場合、予測部112は、当該エントリのモデル604に、生成されたリソース量予測モデルを上書きする。
図13は、実施例1のデプロイ計画生成システム100が実行する起動時間予測モデル情報124の更新処理の一例を説明するフローチャートである。
予測部112は、起動時間管理情報122を参照し(ステップS501)、インスタンスの起動時間に関する情報を用いて、インスタンスの起動時間予測モデルを生成する(ステップS502)。例えば、多変量解析、機械学習等を用いて、モデルが生成される。本発明は、モデルの生成手法に限定されない。
予測部112は、起動時間予測モデルの生成結果に基づいて、起動時間予測モデル情報124を更新する(ステップS503)。起動時間予測モデル情報124にインスタンスのエントリが存在しない場合、予測部112は、起動時間予測モデル情報124にエントリを追加し、当該エントリにID及び起動時間予測モデル等を設定する。起動時間予測モデル情報124にインスタンスのエントリが存在する場合、予測部112は、当該エントリのモデル704に、生成された起動時間予測モデルを上書きする。
図14A及び図14Bは、実施例1のシステムにおけるアプリケーションのデプロイ処理の流れを説明するシーケンス図である。図15、図16、及び図17は、実施例1のクライアントPC101に表示される画面の一例を示す図である。
ユーザが操作するクライアントPC101は、アプリケーションカタログ管理システム102にアプリケーション一覧取得要求を送信する(ステップS601)。
アプリケーションカタログ管理システム102は、アプリケーション一覧取得要求を受信した場合、クライアントPC101にアプリケーション一覧を送信する(ステップS602)。アプリケーション一覧には、アプリケーションカタログ管理システム102が管理するアプリケーションに関する情報が含まれる。
クライアントPC101を操作するユーザは、アプリケーション一覧を参照して、使用するアプリケーションを選択する。ユーザが操作するクライアントPC101は、ユーザによって選択されたアプリケーションを取得するために、アプリケーションカタログ管理システム102にアプリケーション取得要求を送信する(ステップS603)。
アプリケーションカタログ管理システム102は、アプリケーション取得要求を受信した場合、クライアントPC101にアプリケーションを送信する(ステップS604)。
ユーザが操作するクライアントPC101は、デプロイ計画生成システム100にデプロイ計画生成要求を送信する(ステップS605)。デプロイ計画生成要求にはアプリケーションに関する情報が含まれる。なお、KPI等、デプロイ計画の絞り込みに使用する情報が含まれてもよい。
クライアントPC101は、例えば、図15に示すような画面1500を介してデプロイ計画生成要求を送信する。画面1500は、入力ボックス1501、設定欄1502、設定欄1503、設定欄1504、実行ボタン1505、及びキャンセルボタン1506を含む。
入力ボックス1501は、アプリケーションの実体であるファイル等を入力するためのボックスである。
設定欄1502及び設定欄1503は、デプロイ計画の評価指標であるKPIを設定するための欄である。本実施例では、少なくとも一つの性能指標がKPIとして選択される。ユーザは、ラジオボタンを操作することによって、設定欄1502及び設定欄1503のいずれかに入力を行う。
設定欄1502には、入力ボックス1511、1512及び追加ボタン1513が含まれる。入力ボックス1511は、KPIの種別を入力するためのボックスである。入力ボックス1512は、KPIの目標値を入力するためのボックスである。追加ボタン1513は、入力ボックス1511、1512を追加するためのボタンである。
設定欄1503には入力ボックス1514が含まれる。入力ボックス1514は、フェーズを入力するためのボックスである。フェーズは、アプリケーションのデプロイを行うフェーズを表し、テストフェーズ及び本番フェーズ等が考えられる。例えば、ユーザは、図16に示すような画面1600を用いて、フェーズに対して予めKPIが設定する。
画面1600は、入力ボックス1601、1602、1603、追加ボタン1604、登録ボタン1605、及びキャンセルボタン1606を含む。
入力ボックス1601は、フェーズの名称を入力するためのボックスである。入力ボックス1602、1603は、入力ボックス1511、1512と同一のボックスである。追加ボタン1604は追加ボタン1513と同一のボタンである。
登録ボタン1605は、フェーズに対するKPIの設定を登録するためのボタンである。キャンセルボタン1606は、操作を取り消すためのボタンである。
図15の説明に戻る。設定欄1504は、起動パターンの制約を設定するための欄である。ユーザは、ウォームスタートのみの起動パターン、コールドスタートのみの起動パターン、並びに、ウォームスタート及びコールドスタートが混在した起動パターンのいずれかを指定できる。なお、設定欄1504には、並列して起動させるインスタンスの数(閾値)を設定するためのボックスが含まれてもよい。
実行ボタン1505は、デプロイ計画生成要求を送信するための操作ボタンである。キャンセルボタン1506は、操作を取り消すためのボタンである。
デプロイ計画生成システム100は、デプロイ計画生成要求を受信した場合、デプロイ計画生成処理を実行する(ステップS606)。デプロイ計画生成処理の詳細は後述する。
デプロイ計画生成システム100は、デプロイ計画生成処理の結果として、クライアントPC101にデプロイ計画表示情報を送信する(ステップS607)。
クライアントPC101は、デプロイ計画表示情報を受信した場合、図17に示すような画面1700を表示する。画面1700は、テーブル1701、デプロイボタン1702、及びキャンセルボタン1703を含む。
テーブル1701は、デプロイ計画を表示するテーブルである。テーブル1701は、選択1711、配置パターン1712、起動パターン1713、起動タイミング1714、予測処理時間1715、予測起動時間1716、予測コスト1717、及び予測消費電力1718を含むエントリを格納する。一つのデプロイ計画に対して一つのエントリが存在する。なお、エントリに含まれるフィールドは前述したものに限定されない。前述したフィールドのいずれかを含まなくてもよいし、また、他のフィールドを含んでもよい。
選択1711は、採用するデプロイ計画を選択するためのボックスを格納するフィールドである。配置パターン1712は、インスタンスのデプロイ先の環境の組み合わせを格納するフィールドである。起動パターン1713は、インスタンスの起動種別の組み合わせを格納するフィールドである。起動タイミング1714は、インスタンスの起動タイミングに関する情報を格納するフィールドである。
予測処理時間1715、予測起動時間1716、予測コスト1717、及び予測消費電力1718は、予測処理時間844、予測起動時間845、予測コスト846、及び予測消費電力847と同一のフィールドである。
デプロイボタン1702は、アプリケーションのデプロイ要求を送信するためのボタンである。キャンセルボタン1703は、操作を取り消すためのボタンである。
ユーザは、テーブル1701を参照して、採用するデプロイ計画を選択し、デプロイボタン1702を操作する。クライアントPC101は、デプロイ計画生成システム100に、選択されたデプロイ計画の識別情報及びアプリケーションを含むデプロイ要求を送信する(ステップS610)。
デプロイ計画生成システム100は、デプロイ要求を受信した場合、デプロイ制御システム103に、選択されたデプロイ計画に関する情報及びアプリケーションを含むデプロイ要求を送信する(ステップS611)。なお、デプロイ計画生成システム100は、デプロイ計画DB125から、選択されなかったデプロイ計画に関する情報を削除する。
デプロイ制御システム103は、デプロイ要求を受信した場合、基盤システム104の環境にインスタンスをデプロイする(ステップS612)。
デプロイ制御システム103は、基盤システム104へのインスタンスのデプロイが完了した場合、クライアントPC101にデプロイ完了通知を送信する(ステップS613)。
クライアントPC101は、デプロイ完了通知を受信した後、所定のタイミングでアプリケーションを利用する(ステップS614)。
図18は、実施例1のデプロイ計画生成システム100が実行するデプロイ計画生成処理の一例を説明するフローチャートである。
まず、予測部112は、アプリケーションに関する情報及びリソース量予測モデル情報123を用いて、インスタンスの予測リソース量を算出する(ステップS701)。予測部112は算出結果に基づいて予測リソース量情報800を生成する。
次に、環境候補検索部110は、インスタンスの予測リソース量及び基盤システム稼働管理情報120に基づいて、インスタンスの配置パターンを生成する(ステップS702)。具体的には、以下のような処理が実行される。
(S702-1)環境候補検索部110は、インスタンスを一つ選択する。
(S702-2)環境候補検索部110は、基盤システム稼働管理情報120を参照して、選択したインスタンスの予測リソース量を割り当てることができる環境(基盤システム104及びクラスタ)を特定する。環境候補検索部110は、インスタンスと特定された環境とを対応づけたデータをワークエリアに保存する。
(S702-3)環境候補検索部110は、全てのインスタンスについて処理が完了したか否かを判定する。全てのインスタンスについて処理が完了していない場合、環境候補検索部110は、S702-1に戻る。
(S702-4)全てのインスタンスについて処理が完了した場合、環境候補検索部110は、各インスタンスの環境を組み合わせることによって配置パターンを生成する。環境候補検索部110は生成結果に基づいて配置パターン情報810を生成する。
以上がステップS702の処理の説明である。
次に、環境候補検索部110は、インスタンスの起動パターンを生成する(ステップS703)。具体的には、以下のような処理が実行される。
(S703-1)環境候補検索部110は、インスタンスを一つ選択する。
(S703-2)環境候補検索部110は、選択したインスタンスの種別に基づいて、起動種別を特定する。例えば、インスタンスが関数である場合、ウォームスタート及びコールドスタートが特定される。環境候補検索部110は、インスタンスと特定された起動種別とを対応づけたデータをワークエリアに保存する。
(S703-3)環境候補検索部110は、全てのインスタンスについて処理が完了したか否かを判定する。全てのインスタンスについて処理が完了していない場合、環境候補検索部110は、S703-1に戻る。
(S703-4)全てのインスタンスについて処理が完了した場合、環境候補検索部110は、各インスタンスの起動種別を組み合わせることによって起動パターンを生成する。環境候補検索部110は生成結果に基づいて起動パターン情報820を生成する。このとき、環境候補検索部110は、設定欄1504の情報に基づいて、生成する起動パターンを制御する。
以上がステップS703の処理の説明である。
次に、環境候補検索部110は、起動パターンのループ処理を開始する(ステップS704)。具体的には、環境候補検索部110は、起動パターン情報820からエントリを一つ選択する。
次に、環境候補検索部110は、起動パターンに対する起動タイミングを立案する(ステップS705)。
例えば、環境候補検索部110は、並列で起動させるインスタンスの数が最大となるように起動タイミングを立案する。また、並列で起動させるインスタンスの数(閾値)が指定されている場合、環境候補検索部110は、並設で起動させるインスタンスの数が閾値より大きくなるように起動タイミングを立案する。例えば、コールドスタートのインスタンスを三つ含む起動パターンであり、かつ、閾値が「1」である場合、三つ又は二つのインスタンスを並列で起動させる起動タイミングが立案される。これによって、立案される起動タイミングの数を抑制できる。したがって、処理負荷を低減できる。
環境候補検索部110は、起動パターンと、一つの起動タイミングとの組み合わせを起動タイミング情報830に登録する。
次に、環境候補検索部110は、配置パターン、起動パターン、及び起動タイミングを組み合わせることによってデプロイ計画を生成する(ステップS706)。環境候補検索部110は、デプロイ計画管理情報840にデプロイ計画を登録する。なお、この時点では、予測処理時間844、予測起動時間845、予測コスト846、及び予測消費電力847は空欄である。
環境候補検索部110は、全ての起動パターンについて処理が完了したか否かを判定する(ステップS707)。
全ての起動パターンについて処理が完了していない場合、環境候補検索部110はステップS704に戻る。
全ての起動パターンについて処理が完了した場合、環境候補検索部110は、デプロイ計画を絞り込む(ステップS708)。具体的には、以下のような処理が実行される。
(S708-1)環境候補検索部110は、予測部112に、デプロイ計画の各々について性能指標の予測値の算出を指示する。
(S708-2)予測部112はデプロイ計画を選択する。
(S708-3)予測部112は、インスタンスの情報及び起動時間予測モデル情報124を用いて、デプロイ計画に含まれる各インスタンスの予測起動時間を算出する。また、予測部112は、デプロイ計画に基づいて、予測処理時間、予測コスト、及び予測消費電力を算出する。予測処理時間は、例えば、アプリケーションの実行履歴に基づいて算出できる。予測コスト及び予測消費電力は、デプロイ先の環境及びリソース量に基づいて算出できる。予測部112は、デプロイ計画に対応するエントリの予測処理時間844、予測起動時間845、予測コスト846、及び予測消費電力847に算出結果を設定し、処理の終了を環境候補検索部110に通知する。
(S708-4)環境候補検索部110は、デプロイ計画管理情報840から、KPIを満たさないデプロイ計画を削除する。例えば、処理時間がKPIとして指定されている場合、環境候補検索部110は、予測処理時間及び予測起動時間の合計値とKPIの目標値との比較結果に基づいて、KPIを満たすか否かを判定する。
以上がステップS708の処理の説明である。
次に、環境候補検索部110は、デプロイ計画管理情報840に基づいてデプロイ計画表示情報を生成する(ステップS709)。
なお、アプリケーションがサーバレスインスタンスを含まない場合、ステップS703からステップS707は実行されない。この場合、配置パターンがデプロイ計画として出力される。
なお、環境候補検索部110は、KPIの値に基づいて、デプロイ計画をソートしてもよい。このとき、配置パターン及び起動パターンが同一であって、起動タイミング(並列数)が異なるデプロイ計画について、KPIの違いに差がない場合、環境候補検索部110は、並列数が小さいデプロイ計画を優先的に表示するようにしてもよい。
実施例1の環境候補検索部110は、インスタンスのデプロイ先の環境の組み合わせを立案するだけではなく、環境におけるインスタンスの起動パターン及び起動タイミングも同時に立案できる。これによって、サーバレスインスタンスの起動方法が考慮されたデプロイ計画を提示することができる。
図19は、実施例1のデプロイ制御システム103が実行するデプロイ処理の一例を説明するフローチャートである。図20は、実施例1のデプロイ制御システム103が送信する起動管理情報2000の一例を示す図である。
デプロイ制御システム103は、デプロイ計画に基づいて、デプロイするインスタンスを一つ選択する(ステップS801)。
デプロイ制御システム103は、デプロイ計画に基づいて、インスタンスを所定の基盤システム104の環境にデプロイする(ステップS802)。
デプロイ制御システム103は、インスタンスがデプロイされた基盤システム104に起動管理情報2000を登録する(ステップS803)。
起動管理情報2000は、デプロイ計画に含まれる起動パターン及び起動タイミングに基づいて生成される。起動管理情報2000は、アプリケーションID2001、インスタンスID2002、及び起動タイミング2003を含むエントリを格納する。一つのエントリは一つのインスタンスに対応する。
アプリケーションID2001及びインスタンスID2002は、アプリケーションID401及びインスタンスID402と同一のフィールドである。起動タイミング2003は、インスタンスの起動タイミングに関する情報を格納するフィールドである。なお、ウォームスタートのインスタンスの起動タイミング2003は空欄である。
なお、デプロイ制御システム103は、起動管理情報2000とともに、インスタンスの実行フローを定義した情報を登録してもよい。
デプロイ制御システム103は、全てのインスタンスのデプロイが完了したか否かを判定する(ステップS804)。全てのインスタンスのデプロイが完了していない場合、デプロイ制御システム103はステップS801に戻る。
全てのインスタンスのデプロイが完了した場合、デプロイ制御システム103はデプロイ処理を終了する。
なお、起動管理情報2000は、起動タイミングに関連するインスタンスがデプロイされた基盤システム104のみに登録されてもよい。
図21は、実施例1の基盤システム104によるアプリケーション呼出処理の一例を説明するフローチャートである。
基盤システム104は、インスタンスに対するリクエストを受信した場合(ステップS901)、起動管理情報2000を参照して、他のインスタンスを起動させる必要があるか否かを判定する(ステップS902)。すなわち、インスタンスに対するリクエストの受信を契機に起動させるインスタンスが存在するか否かが判定される。
他のインスタンスを起動させる必要がない場合、基盤システム104はステップS904に進む。
他のインスタンスを起動させる必要がある場合、基盤システム104は、起動管理情報2000に基づいて、他のインスタンスを起動させる(ステップS903)。その後、基盤システム104はステップS904に進む。例えば、他のインスタンスが自基盤システム104の環境にデプロイされている場合、基盤システム104は、他のインスタンスにリソースを割り当てて起動させる。他のインスタンスが他の基盤システム104の環境にデプロイされている場合、基盤システム104は、他の基盤システム104にインスタンスの起動を指示する。
ステップS904では、基盤システム104は、受信したリクエストに対する処理をインスタンスに実行させる(ステップS904)。
インスタンスのデプロイ時に基盤システム104に起動管理情報2000を登録することによって、インスタンスの起動を自動化することができる。
以上で説明したように、実施例1のデプロイ計画生成システム100は、サーバレスインスタンスの起動方法が考慮されたデプロイ計画を立案し、提示することができる。