(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023146844
(43)【公開日】2023-10-12
(54)【発明の名称】生成プログラム、生成方法および情報処理装置
(51)【国際特許分類】
G06F 8/60 20180101AFI20231004BHJP
【FI】
G06F8/60
【審査請求】未請求
【請求項の数】9
【出願形態】OL
(21)【出願番号】P 2022054253
(22)【出願日】2022-03-29
(71)【出願人】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】110002918
【氏名又は名称】弁理士法人扶桑国際特許事務所
(72)【発明者】
【氏名】石田 健悟
(72)【発明者】
【氏名】大三島 仙知
【テーマコード(参考)】
5B376
【Fターム(参考)】
5B376AA07
5B376AA09
5B376AA21
5B376AA38
(57)【要約】
【課題】アプリケーションの開発の効率を向上させる。
【解決手段】処理部は、システムへの配備対象である第1アプリケーションの種別と第1アプリケーションの開発に用いられるプログラミング言語と第1アプリケーションの開発に用いられるフレームワークとを示す第1情報を取得する。処理部は、アプリケーションの種別とプログラミング言語とフレームワークとに関連付けられた、当該アプリケーションの配備に用いられる設定情報の複数のテンプレートのうち、第1情報に対応する第1テンプレートを選択する。処理部は、選択された第1テンプレートに基づいて、第1アプリケーションの配備に用いられる第1設定情報を生成する。
【選択図】
図8
【特許請求の範囲】
【請求項1】
システムへの配備対象である第1アプリケーションの種別と前記第1アプリケーションの開発に用いられるプログラミング言語と前記第1アプリケーションの開発に用いられるフレームワークとを示す第1情報を取得すると、アプリケーションの種別とプログラミング言語とフレームワークとに関連付けられた、当該アプリケーションの配備に用いられる設定情報の複数のテンプレートのうち、前記第1情報に対応する第1テンプレートを選択し、
選択された前記第1テンプレートに基づいて、前記第1アプリケーションの配備に用いられる第1設定情報を生成する、
処理をコンピュータに実行させる生成プログラム。
【請求項2】
前記複数のテンプレートは、前記システムによる、前記アプリケーションに対応するコンテナの配備に用いられるマニフェスト情報のひな形を含み、
前記第1設定情報の生成では、前記第1テンプレートに含まれる前記マニフェスト情報のひな形を前記第1情報に基づいて編集することで、前記第1アプリケーションに対応する前記マニフェスト情報を生成する、
処理を前記コンピュータに実行させる請求項1記載の生成プログラム。
【請求項3】
前記マニフェスト情報のひな形の編集では、前記第1情報に基づいて、前記マニフェスト情報のひな形に含まれる設定項目に対する設定値を決定し、決定した前記設定値を前記マニフェスト情報のひな形に挿入する、
処理を前記コンピュータに実行させる請求項2記載の生成プログラム。
【請求項4】
前記マニフェスト情報のひな形の編集では、前記コンテナのイメージの取得元と前記システムにおける前記第1アプリケーションの配備先とを示す第2情報を取得し、前記第2情報に基づいて、前記コンテナのイメージの取得元を示す情報と前記システムにおける前記第1アプリケーションの配備先を示す情報とを前記マニフェスト情報のひな形に挿入する、
処理を前記コンピュータに実行させる請求項2記載の生成プログラム。
【請求項5】
前記複数のテンプレートは、前記アプリケーションに対応するコンテナのイメージの生成に用いられるコンテナビルド設定情報を含む、
請求項1記載の生成プログラム。
【請求項6】
前記コンテナのイメージの登録先のコンテナイメージ記憶部を示す第3情報を取得し、
前記第1テンプレートに含まれる前記コンテナビルド設定情報と前記第1アプリケーションのソースコードとに基づいて、前記第1アプリケーションに対応する前記コンテナのイメージを生成し、
前記第3情報で示される前記コンテナイメージ記憶部に、生成した前記コンテナのイメージを登録する、
処理を前記コンピュータに実行させる請求項5記載の生成プログラム。
【請求項7】
前記複数のテンプレートは、前記アプリケーションの種別とプログラミング言語とフレームワークとに対応する、前記アプリケーションのソースコードのひな形を示す情報を含み、
前記第1情報および前記複数のテンプレートに基づいて、前記第1アプリケーションのソースコードのひな形を出力する、
処理を前記コンピュータに実行させる請求項1記載の生成プログラム。
【請求項8】
コンピュータが、
システムへの配備対象である第1アプリケーションの種別と前記第1アプリケーションの開発に用いられるプログラミング言語と前記第1アプリケーションの開発に用いられるフレームワークとを示す第1情報を取得すると、アプリケーションの種別とプログラミング言語とフレームワークとに関連付けられた、当該アプリケーションの配備に用いられる設定情報の複数のテンプレートのうち、前記第1情報に対応する第1テンプレートを選択し、
選択された前記第1テンプレートに基づいて、前記第1アプリケーションの配備に用いられる第1設定情報を生成する、
生成方法。
【請求項9】
アプリケーションの種別とプログラミング言語とフレームワークとに関連付けられた、当該アプリケーションの配備に用いられる設定情報の複数のテンプレートを記憶する記憶部と、
システムへの配備対象である第1アプリケーションの種別と前記第1アプリケーションの開発に用いられるプログラミング言語と前記第1アプリケーションの開発に用いられるフレームワークとを示す第1情報を取得すると、前記複数のテンプレートのうち、前記第1情報に対応する第1テンプレートを選択し、選択された前記第1テンプレートに基づいて、前記第1アプリケーションの配備に用いられる第1設定情報を生成する処理部と、
を有する情報処理装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は生成プログラム、生成方法および情報処理装置に関する。
【背景技術】
【0002】
コンピュータにおける仮想化技術の1つにコンテナ型仮想化と呼ばれる技術がある。コンテナ型仮想化では、アプリケーションの起動に用いるライブラリなどの資源を纏めたコンテナが、ソフトウェアの実行環境として定義される。例えば、コンピュータにより実現されるノードがコンテナエンジンを実行することで、ノード上にコンテナを形成することができる。ノードは、CPU(Central Processing Unit)やRAM(Random Access Memory)などのリソースを有する物理マシンでもよいし、物理マシン上で動作する仮想マシンでもよい。
【0003】
なお、ビジュアルプログラミングツールによるアプリケーションソフトウェアの開発を支援するシステムが提案されている。ビジュアルプログラミングツールは、ソースコードを記述することなく、モデル図を記述することによるアプリケーションソフトウェアの開発を可能にする。
【先行技術文献】
【特許文献】
【0004】
【発明の概要】
【発明が解決しようとする課題】
【0005】
アプリケーションの開発の際、開発者は、アプリケーションのコード本体の開発に加え、例えばアプリケーションを動作させるためのコンテナなどの実行環境に応じて、アプリケーションをシステムに配備するために用いられる設定情報の作成を行うことがある。しかし、当該設定情報の記述は複雑である。このため、当該設定情報の作成作業は、アプリケーションの開発の効率を低下させることがある。
【0006】
1つの側面では、本発明は、アプリケーションの開発の効率を向上させることを目的とする。
【課題を解決するための手段】
【0007】
1つの態様では、生成プログラムが提供される。生成プログラムは、コンピュータに、システムへの配備対象である第1アプリケーションの種別と第1アプリケーションの開発に用いられるプログラミング言語と第1アプリケーションの開発に用いられるフレームワークとを示す第1情報を取得すると、アプリケーションの種別とプログラミング言語とフレームワークとに関連付けられた、当該アプリケーションの配備に用いられる設定情報の複数のテンプレートのうち、第1情報に対応する第1テンプレートを選択し、選択された第1テンプレートに基づいて、第1アプリケーションの配備に用いられる第1設定情報を生成する、処理を実行させる。
【0008】
また、1つの態様では、生成方法が提供される。また、1つの態様では、記憶部と処理部とを有する情報処理装置が提供される。
【発明の効果】
【0009】
1つの側面では、アプリケーションの開発の効率が向上する。
【図面の簡単な説明】
【0010】
【
図1】第1の実施の形態の情報処理装置を説明する図である。
【
図2】第2の実施の形態の情報処理システムの例を示す図である。
【
図3】情報処理装置のハードウェア例を示す図である。
【
図6】マニフェスト設定値管理テーブルの例を示す図である。
【
図7】アプリテンプレート生成用設定ファイルの例を示す図である。
【
図8】アプリのコードおよびコンテナビルド設定情報の取得例を示す図である。
【
図9】マニフェスト情報ひな形と設定値情報との取得例を示す図である。
【
図10】コンテナビルド設定情報の例を示す図である。
【
図11】マニフェスト情報ひな形の例を示す図である。
【
図12】マニフェスト情報ひな形に対する設定値情報の例を示す図である。
【
図13】アプリテンプレートデプロイ用設定ファイルの例を示す図である。
【
図14】情報処理装置の第1の処理例を示すフローチャートである。
【
図15】情報処理装置の第2の処理例を示すフローチャートである。
【
図16】マニフェスト情報の生成例を示す図である。
【
図17】生成されたマニフェスト情報の例を示す図である。
【
図18】生成されたマニフェスト情報の例(続き)を示す図である。
【発明を実施するための形態】
【0011】
以下、本実施の形態について図面を参照して説明する。
[第1の実施の形態]
第1の実施の形態を説明する。
【0012】
図1は、第1の実施の形態の情報処理装置を説明する図である。
情報処理装置10は、ユーザによるアプリケーションの開発を支援する。アプリケーションは、例えばコンテナ上で動作する。コンテナは、物理マシンや仮想マシンなどの複数のノードを有するシステムにより実行される。
図1では当該システムの図示は省略されている。
【0013】
情報処理装置10は、記憶部11および処理部12を有する。記憶部11は、RAMなどの揮発性記憶装置でもよいし、HDD(Hard Disk Drive)やフラッシュメモリなどの不揮発性記憶装置でもよい。処理部12は、CPU、DSP(Digital Signal Processor)、ASIC(Application Specific Integrated Circuit)、FPGA(Field Programmable Gate Array)などを含み得る。処理部12はプログラムを実行するプロセッサでもよい。「プロセッサ」は複数のプロセッサの集合(マルチプロセッサ)を含み得る。
【0014】
処理部12は、第1情報20およびテンプレート管理情報30に基づいて、アプリケーションをシステムに配備する際に用いられる設定情報を自動的に生成する。設定情報は、例えば、アプリケーションのソースコードに基づくコンテナイメージのビルドに用いられるコンテナビルド設定情報や、当該コンテナイメージによるシステムへのアプリケーションのデプロイに用いられるマニフェスト情報を含み得る。
【0015】
例えば、コンテナの実行環境にDocker(登録商標)が用いられる場合、Docerfileと呼ばれる情報は、コンテナビルド設定情報の一例である。ただし、コンテナの実行環境にはDocker以外のソフトウェアが用いられてもよい。また、システムに実行させるコンテナの統合管理を行うコンテナオーケストレーションツールにOpenShift(登録商標)やKubernetes(登録商標)が用いられることがある。この場合、K8sマニフェストと呼ばれる情報は、マニフェスト情報の一例である。ただし、コンテナオーケストレーションツールには、OpenShiftやKubernetes以外のソフトウェアが用いられてもよい。
【0016】
記憶部11は、テンプレート管理情報30を記憶する。テンプレート管理情報30は、アプリケーションの種別とプログラミング言語とフレームワークとに関連付けられた、当該アプリケーションの配備に用いられる設定情報の複数のテンプレートを示す情報である。アプリケーションの種別、すなわちアプリケーション種別は、例えば「フロントエンド」、「バックエンド」、「Rest API(Application Programming Interface)」、「データベース」などを示す。プログラミング言語は、アプリケーションの開発に用いられるプログラミング言語を示す。フレームワークは、アプリケーションの開発に用いられるフレームワークを示す。テンプレートを示す情報は、テンプレートの所在を示す識別情報でもよいし、テンプレートの本体でもよい。テンプレートの所在を示す識別情報は、例えばURL(Uniform Resource Locator)である。設定情報が、コンテナビルド設定情報やマニフェスト情報を含む場合、設定情報のテンプレートは、コンテナビルド設定情報やマニフェスト情報それぞれに対応する情報を含む。
【0017】
例えば、テンプレート管理情報30は、アプリケーション種別「typeA」、プログラミング言語「langA」、フレームワーク「frameworkA」およびテンプレート「templateA」のレコードを含む。テンプレート管理情報30は、アプリケーション種別「typeA」、プログラミング言語「langB」、フレームワーク「frameworkB」およびテンプレート「templateB」のレコードを含む。テンプレート管理情報30は、アプリケーション種別とプログラミング言語とフレームワークとの他の組合せに対するテンプレートを示す他のレコードを含んでもよい。また、テンプレート管理情報30は、アプリケーション種別とプログラミング言語とフレームワークとの組合せに対するアプリケーションのソースコードのひな形を示す情報を含んでもよい。
【0018】
処理部12は、第1情報20を取得する。第1情報20は、例えば、ユーザにより情報処理装置10に入力される。第1情報20は、ユーザが実際に開発しようとする第1アプリケーションの種別と、第1アプリケーションの開発に用いられるプログラミング言語と、第1アプリケーションの開発に用いられるフレームワークとを示す情報である。
【0019】
処理部12は、第1情報20を取得すると、テンプレート管理情報30により示される複数のテンプレートのうち、第1情報20に応じた第1テンプレートを選択する。例えば、第1情報20はアプリケーション種別「typeA」、プログラミング言語「langB」およびフレームワーク「frameworkB」を示す。この場合、処理部12は、第1情報20およびテンプレート管理情報30に基づいて、テンプレート「templateB」を第1テンプレートとして選択する。テンプレート管理情報30におけるテンプレートを示す情報がテンプレートの所在を示す識別情報の場合、処理部12は、第1テンプレートの識別情報に基づいて、テンプレートの本体を保持する装置から第1テンプレートを取得する。
【0020】
テンプレート管理情報30がアプリケーション種別とプログラミング言語とフレームワークとの組合せに対するアプリケーションのソースコードのひな形を示す情報を含む場合、処理部12は、当該情報に基づいて、第1情報20に応じた当該ソースコードのひな形を取得して出力してもよい。ユーザは、出力されたソースコードのひな形を編集することで、アプリケーションのソースコードを作成可能である。
【0021】
処理部12は、選択された第1テンプレートに基づいて、第1アプリケーションの配備に用いられる第1設定情報40を生成する。第1設定情報40は、例えばコンテナビルド設定情報41およびマニフェスト情報42を含む。
【0022】
例えば、処理部12は、第1テンプレートに含まれるコンテナビルド設定情報をそのままコンテナビルド設定情報41としてもよい。コンテナビルド設定情報41は、コンテナイメージのベースとなるベースイメージのバージョン、コンテナイメージにインストールする関数名(例えばfunc)およびアプリケーションのソースコードの識別名(例えばmyapp)を含む。ユーザは、自身が作成したアプリケーションのソースコードの識別名、例えばファイル名などを、コンテナビルド設定情報41におけるソースコードの識別名に合わせておく。すると、処理部12は、コンテナビルド設定情報41を用いて、該当の識別名に対応するソースコードを取得し、当該アプリケーションに対応するコンテナイメージのビルドを行える。
【0023】
また、処理部12は、第1テンプレートに含まれるマニフェスト情報のひな形を編集して、マニフェスト情報42を生成してもよい。例えば、処理部12は、アプリケーション種別、プログラミング言語およびフレームワークのうちの1つ以上の要素の組合せに応じて、マニフェスト情報のひな形に含まれる設定項目の設定値を決定し、当該設定項目の箇所に設定値を挿入してもよい。例えば、処理部12は、アプリケーション種別に応じて、該当のアプリケーションを実行するコンテナの数(レプリカ数)を決定してもよい。また、処理部12は、アプリケーション種別とフレームワークとの組合せに応じて、該当のアプリケーションを実行するコンテナのCPU性能やメモリサイズを決定してもよい。処理部12は、マニフェスト情報42に含まれ得るセキュリティやネットワークなどの他の設定項目に対する設定値を同様に決定し得る。
【0024】
更に、処理部12は、ユーザによる所定の情報の入力を受け付けて、マニフェスト情報42に挿入してもよい。例えば、ユーザによる入力を受け付ける所定の情報は、コンテナイメージの取得元の識別情報や、コンテナイメージによるアプリケーションの配備先の識別情報などである。
【0025】
処理部12は、生成したマニフェスト情報42を用いて、ビルドされたコンテナイメージを取得し、配備先のシステムに対するアプリケーションの配備を行える。
なお、上記の例では、第1設定情報40がコンテナビルド設定情報41およびマニフェスト情報42を含むものとしたが、第1設定情報40は、コンテナビルド設定情報41およびマニフェスト情報42の何れか一方だけを含んでもよい。
【0026】
情報処理装置10によれば、システムへの配備対象である第1アプリケーションの種別と第1アプリケーションの開発に用いられるプログラミング言語と第1アプリケーションの開発に用いられるフレームワークとを示す第1情報20が取得される。第1情報20が取得されると、テンプレート管理情報30により示される複数のテンプレートのうち、第1情報に対応する第1テンプレートが選択される。テンプレート管理情報30は、アプリケーションの種別とプログラミング言語とフレームワークとに関連付けられた、当該アプリケーションの配備に用いられる設定情報のテンプレートを示す。選択された第1テンプレートに基づいて、第1アプリケーションの配備に用いられる第1設定情報40が生成される。これにより、情報処理装置10は、アプリケーションの開発の効率を向上できる。
【0027】
ここで、アプリケーションをシステムに配備するために用いられる設定情報の記述は複雑であり、ユーザが当該設定情報の作成をするのは容易でない。このため、当該設定情報の作成は、アプリケーションの開発の効率を低下させることがある。そこで、情報処理装置10は、第1情報20の入力に応じて当該アプリケーションの配備に用いられる第1設定情報40を生成する。これにより、ユーザは、第1情報20を入力するだけで、第1設定情報40を得られるので、ユーザによる第1設定情報40の作成作業を省略でき、アプリケーションのコード本体の開発に注力できる。こうして、情報処理装置10は、アプリケーションの開発の効率を向上できる。上述の通り、アプリケーションをシステムに配備するために用いられる設定情報の記述は複雑である。しかし、アプリケーションに関する情報、すなわち、アプリケーションの種別、プログラミング言語、フレームワークの情報の組合せに応じて、設定情報の記述はテンプレート化できると発明者は考えた。また、第1情報20に含まれる、アプリケーションの種別、プログラミング言語、フレームワークの情報は、いずれもアプリケーション開発において用いられる情報である。したがって、アプリケーション開発を行うユーザにとって、第1情報20は特定や記述が容易な情報である。以上により、情報処理装置10は、アプリケーションの開発の効率を向上できる。
【0028】
以下では、より具体的な例を示して、情報処理装置10の機能を更に詳細に説明する。
[第2の実施の形態]
次に、第2の実施の形態を説明する。
【0029】
図2は、第2の実施の形態の情報処理システムの例を示す図である。
第2の実施の形態の情報処理システムは、情報処理装置100、アプリテンプレート管理サーバ200、開発管理サーバ300、コンテナイメージ管理サーバ400およびコンテナ実行システム500を有する。情報処理装置100、アプリテンプレート管理サーバ200、開発管理サーバ300、コンテナイメージ管理サーバ400およびコンテナ実行システム500は、ネットワーク50に接続される。ネットワーク50は、例えば、LAN(Local Area Network)でもよいし、WAN(Wide Area Network)やインターネットでもよい。
【0030】
情報処理装置100は、ユーザにより操作されるクライアントコンピュータである。情報処理装置100は、ユーザによるアプリケーションの開発に用いられる。アプリケーションの開発には、プログラミング言語に応じたフレームワークを利用可能である。フレームワークは、開発するアプリケーションに対して、予め用意された一般的な機能を提供するライブラリや定型コードなどを提供する。また、アプリケーションは、コンテナ上で動作する。情報処理装置100は、アプリケーションをコンテナとして実装するために用いられる設定情報を自動的に生成することで、アプリケーションの開発を支援する。
【0031】
アプリテンプレート管理サーバ200は、アプリテンプレートを管理するサーバコンピュータである。アプリテンプレートは、アプリケーションのソースコードのひな形と当該ソースコードを含むコンテナイメージのビルドに用いられるコンテナビルド設定情報とアプリケーションの配備に用いられるマニフェスト情報のひな形とを含む。アプリケーションのソースコードのひな形は種々のプログラミング言語により予め作成される。アプリテンプレート管理サーバ200は、情報処理装置100の要求に応じて、アプリテンプレートを情報処理装置100に送信する。なお、ソースコードはコードと略記される。マニフェスト情報のひな形は、マニフェスト情報ひな形と略記される。
【0032】
開発管理サーバ300は、アプリケーションの開発管理を行うサーバコンピュータである。開発管理サーバ300は、情報処理装置100からアプリテンプレートを取得し、アプリテンプレートを保持し、アプリテンプレートに含まれるアプリケーションのコードの編集履歴を管理するリポジトリとして機能する。例えば、情報処理装置100は、開発管理サーバ300からアプリケーションのコードをダウンロードして当該コードを編集し、編集後のコードを開発管理サーバ300にアップロードして、開発管理サーバ300にバージョンの管理などを行わせる。開発管理サーバ300のリポジトリは、例えば、Gitリポジトリである。
【0033】
コンテナイメージ管理サーバ400は、コンテナイメージを管理するサーバコンピュータである。コンテナイメージ管理サーバ400は、情報処理装置100でビルドされたコンテナイメージを取得し、保持する。コンテナイメージ管理サーバ400は、コンテナ実行システム500に対して、コンテナイメージの提供を行う。
【0034】
コンテナ実行システム500は、情報処理装置100の指示に基づいて、コンテナを実行するコンピュータシステムである。コンテナ実行システム500は、物理マシンや物理マシン上で動作する仮想マシンなどの複数のノードを有し、複数のノードを用いて複数のコンテナを実行する。情報処理装置100は、コンテナ実行システム500上にアプリケーションのコンテナをデプロイすることで、当該アプリケーションをコンテナ実行システム500に配備する。
【0035】
ここで、第2の実施の形態では、コンテナの実行環境を提供するソフトウェアとして、Dockerを例示する。ただし、コンテナの実行環境を提供するソフトウェアには、Docker以外のものが用いられてもよい。また、第2の実施の形態では、コンテナ実行システム500で用いられるコンテナオーケストレーションツールとして、OpenShiftを例示する。ただし、コンテナオーケストレーションツールにはOpenshift以外のものが用いられてもよい。
【0036】
図3は、情報処理装置のハードウェア例を示す図である。
情報処理装置100は、CPU101、RAM102、HDD103、GPU(Graphics Processing Unit)104、入力インタフェース105、媒体リーダ106およびNIC(Network Interface Card)107を有する。なお、CPU101は、第1の実施の形態の処理部12の一例である。RAM102またはHDD103は、第1の実施の形態の記憶部11の一例である。
【0037】
CPU101は、プログラムの命令を実行するプロセッサである。CPU101は、HDD103に記憶されたプログラムやデータの少なくとも一部をRAM102にロードし、プログラムを実行する。なお、CPU101は複数のプロセッサコアを含んでもよい。また、情報処理装置100は複数のプロセッサを有してもよい。以下で説明する処理は複数のプロセッサまたはプロセッサコアを用いて並列に実行されてもよい。また、複数のプロセッサの集合を「マルチプロセッサ」または単に「プロセッサ」と言うことがある。
【0038】
RAM102は、CPU101が実行するプログラムやCPU101が演算に用いるデータを一時的に記憶する揮発性の半導体メモリである。なお、情報処理装置100は、RAM以外の種類のメモリを備えてもよく、複数個のメモリを備えてもよい。
【0039】
HDD103は、OS(Operating System)やミドルウェアやアプリケーションソフトウェアなどのソフトウェアのプログラム、および、データを記憶する不揮発性の記憶装置である。なお、情報処理装置100は、フラッシュメモリやSSD(Solid State Drive)などの他の種類の記憶装置を備えてもよく、複数の不揮発性の記憶装置を備えてもよい。
【0040】
GPU104は、CPU101からの命令に従って、情報処理装置100に接続されたディスプレイ51に画像を出力する。ディスプレイ51としては、CRT(Cathode Ray Tube)ディスプレイ、液晶ディスプレイ(LCD:Liquid Crystal Display)、プラズマディスプレイ、有機EL(OEL:Organic Electro-Luminescence)ディスプレイなど、任意の種類のディスプレイを用いることができる。
【0041】
入力インタフェース105は、情報処理装置100に接続された入力デバイス52から入力信号を取得し、CPU101に出力する。入力デバイス52としては、マウス、タッチパネル、タッチパッド、トラックボールなどのポインティングデバイス、キーボード、リモートコントローラ、ボタンスイッチなどを用いることができる。また、情報処理装置100に、複数の種類の入力デバイスが接続されていてもよい。
【0042】
媒体リーダ106は、記録媒体53に記録されたプログラムやデータを読み取る読み取り装置である。記録媒体53として、例えば、磁気ディスク、光ディスク、光磁気ディスク(MO:Magneto-Optical disk)、半導体メモリなどを使用できる。磁気ディスクには、フレキシブルディスク(FD:Flexible Disk)やHDDが含まれる。光ディスクには、CD(Compact Disc)やDVD(Digital Versatile Disc)が含まれる。
【0043】
媒体リーダ106は、例えば、記録媒体53から読み取ったプログラムやデータを、RAM102やHDD103などの他の記録媒体にコピーする。読み取られたプログラムは、例えば、CPU101によって実行される。なお、記録媒体53は可搬型記録媒体であってもよく、プログラムやデータの配布に用いられることがある。また、記録媒体53やHDD103を、コンピュータ読み取り可能な記録媒体と言うことがある。
【0044】
NIC107は、ネットワーク50に接続され、ネットワーク50を介して他のコンピュータと通信を行うインタフェースである。NIC107は、例えば、スイッチやルータなどの通信装置とケーブルで接続される。NIC107は、無線通信インタフェースでもよい。
【0045】
アプリテンプレート管理サーバ200、開発管理サーバ300、コンテナイメージ管理サーバ400およびコンテナ実行システム500も、情報処理装置100と同様のハードウェアにより実現される。
【0046】
図4は、情報処理システムの機能例を示す図である。
情報処理装置100は、記憶部110、アプリテンプレート生成部120および配備処理部130を有する。記憶部110には、RAM102やHDD103の記憶領域が用いられる。アプリテンプレート生成部120および配備処理部130は、CPU101がRAM102に記憶されたプログラムを実行することで実現される。
【0047】
記憶部110は、管理テーブルを記憶する。管理テーブルは、アプリケーションの種別とアプリケーションの開発に用いられるプログラミング言語と当該開発に用いられるフレームワークとの組合せに対応するアプリケーションのコードのひな形とコンテナビルド設定情報とを示す情報である。アプリケーションの種別は、アプリ種別と略記される。アプリケーションは、アプリと略記される。コンテナビルド設定情報は、Dockerfileと呼ばれるデータであり、第1の実施の形態のコンテナビルド設定情報41の一例である。マニフェスト情報は、K8sマニフェストと呼ばれるデータであり、第1の実施の形態のマニフェスト情報42の一例である。マニフェスト情報は、例えばYAML(YAML Ain't Markup Language)形式で記述される。
【0048】
ここで、アプリテンプレート管理サーバ200は、アプリテンプレート生成用リポジトリ210を有する。アプリテンプレート生成用リポジトリ210は、予め作成済のアプリのコードのひな形を保持する。例えば、アプリのコードのひな形として、該当のプログラミング言語およびフレームワークを用いる場合の当該コードのひな形が予め作成され、アプリテンプレート生成用リポジトリ210に格納される。また、アプリテンプレート生成用リポジトリ210は、当該アプリのコードのひな形に対して予め作成済のコンテナビルド設定情報およびマニフェスト情報のひな形を保持する。コンテナビルド設定情報は、Dockerfileと言われてもよい。マニフェスト情報は、K8sマニフェストと言われてもよい。
【0049】
例えば、管理テーブルにおけるアプリのコードを示す情報は、アプリテンプレート生成用リポジトリ210上のアプリのコードの所在を示すURLなどの識別情報である。管理テーブルにおけるコンテナビルド設定情報を示す情報は、アプリテンプレート生成用リポジトリ210上のコンテナビルド設定情報の所在を示すURLなどの識別情報である。管理テーブルにおけるマニフェスト情報を示す情報は、アプリテンプレート生成用リポジトリ210上のマニフェスト情報の所在を示すURLなどの識別情報である。
【0050】
アプリテンプレート生成部120は、ユーザによるアプリテンプレート生成用設定ファイルの入力を受け付ける。アプリテンプレート生成用設定ファイルは、開発するアプリケーションのアプリ種別とプログラミング言語とフレームワークとを示す情報である。すると、アプリテンプレート生成部120は、記憶部110に記憶された管理テーブルに基づいて、入力された情報に対応するアプリテンプレートを生成する。具体的には、アプリテンプレート生成部120は、アプリテンプレート生成用設定ファイルの情報に対応するアプリのコードのひな形とコンテナビルド設定情報とマニフェスト情報ひな形とを、アプリテンプレート管理サーバ200から取得する。
【0051】
アプリテンプレート生成部120は、取得したマニフェスト情報ひな形における各設定項目に、アプリのコードのアプリ種別、プログラミング言語およびフレームワークに応じた所定の設定値を挿入する。
【0052】
アプリテンプレート生成部120は、アプリのコードのひな形とコンテナビルド設定情報とマニフェスト情報ひな形とを含むアプリテンプレートを、開発管理サーバ300が有するGitリポジトリ310に登録する。Gitリポジトリ310は、情報処理装置100により生成されたアプリテンプレートを管理するリポジトリである。
【0053】
ここで、ユーザは、例えば情報処理装置100を用いて、Gitリポジトリ310に登録されたアプリのコードを編集し、所望のサービスを提供するアプリケーションの開発を行える。
【0054】
配備処理部130は、ユーザによるアプリテンプレートデプロイ用設定ファイルの入力を受け付ける。アプリテンプレートデプロイ用設定ファイルは、Gitリポジトリ310の情報と、コンテナイメージ管理サーバ400におけるコンテナイメージレジストリ410の情報と、コンテナ実行システム500におけるコンテナの配備先の情報とを示す。すると、配備処理部130は、Gitリポジトリ310の情報に基づいてアプリのコードとコンテナビルド設定情報とマニフェスト情報ひな形とを開発管理サーバ300からダウンロードする。配備処理部130は、コンテナビルド設定情報を用いてアプリのコードに対応するコンテナイメージのビルドを行い、ビルドにより生成されたコンテナイメージを、指定されたコンテナイメージレジストリ410に登録する。ここで、コンテナイメージレジストリ410は、コンテナイメージ、すなわち、Dockerイメージを保持するDockerレジストリである。
【0055】
また、配備処理部130は、指定されたコンテナイメージレジストリ410の情報やコンテナの配備先の情報を、所定の設定項目の設定値としてマニフェスト情報ひな形に挿入する。こうして、配備処理部130は、マニフェスト情報、すなわち、K8sマニフェストを完成させる。
【0056】
配備処理部130は、生成したマニフェスト情報を用いて、コンテナ実行システム500にアプリケーションの配備を指示する。これにより、コンテナ実行システム500上に、アプリケーションに対応するコンテナがデプロイされ、当該アプリケーションが利用可能になる。
【0057】
図5は、管理テーブルの例を示す図である。
管理テーブル111は、記憶部110に格納される。管理テーブル111は、アプリ種別、言語、フレームワーク、アプリコードURL、コンテナビルド設定情報URLおよびマニフェスト情報ひな形URLの項目を有する。アプリ種別の項目には、アプリケーションの種別が登録される。アプリ種別には、例えば「フロントエンド」、「バックエンド」、「Rest API」、「Web API」および「データベース」などがある。言語の項目には、プログラミング言語の名称が登録される。フレームワークの項目には、フレームワークの名称が登録される。アプリコードURLの項目には、アプリテンプレート生成用リポジトリ210に保持されるアプリのコードのひな形のURLが登録される。コンテナビルド設定情報URLの項目には、アプリテンプレート生成用リポジトリ210に保持されるコンテナビルド設定情報のURLが登録される。マニフェスト情報ひな形URLの項目には、アプリテンプレート生成用リポジトリ210に保持されるマニフェスト情報ひな形のURLが登録される。
【0058】
例えば、管理テーブル111は、アプリ種別「フロントエンド」、言語「JavaScript」、フレームワーク「React」、アプリコードURL「code-URL1」、コンテナビルド設定情報URL「build-URL1」、マニフェスト情報ひな形URL「manifest-URL1」のレコードを有する。JavaScriptは登録商標である。管理テーブル111は、アプリ種別、言語、フレームワークの他の組合せに対するアプリコードURL、コンテナビルド設定情報URLおよびマニフェスト情報ひな形URLを示すレコードも有する。図中、プログラミング言語として例示される「Python」は登録商標である。
【0059】
図6は、マニフェスト設定値管理テーブルの例を示す図である。
マニフェスト設定値管理テーブル112は、記憶部110に格納される。マニフェスト設定値管理テーブル112は、アプリ種別、言語、フレームワーク、アプリメタ情報、リソース設定情報、コンテナ個数情報、セキュリティ設定情報、ネットワーク設定情報および環境変数情報の項目を有する。アプリ種別、言語およびフレームワークの項目には、管理テーブル111の同名の項目と同様の情報が設定される。ただし、マニフェスト設定値管理テーブル112では、アプリ種別、言語およびフレームワークの項目のうちの1以上の項目の組に対して、アプリメタ情報、リソース設定情報、コンテナ個数情報、セキュリティ設定情報、ネットワーク設定情報および環境変数情報が対応付けられる。
【0060】
アプリメタ情報、リソース設定情報、コンテナ個数情報、セキュリティ設定情報、ネットワーク設定情報および環境変数情報の項目には、マニフェスト情報ひな形に挿入される、各種の設定項目に対して挿入される設定値の情報の識別情報が登録される。当該識別情報は、アプリテンプレート生成用リポジトリ210に保持される当該設定値の情報のURLである。また、アプリメタ情報、リソース設定情報、コンテナ個数情報、セキュリティ設定情報、ネットワーク設定情報および環境変数情報を総称して「設定値情報」と言う。設定値情報は、マニフェスト情報の該当の設定項目に対する設定値のみを記述したデータである。設定値情報は、マニフェスト情報と同様に、例えばYAML形式で記述される。
【0061】
アプリメタ情報の項目には、アプリメタ情報のURLが登録される。アプリメタ情報は、アプリの識別名に相当する。リソース設定情報の項目には、リソース設定情報のURLが登録される。リソース設定情報は、アプリの動作に使用するコンテナのCPU性能やメモリサイズを示す。コンテナ個数情報の項目には、コンテナ個数情報のURLが登録される。コンテナ個数情報は、アプリの動作に使用するコンテナの数を示す。セキュリティ設定情報の項目には、アプリの動作に用いるセキュリティ設定情報のURLが登録される。ネットワーク設定情報の項目には、アプリの動作に用いるネットワーク設定情報のURLが登録される。環境変数情報の項目には、アプリの動作に用いる環境変数を示す環境変数情報のURLが登録される。
【0062】
例えば、マニフェスト設定値管理テーブル112は、アプリ種別「フロントエンド」、言語「JavaScript」、フレームワーク「React」に対応するアプリメタ情報、リソース設定情報、コンテナ個数情報、セキュリティ設定情報、ネットワーク設定情報および環境変数情報のURLを示すレコードを有する。
【0063】
マニフェスト設定値管理テーブル112は、アプリ種別、言語、フレームワークの他の組合せに対しても、アプリメタ情報、リソース設定情報、コンテナ個数情報、セキュリティ設定情報、ネットワーク設定情報および環境変数情報のURLを示すレコードを有する。例えば、マニフェスト設定値管理テーブル112は、アプリ種別および言語のある組合せに対して、アプリメタ情報などの設定値情報のURLを保持してもよい。あるいは、マニフェスト設定値管理テーブル112は、あるアプリ種別のみに対して、アプリメタ情報などの設定値情報のURLを保持してもよい。
【0064】
図7は、アプリテンプレート生成用設定ファイルの例を示す図である。
アプリテンプレート生成用設定ファイル121は、アプリ種別、言語およびフレームワークを示す情報とGitリポジトリ情報とを含む。Gitリポジトリ情報は、Gitリポジトリ310におけるアプリのコード、コンテナビルド設定情報およびマニフェスト情報の格納先のURLである。Gitリポジトリ情報は、Gitリポジトリ310にアクセスするために用いられるプロジェクト名、ユーザ名およびパスワードなどの他の情報を含んでもよい。
【0065】
アプリテンプレート生成用設定ファイル121は、アプリ種別「フロントエンド」、言語「JavaScript」、フレームワーク「React」およびGitリポジトリ情報「https://gitabc.example.com/test/test.git」が指定される例を示す。
【0066】
図8は、アプリのコードおよびコンテナビルド設定情報の取得例を示す図である。
例えば、アプリテンプレート生成用リポジトリ210は、アプリコードリポジトリ211およびコンテナビルド設定情報リポジトリ212を有する。例えば、アプリテンプレート生成部120は、アプリテンプレート生成用設定ファイル121の設定に基づいて、管理テーブル111のレコード111aを選択する。ここで、
図8では、管理テーブル111におけるアプリコードURLおよびコンテナビルド設定情報URLの図示を省略している。
【0067】
アプリテンプレート生成部120は、レコード111aからアプリコードURL「code-URL1」およびコンテナビルド設定情報URL「build-URL1」を取得する。アプリテンプレート生成部120は、アプリコードURL「code-URL1」に基づいて、アプリコードリポジトリ211からアプリのコード211aを取得する。また、アプリテンプレート生成部120は、コンテナビルド設定情報URL「build-URL1」に基づいて、コンテナビルド設定情報リポジトリ212からコンテナビルド設定情報212aを取得する。
【0068】
図9は、マニフェスト情報ひな形と設定値情報との取得例を示す図である。
例えば、アプリテンプレート生成用リポジトリ210は、マニフェスト情報リポジトリ213、アプリメタ情報リポジトリ214およびリソース設定情報リポジトリ215を有する。図示を省略しているが、アプリテンプレート生成用リポジトリ210は、コンテナ数情報リポジトリ、セキュリティ設定情報リポジトリ、環境変数情報リポジトリおよびネットワーク設定情報リポジトリを有する。
【0069】
例えば、アプリテンプレート生成部120は、アプリテンプレート生成用設定ファイル121の設定に基づいて、管理テーブル111のレコード111aを選択する。ここで、
図9では、管理テーブル111におけるアプリコードURLおよびコンテナビルド設定情報URLの図示を省略している。
【0070】
アプリテンプレート生成部120は、レコード111aからマニフェスト情報ひな形URL「manifest-URL1」を取得する。アプリテンプレート生成部120は、マニフェスト情報ひな形URL「manifest-URL1」に基づいて、マニフェスト情報リポジトリ213からマニフェスト情報ひな形213aを取得する。
【0071】
また、アプリテンプレート生成部120は、アプリテンプレート生成用設定ファイル121の設定に基づいて、マニフェスト設定値管理テーブル112のレコード112aを選択する。ここで、
図9では、マニフェスト設定値管理テーブル112におけるアプリメタ情報などの設定値情報の項目の図示を省略している。
【0072】
アプリテンプレート生成部120は、レコード112aからアプリメタ情報などの設定値情報のURLを取得する。例えば、当該URLは、アプリメタ情報のURL「URL-A1」やリソース設定情報のURL「URL-A2」を含む。アプリテンプレート生成部120は、アプリメタ情報のURL「URL-A1」に基づいて、アプリメタ情報リポジトリ214からアプリメタ情報214aを取得する。アプリテンプレート生成部120は、リソース設定情報のURL「URL-A2」に基づいて、リソース設定情報リポジトリ215からリソース設定情報215aを取得する。
【0073】
アプリテンプレート生成部120は、他の設定値情報も同様にして取得する。例えば、アプリテンプレート生成部120は、ネットワーク設定情報のURLに基づいて、ネットワーク設定情報リポジトリから、アプリテンプレート生成用設定ファイル121に対応するネットワーク設定情報を取得する。
【0074】
図10は、コンテナビルド設定情報の例を示す図である。
コンテナビルド設定情報212aは、例えばコンテナのベースイメージを指定する記述や、コンテナにインストールする関数、コンテナに複製するアプリのコードの識別名などを指定する記述を含む。コンテナビルド設定情報212aは完成されており、そのまま使用可能である。アプリテンプレート生成用リポジトリ210は、他のコンテナビルド設定情報も保持する。例えば、ユーザは、自身が作成したアプリケーションのソースコードの識別名、例えばファイル名などを、コンテナビルド設定情報212aにおけるソースコードの識別名に合わせておく。すると、配備処理部130は、コンテナビルド設定情報41を用いて、該当の識別名に対応するソースコードを取得し、当該アプリケーションに対応するコンテナイメージのビルドを行える。
【0075】
図11は、マニフェスト情報ひな形の例を示す図である。
マニフェスト情報ひな形213aは、アプリメタ情報、CPU性能、メモリサイズ、コンテナイメージの取得元のレジストリなどの設定項目について、項目名のみを有し、当該設定項目に対する設定値が空欄の状態となる。また、マニフェスト情報ひな形213aは、ユーザにより指定されるコンテナレジストリ情報に対応するプレースホルダの記述を有する。例えば、「REGISTRY_HOST_NAME」の記述は、コンテナレジストリ情報に対応するプレースホルダである。アプリテンプレート生成用リポジトリ210は、他のマニフェスト情報ひな形の情報も保持する。
【0076】
ここで、マニフェスト情報ひな形213aは、アプリ種別「フロントエンド」、言語「JavaScript」、フレームワーク「React」に対応する記述の例である。マニフェスト情報ひな形の記述は、アプリ種別、言語、フレームワークの組合せによって異なる。例えば、アプリ種別「バックエンド」、言語「JavaScript」、フレームワーク「Express.js」の場合、データを格納するためのDB(Database)を要する。したがって、アプリ種別「バックエンド」、言語「JavaScript」、フレームワーク「Express.js」の場合のマニフェスト情報ひな形は、マニフェスト情報ひな形213aにはない、DBのリソース作成のためのYAML記述を有する。DBのリソースもコンテナによって実現される。
【0077】
図12は、マニフェスト情報ひな形に対する設定値情報の例を示す図である。
アプリ種別「フロントエンド」、言語「JavaScript」、フレームワーク「React」に対応する設定値情報は、アプリメタ情報214a、リソース設定情報215a、コンテナ個数情報216a、セキュリティ設定情報217a、環境変数情報218aおよびネットワーク設定情報219aを含む。アプリメタ情報214a、リソース設定情報215a、コンテナ個数情報216a、セキュリティ設定情報217a、環境変数情報218aおよびネットワーク設定情報219aには、設定項目の項目名とその設定値とが保持される。このため、当該項目名を、マニフェスト情報ひな形213aに記述されている項目名と照合することで、マニフェスト情報ひな形213aに挿入する設定値が特定される。また、ネットワーク設定情報219aは、ユーザにより指定されるコンテナ実行システム情報に対応するプレースホルダの記述を有する。例えば、「SYSTEM_HOST_NAME」の記述は、コンテナ実行システム情報に対応するプレースホルダである。
【0078】
アプリテンプレート生成用リポジトリ210は、他のアプリメタ情報、リソース設定情報、コンテナ個数情報、セキュリティ設定情報、環境変数情報およびネットワーク設定情報も保持する。
【0079】
図13は、アプリテンプレートデプロイ用設定ファイルの例を示す図である。
アプリテンプレートデプロイ用設定ファイル131は、Gitリポジトリ情報、コンテナイメージレジストリ情報およびコンテナ実行システム情報を含む。
【0080】
Gitリポジトリ情報は、Gitリポジトリ310に格納されているアプリのコード、コンテナビルド設定情報およびマニフェスト情報ひな形の格納場所を示すURLである。Gitリポジトリ情報は、Gitリポジトリ310にアクセスするために用いられるプロジェクト名、ユーザ名およびパスワードなどの他の情報を含んでもよい。
【0081】
コンテナイメージレジストリ情報は、コンテナイメージレジストリ410に格納されているコンテナイメージのURLである。コンテナイメージレジストリ情報は、コンテナイメージレジストリ410にアクセスするために用いられるユーザ名およびパスワードなどの他の情報を含んでもよい。コンテナイメージレジストリ情報は、Dockerレジストリ情報と言われてもよい。
【0082】
コンテナ実行システム情報は、コンテナ実行システム500におけるアプリケーションの配備先を示すURLである。コンテナ実行システム情報は、コンテナ実行システム500にアクセスするために用いられるユーザ名およびパスワードなどの他の情報を含んでもよい。コンテナ実行システム情報は、OpenShift情報と言われてもよい。
【0083】
アプリテンプレートデプロイ用設定ファイル131は、Gitリポジトリ情報「https://gitabc.example.com/test/test.git」、コンテナイメージレジストリ情報「registry.abgit.soft.xxx.com」、コンテナ実行システム情報「apps.example.soft.xxx.com」が指定される例を示す。
【0084】
次に、情報処理装置100の処理手順を説明する。
図14は、情報処理装置の第1の処理例を示すフローチャートである。
情報処理装置100は、アプリテンプレート生成部120に対応するプログラムが起動されると、アプリテンプレート生成部120による下記の手順を実行する。
【0085】
(S10)アプリテンプレート生成部120は、アプリテンプレート生成用設定ファイル121を取得する。アプリテンプレート生成用設定ファイル121では、アプリ種別、言語、フレームワークおよびGitリポジトリ情報がユーザにより指定される。
【0086】
(S11)アプリテンプレート生成部120は、アプリテンプレート生成用設定ファイル121で指定されたアプリの情報、すなわち、アプリ種別と言語とフレームワークとを基に、アプリテンプレート生成用リポジトリ210からアプリのコードを取得する。
【0087】
(S12)アプリテンプレート生成部120は、取得したアプリのコードに対して、コンテナビルド設定情報(Dockerfile)とマニフェスト情報(K8sマニフェスト)のひな形との組合せを、アプリテンプレート生成用リポジトリ210から取得する。具体的には、アプリテンプレート生成部120は、アプリテンプレート生成用設定ファイル121で指定されたアプリの情報を基に、アプリテンプレート生成用リポジトリ210からコンテナビルド設定情報とマニフェスト情報ひな形とを取得する。また、アプリテンプレート生成部120は、アプリテンプレート生成用設定ファイル121で指定されたアプリの情報を基に、アプリテンプレート生成用リポジトリ210からアプリメタ情報などの設定値情報を取得する。
【0088】
(S13)アプリテンプレート生成部120は、取得したアプリのコードとコンテナビルド設定情報とマニフェスト情報ひな形とを、アプリテンプレート生成用設定ファイル121で指定されたGitリポジトリ310に登録する。このとき、アプリテンプレート生成部120は、マニフェスト情報ひな形に、アプリメタ情報などの設定値情報を挿入し、設定値情報を挿入後のマニフェスト情報ひな形をGitリポジトリ310に登録する。そして、アプリテンプレート生成部120による処理が終了する。
【0089】
ユーザは、例えば、情報処理装置100を用いて、Gitリポジトリ310に登録されたアプリのコードを編集し、所望のサービスを提供するアプリケーションの開発を行える。なお、ステップS13において、アプリテンプレート生成部120によりGitリポジトリ310に登録されるマニフェスト情報ひな形には、コンテナレジストリ情報やコンテナ実行システム情報の具体的な設定値は未だ設定されていない。
【0090】
図15は、情報処理装置の第2の処理例を示すフローチャートである。
情報処理装置100は、配備処理部130に対応するプログラムが起動されると、配備処理部130による下記の手順を実行する。
【0091】
(S20)配備処理部130は、アプリテンプレートデプロイ用設定ファイル131を取得する。アプリテンプレートデプロイ用設定ファイル131では、Gitリポジトリ情報、コンテナイメージレジストリ情報およびコンテナ実行システム情報がユーザにより指定される。
【0092】
(S21)配備処理部130は、アプリテンプレートデプロイ用設定ファイル131で指定されたGitリポジトリ310からアプリテンプレートを取得する。アプリテンプレートは、アプリのコード、コンテナビルド設定情報およびマニフェスト情報ひな形を含む。
【0093】
(S22)配備処理部130は、所定のツールを用いて、取得したアプリテンプレートのコンテナビルド設定情報を検証する。
(S23)配備処理部130は、アプリのコードとコンテナビルド設定情報とを基に、コンテナイメージをビルドする。
【0094】
(S24)配備処理部130は、ビルドしたコンテナイメージのセキュリティの検証を行う。
(S25)配備処理部130は、ビルドしたコンテナイメージを、アプリテンプレートデプロイ用設定ファイル131で指定されたコンテナイメージレジストリ410に登録する。
【0095】
(S26)配備処理部130は、アプリテンプレートデプロイ用設定ファイル131で指定されたコンテナ実行環境に合わせてアプリテンプレートのマニフェスト情報を修正する。すなわち、配備処理部130は、マニフェスト情報ひな形のプレースホルダで示される所定の箇所に、コンテナレジストリ情報およびコンテナ実行システム情報を挿入し、マニフェスト情報を完成させる。
【0096】
(S27)配備処理部130は、修正したマニフェスト情報の検証を行う。
(S28)配備処理部130は、マニフェスト情報を用いて、コンテナ実行システム500上にアプリをデプロイする。すなわち、配備処理部130は、コンテナ実行システム500に対し、該当のアプリに対応するコンテナイメージをコンテナイメージレジストリ410からダウンロードし、当該コンテナイメージにより当該アプリに対応するコンテナをデプロイするよう指示する。こうして、コンテナ実行システム500上で、ユーザにより開発されたアプリの動作が開始される。そして、配備処理部130の処理が終了する。
【0097】
図16は、マニフェスト情報の生成例を示す図である。
例えば、上記ステップS12において、アプリテンプレート生成部120は、アプリテンプレート生成用設定ファイル121に基づいて、マニフェスト情報ひな形213aと設定値情報とをアプリテンプレート生成用リポジトリ210から取得する。当該設定値情報は、アプリメタ情報214a、リソース設定情報215a、コンテナ個数情報216a、セキュリティ設定情報217a、環境変数情報218aおよびネットワーク設定情報219aを含む。ただし、
図16では、コンテナ個数情報216a、セキュリティ設定情報217a、環境変数情報218aおよびネットワーク設定情報219aは省略されている。
【0098】
また、上記ステップS13において、アプリテンプレート生成部120は、マニフェスト情報ひな形213aに、取得した設定値情報を挿入する。リソース設定情報215aの例で説明すると、まず、アプリテンプレート生成部120は、YAML記述における「resources:」、「requests:」、「memory:」といった設定項目の項目名を抽出する。そして、アプリテンプレート生成部120は、マニフェスト情報ひな形213aに対する同じ項目名の設定項目の空欄の箇所を、リソース設定情報215aの同名の設定項目の設定値の挿入箇所として特定し、当該設定値を挿入する。
【0099】
そして、上記ステップS26において、配備処理部130は、アプリテンプレートデプロイ用設定ファイル131に基づいて、コンテナイメージレジストリ情報およびコンテナ実行システム情報を取得する。配備処理部130は、マニフェスト情報ひな形213aにおける、コンテナイメージレジストリ情報およびコンテナ実行システム情報それぞれに対応するプレースホルダの箇所に、コンテナイメージレジストリ情報およびコンテナ実行システム情報を挿入する。前述の例では、マニフェスト情報ひな形213aにおける「REGISTRY_HOST_NAME」がコンテナイメージレジストリ情報のプレースホルダである。また、ネットワーク設定情報219aの挿入後のマニフェスト情報ひな形213aにおける「SYSTEM_HOST_NAME」がコンテナ実行システム情報のプレースホルダである。
【0100】
こうして、アプリテンプレート生成部120および配備処理部130は、マニフェスト情報ひな形213aからマニフェスト情報132を生成する。
図17は、生成されたマニフェスト情報の例を示す図である。
【0101】
アプリテンプレートデプロイ用設定ファイル131はコンテナイメージレジストリ情報「registry.abgit.soft.xxx.com」を含む。したがって、配備処理部130は、マニフェスト情報ひな形213aにおける「REGISTRY_HOST_NAME」の箇所に、「registry.abgit.soft.xxx.com」を挿入する。
【0102】
図18は、生成されたマニフェスト情報の例(続き)を示す図である。
アプリテンプレートデプロイ用設定ファイル131はコンテナ実行システム情報「apps.example.soft.xxx.com」を含む。したがって、配備処理部130は、ネットワーク設定情報219aの挿入後のマニフェスト情報ひな形213aにおける「SYSTEM_HOST_NAME」の箇所に、「apps.example.soft.xxx.com」を挿入する。
【0103】
配備処理部130は、こうして生成したマニフェスト情報132を用いて、コンテナ実行システム500に対するアプリのデプロイを適切に指示できる。
情報処理装置100によれば、ユーザは、アプリテンプレート生成用設定ファイル121およびアプリテンプレートデプロイ用設定ファイル131を入力するだけで、コンテナビルド設定情報やマニフェスト情報を得られる。このため、情報処理装置100は、コンテナビルド設定情報やマニフェスト情報のユーザによる作成作業を削減できる。よって、ユーザは、アプリケーションのコード本体の開発に注力できる。こうして、情報処理装置100は、アプリケーションの開発の効率を向上できる。
【0104】
例えば、情報処理装置100は次の処理を実行する。
情報処理装置100は、システムへの配備対象である第1アプリケーションの種別と第1アプリケーションの開発に用いられるプログラミング言語と第1アプリケーションの開発に用いられるフレームワークとを示す第1情報を取得する。すると、情報処理装置100は、アプリケーションの種別とプログラミング言語とフレームワークとに関連付けられた、当該アプリケーションの配備に用いられる設定情報の複数のテンプレートのうち、第1情報に対応する第1テンプレートを選択する。情報処理装置100は、選択された第1テンプレートに基づいて、第1アプリケーションの配備に用いられる第1設定情報を生成する。
【0105】
これにより、情報処理装置100は、アプリケーションの開発の効率を向上できる。なお、アプリテンプレート生成用設定ファイル121は、第1情報の一例である。情報処理装置100は、所定のサーバコンピュータから、アプリテンプレート生成部120および配備処理部130のプログラム(スクリプト)や管理テーブル111およびマニフェスト設定値管理テーブル112を取得してもよい。
【0106】
また、例えば、複数のテンプレートそれぞれは、該当のシステムによる、アプリケーションに対応するコンテナの配備に用いられるマニフェスト情報のひな形(マニフェスト情報ひな形)を含む。情報処理装置100は、第1設定情報の生成では、第1テンプレートに含まれるマニフェスト情報のひな形を第1情報に基づいて編集することで、第1アプリケーションに対応するマニフェスト情報を生成する。これにより、情報処理装置100は、開発対象の第1アプリケーションに合ったマニフェスト情報を効率的に生成できる。
【0107】
また、情報処理装置100は、マニフェスト情報のひな形の編集では、第1情報に基づいて、マニフェスト情報のひな形に含まれる設定項目に対する設定値を決定し、決定した設定値をマニフェスト情報のひな形に挿入する。これにより、情報処理装置100は、開発対象の第1アプリケーションに合ったマニフェスト情報を効率的に生成できる。
【0108】
また、情報処理装置100は、マニフェスト情報のひな形の編集では、コンテナのイメージの取得元とシステムにおける第1アプリケーションの配備先とを示す第2情報を取得する。情報処理装置100は、第2情報に基づいて、コンテナのイメージの取得元を示す情報と当該システムにおける第1アプリケーションの配備先を示す情報とをマニフェスト情報のひな形に挿入する。これにより、情報処理装置100は、ユーザが用いる第1アプリケーションの開発環境やコンテナの実行環境に合ったマニフェスト情報を効率的に生成できる。アプリテンプレートデプロイ用設定ファイル131は、第2情報の一例である。コンテナイメージレジストリ情報は、コンテナのイメージの取得元を示す情報の一例である。コンテナ実行システム情報は、第1アプリケーションの配備先を示す情報の一例である。
【0109】
また、複数のテンプレートそれぞれは、アプリケーションに対応するコンテナのイメージの生成に用いられるコンテナビルド設定情報を含む。これにより、情報処理装置100は、アプリケーションの開発の効率を向上できる。
【0110】
また、情報処理装置100は、コンテナのイメージの登録先のコンテナイメージ記憶部を示す第3情報を取得する。情報処理装置100は、第1テンプレートに含まれるコンテナビルド設定情報と第1アプリケーションのソースコードとに基づいて、第1アプリケーションに対応するコンテナのイメージを生成する。情報処理装置100は、第3情報で示されるコンテナイメージ記憶部に、生成したコンテナのイメージを登録する。これにより、情報処理装置100は、アプリケーションの開発の効率を向上できる。なお、コンテナイメージレジストリ410は、コンテナイメージ記憶部の一例である。アプリテンプレートデプロイ用設定ファイル131は、第3情報の一例である。コンテナイメージレジストリ情報は、コンテナのイメージの登録先のコンテナイメージ記憶部を示す情報の一例である。
【0111】
更に、複数のテンプレートそれぞれは、アプリケーションの種別とプログラミング言語とフレームワークとに対応する、アプリケーションのソースコードのひな形を示す情報を含む。情報処理装置100は、第1情報および複数のテンプレートに基づいて、第1アプリケーションのソースコードのひな形を出力する。これにより、情報処理装置100は、アプリケーションの開発の効率を向上できる。
【0112】
なお、第1の実施の形態の情報処理は、処理部12にプログラムを実行させることで実現できる。また、第2の実施の形態の情報処理は、CPU101にプログラムを実行させることで実現できる。プログラムは、コンピュータ読み取り可能な記録媒体113に記録できる。
【0113】
例えば、プログラムを記録した記録媒体113を配布することで、プログラムを流通させることができる。また、プログラムを他のコンピュータに格納しておき、ネットワーク経由でプログラムを配布してもよい。コンピュータは、例えば、記録媒体113に記録されたプログラムまたは他のコンピュータから受信したプログラムを、RAM102やHDD103などの記憶装置に格納し(インストールし)、当該記憶装置からプログラムを読み込んで実行してもよい。
【符号の説明】
【0114】
10 情報処理装置
11 記憶部
12 処理部
20 第1情報
30 テンプレート管理情報
40 第1設定情報
41 コンテナビルド設定情報
42 マニフェスト情報