IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 富士通株式会社の特許一覧

特開2024-130404デプロイ支援装置、デプロイ支援方法、およびデプロイ支援プログラム
<>
  • 特開-デプロイ支援装置、デプロイ支援方法、およびデプロイ支援プログラム 図1
  • 特開-デプロイ支援装置、デプロイ支援方法、およびデプロイ支援プログラム 図2
  • 特開-デプロイ支援装置、デプロイ支援方法、およびデプロイ支援プログラム 図3
  • 特開-デプロイ支援装置、デプロイ支援方法、およびデプロイ支援プログラム 図4
  • 特開-デプロイ支援装置、デプロイ支援方法、およびデプロイ支援プログラム 図5
  • 特開-デプロイ支援装置、デプロイ支援方法、およびデプロイ支援プログラム 図6
  • 特開-デプロイ支援装置、デプロイ支援方法、およびデプロイ支援プログラム 図7
  • 特開-デプロイ支援装置、デプロイ支援方法、およびデプロイ支援プログラム 図8
  • 特開-デプロイ支援装置、デプロイ支援方法、およびデプロイ支援プログラム 図9
  • 特開-デプロイ支援装置、デプロイ支援方法、およびデプロイ支援プログラム 図10
  • 特開-デプロイ支援装置、デプロイ支援方法、およびデプロイ支援プログラム 図11
  • 特開-デプロイ支援装置、デプロイ支援方法、およびデプロイ支援プログラム 図12
  • 特開-デプロイ支援装置、デプロイ支援方法、およびデプロイ支援プログラム 図13
  • 特開-デプロイ支援装置、デプロイ支援方法、およびデプロイ支援プログラム 図14
  • 特開-デプロイ支援装置、デプロイ支援方法、およびデプロイ支援プログラム 図15
  • 特開-デプロイ支援装置、デプロイ支援方法、およびデプロイ支援プログラム 図16
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024130404
(43)【公開日】2024-09-30
(54)【発明の名称】デプロイ支援装置、デプロイ支援方法、およびデプロイ支援プログラム
(51)【国際特許分類】
   G06F 9/54 20060101AFI20240920BHJP
【FI】
G06F9/54 F
【審査請求】未請求
【請求項の数】5
【出願形態】OL
(21)【出願番号】P 2023040092
(22)【出願日】2023-03-14
(71)【出願人】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】100104190
【弁理士】
【氏名又は名称】酒井 昭徳
(72)【発明者】
【氏名】久保 泰奈
(72)【発明者】
【氏名】大三島 仙知
(57)【要約】
【課題】アプリケーションをクラウドに配置し易くすること。
【解決手段】デプロイ支援装置100は、アプリケーション121のコード122に基づいて、アプリケーション121が利用する第1のサービス111aを特定する。デプロイ支援装置100は、クラウド110と通信し、特定した第1のサービス111aを利用可能にする環境情報130を取得する。デプロイ支援装置100は、取得した環境情報130に基づいて、クラウド110上に、アプリケーション121と、特定した第1のサービス111aとの通信を中継する機能141を有する第2のコンテナ140を作成する。
【選択図】図1
【特許請求の範囲】
【請求項1】
アプリケーションのコードを取得し、
取得した前記コードに基づいて、前記アプリケーションを配置するクラウドが提供するサービスのうち、前記アプリケーションが利用するサービスを特定し、
前記クラウドと通信し、特定した前記サービスを利用可能にする環境情報を取得し、
取得した前記環境情報に基づいて、前記クラウド上に、特定した前記サービスと前記アプリケーションとの通信を中継するコンテナを作成する、
制御部を有することを特徴とするデプロイ支援装置。
【請求項2】
前記制御部は、
前記クラウドの認証情報を取得し、
取得した前記認証情報を用いて前記クラウドと通信し、特定した前記サービスを利用可能にする環境情報を取得する、ことを特徴とする請求項1に記載のデプロイ支援装置。
【請求項3】
前記制御部は、
取得した前記環境情報に基づいて、前記クラウド上に、前記コンテナを実現するリソースを確保し、前記コンテナを作成する、ことを特徴とする請求項1または2に記載のデプロイ支援装置。
【請求項4】
アプリケーションのコードを取得し、
取得した前記コードに基づいて、前記アプリケーションを配置するクラウドが提供するサービスのうち、前記アプリケーションが利用するサービスを特定し、
前記クラウドと通信し、特定した前記サービスを利用可能にする環境情報を取得し、
取得した前記環境情報に基づいて、前記クラウド上に、特定した前記サービスと前記アプリケーションとの通信を中継するコンテナを作成する、
処理をコンピュータが実行することを特徴とするデプロイ支援方法。
【請求項5】
アプリケーションのコードを取得し、
取得した前記コードに基づいて、前記アプリケーションを配置するクラウドが提供するサービスのうち、前記アプリケーションが利用するサービスを特定し、
前記クラウドと通信し、特定した前記サービスを利用可能にする環境情報を取得し、
取得した前記環境情報に基づいて、前記クラウド上に、特定した前記サービスと前記アプリケーションとの通信を中継するコンテナを作成する、
処理をコンピュータに実行させることを特徴とするデプロイ支援プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、デプロイ支援装置、デプロイ支援方法、およびデプロイ支援プログラムに関する。
【背景技術】
【0002】
従来、アプリケーションを搭載したコンテナを、複数のクラウドにデプロイすることがある。アプリケーションは、例えば、クラウドに用意された所定のサービスを利用して動作する。所定のサービスは、例えば、ストレージサービスなどである。
【0003】
先行技術としては、例えば、コンテナを実行する際の実行環境の選択方法と属性情報とが予め関連付けられた定義情報と、コンテナイメージに付与された属性情報とに基づいて、コンテナの実行環境を決定するものがある。また、例えば、情報処理装置を識別する識別情報と、テナントを識別するテナント情報とを関連付ける機器登録を、管理サーバに要求する技術がある。また、例えば、第1のサーバの仮想コンポーネントを第2のサーバにデプロイする技術がある。また、例えば、アプリケーション構成パラメータと、アプリケーションモデル技術とに基づいて、クラウドで目標アプリケーションモデルを構築する技術がある。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2022-029930号公報
【特許文献2】特開2021-051708号公報
【特許文献3】特開2022-092310号公報
【特許文献4】特開2022-022077号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、従来技術では、アプリケーションが、それぞれのクラウドに用意された所定のサービスを利用可能にすることが難しい。例えば、複数のクラウドが、それぞれ異なるAPI(Application Programming Interface)を有する場合が考えられる。この場合、クラウドごとに、当該クラウドにデプロイするコンテナに搭載するアプリケーションは、異なるAPIを利用することになり、アプリケーションのコードを、それぞれのクラウドに合わせて修正することになる。
【0006】
1つの側面では、本発明は、アプリケーションをクラウドに配置し易くすることを目的とする。
【課題を解決するための手段】
【0007】
1つの実施態様によれば、アプリケーションのコードを取得し、取得した前記コードに基づいて、前記アプリケーションを配置するクラウドが提供するサービスのうち、前記アプリケーションが利用するサービスを特定し、前記クラウドと通信し、特定した前記サービスを利用可能にする環境情報を取得し、取得した前記環境情報に基づいて、前記クラウド上に、特定した前記サービスと前記アプリケーションとの通信を中継するコンテナを作成するデプロイ支援装置、デプロイ支援方法、およびデプロイ支援プログラムが提案される。
【発明の効果】
【0008】
一態様によれば、アプリケーションをクラウドに配置し易くすることが可能になる。
【図面の簡単な説明】
【0009】
図1図1は、実施の形態にかかるデプロイ支援方法の一実施例を示す説明図である。
図2図2は、情報処理システム200の一例を示す説明図である。
図3図3は、デプロイ支援装置100のハードウェア構成例を示すブロック図である。
図4図4は、デプロイ支援装置100の機能的構成例を示すブロック図である。
図5図5は、デプロイ支援装置100の動作の流れを示す説明図である。
図6図6は、デプロイ支援装置100の動作の一例を示す説明図(その1)である。
図7図7は、デプロイ支援装置100の動作の一例を示す説明図(その2)である。
図8図8は、デプロイ支援装置100の動作の一例を示す説明図(その3)である。
図9図9は、デプロイ支援装置100の動作の一例を示す説明図(その4)である。
図10図10は、デプロイ支援装置100の動作の一例を示す説明図(その5)である。
図11図11は、マニフェストファイルを更新する具体例を示す説明図(その1)である。
図12図12は、マニフェストファイルを更新する具体例を示す説明図(その2)である。
図13図13は、マニフェストファイルを更新する具体例を示す説明図(その3)である。
図14図14は、マニフェストファイルを更新する具体例を示す説明図(その4)である。
図15図15は、マニフェストファイルを更新する具体例を示す説明図(その5)である。
図16図16は、デプロイ処理手順の一例を示すフローチャートである。
【発明を実施するための形態】
【0010】
以下に、図面を参照して、本発明にかかるデプロイ支援装置、デプロイ支援方法、およびデプロイ支援プログラムの実施の形態を詳細に説明する。
【0011】
(実施の形態にかかるデプロイ支援方法の一実施例)
図1は、実施の形態にかかるデプロイ支援方法の一実施例を示す説明図である。デプロイ支援装置100は、アプリケーションをクラウドに配置し易くするためのコンピュータである。デプロイ支援装置100は、例えば、サーバ、または、PC(Personal Computer)などである。
【0012】
配置は、例えば、アプリケーションを搭載したコンテナをクラウドにデプロイすることである。コンテナは、実行環境である。配置は、例えば、アプリケーション自体をクラウドにデプロイすることであってもよい。
【0013】
ここで、アプリケーションを搭載したコンテナを、複数のクラウドのそれぞれのクラウドにデプロイすることが望まれる場合がある。アプリケーションは、例えば、クラウドに用意された所定のサービスを利用して動作する。所定のサービスは、例えば、ストレージサービスなどである。
【0014】
しかしながら、アプリケーションが、それぞれのクラウドに用意された所定のサービスを利用可能にすることが難しいという問題がある。
【0015】
例えば、クラウドごとに、アプリケーションが当該クラウドに用意された所定のサービスを利用する方法が異なることがある。具体的には、複数のクラウドは、それぞれ異なるAPIを有する場合がある。具体的には、複数のクラウドは、それぞれ異なる認証方法を有する場合がある。
【0016】
このため、従来では、アプリケーションを搭載したコンテナを、それぞれのクラウドにデプロイする前に、アプリケーションを管理する管理者は、同一のアプリケーションを実現する、クラウドごとに異なるコードを用意することになる。例えば、管理者は、アプリケーションを実現する、元となるコードを、それぞれのクラウドに合わせて修正することにより、同一のアプリケーションを実現する、クラウドごとに異なるコードを用意することになる。従って、管理者にかかる作業負担の増大化を招くことになる。また、コードを修正するコンピュータにかかる処理負担の増大化を招くことになる。
【0017】
また、従来では、アプリケーションを搭載したコンテナを、それぞれのクラウドにデプロイする前に、管理者は、クラウドごとに異なるコードに基づいて、アプリケーションを搭載した、クラウドごとに異なるコンテナのイメージを用意することになる。従って、管理者にかかる作業負担の増大化を招くことになる。また、コンテナのイメージを生成するコンピュータにかかる処理負担の増大化を招くことになる。
【0018】
そこで、本実施の形態では、アプリケーションを搭載したコンテナをクラウドにデプロイし易くすることができるデプロイ支援方法について説明する。
【0019】
図1において、クラウド110が存在する。デプロイ支援装置100は、クラウド110にアクセス可能である。クラウド110は、例えば、1以上のサービス111を提供する。サービス111は、例えば、ストレージサービスなどである。
【0020】
ここで、クラウド110が提供する1以上のサービス111のうち、第1のサービス111aを利用するアプリケーション121を搭載した第1のコンテナ120を、クラウド110上にデプロイすることが望まれる。デプロイ支援装置100は、例えば、アプリケーション121を管理する管理者によって利用される。
【0021】
(1-1)デプロイ支援装置100は、アプリケーション121のコード122を取得する。デプロイ支援装置100は、例えば、アプリケーション121のコード122を、他のコンピュータから受信することにより取得する。コード122は、例えば、アプリケーション121の機能をプログラム言語で記述したデータである。
【0022】
デプロイ支援装置100は、例えば、利用者の操作入力に基づき、アプリケーション121のコード122の入力を受け付けることにより、アプリケーション121のコード122を取得してもよい。利用者は、例えば、アプリケーション121を管理する管理者である。
【0023】
(1-2)デプロイ支援装置100は、取得したコード122に基づいて、第1のコンテナ120をデプロイするクラウド110が提供するサービス111のうち、アプリケーション121が利用する第1のサービス111aを特定する。これにより、デプロイ支援装置100は、クラウド110上で、1以上のサービス111のうち、アプリケーション121がいずれのサービス111を利用可能にすることが望まれるのかを特定することができる。
【0024】
(1-3)デプロイ支援装置100は、クラウド110と通信し、特定した第1のサービス111aを利用可能にする環境情報130を取得する。環境情報130は、例えば、クラウド110が有するAPIなどに関する情報である。環境情報130は、例えば、アプリケーション121が第1のサービス111を利用可能にするために用いられる情報である。これにより、デプロイ支援装置100は、アプリケーション121が第1のサービス111を利用可能にする指針を得ることができる。
【0025】
(1-4)デプロイ支援装置100は、取得した環境情報130に基づいて、クラウド110上に、アプリケーション121と、特定した第1のサービス111aとの通信を中継する機能141を有する第2のコンテナ140を作成する。デプロイ支援装置100は、例えば、クラウド110上に、第2のコンテナ140をデプロイする。
【0026】
これにより、デプロイ支援装置100は、クラウド110上に、アプリケーション121を搭載した第1のコンテナ120をデプロイした場合に、アプリケーション121が、第2のコンテナ140を介して、第1のサービス111aを利用可能にすることができる。
【0027】
このため、デプロイ支援装置100は、クラウド110上に、アプリケーション121を搭載した第1のコンテナ120をデプロイする前に、アプリケーション121のコード122を修正せずに済ませることができる。そして、デプロイ支援装置100は、クラウド110上に、アプリケーション121を搭載した第1のコンテナ120をデプロイし易くすることができ、アプリケーション121を活用し易くすることができる。また、デプロイ支援装置100は、管理者にかかる作業負担の低減化を図ることができる。
【0028】
ここでは、説明の簡略化のため、クラウド110が1つ存在する場合について説明したが、これに限らない。例えば、クラウド110が複数存在する場合があってもよい。この場合、デプロイ支援装置100が、例えば、クラウド110ごとに異なる第2のコンテナ140を作成することが考えられる。これにより、デプロイ支援装置100は、複数のクラウド110のそれぞれのクラウド110上に、アプリケーション121を搭載した第1のコンテナ120をデプロイし易くすることができる。
【0029】
ここでは、説明の簡略化のため、アプリケーション121が1つ存在する場合について説明したが、これに限らない。例えば、アプリケーション121が複数存在する場合があってもよい。具体的には、2以上のアプリケーション121を搭載した1つの第1のコンテナ120を、クラウド110上にデプロイすることが望まれる場合があってもよい。この場合、デプロイ支援装置100が、例えば、1つの第1のコンテナ120に搭載した2以上のアプリケーション121に対応する1つの第2のコンテナ140を作成することが考えられる。これにより、デプロイ支援装置100は、クラウド110上に、アプリケーション121を搭載した第1のコンテナ120をデプロイし易くすることができる。
【0030】
また、具体的には、それぞれ異なるアプリケーション121を搭載した複数の第1のコンテナ120を、クラウド110上にデプロイすることが望まれる場合があってもよい。この場合、デプロイ支援装置100が、例えば、第1のコンテナ120ごとに異なる第2のコンテナ140を作成することが考えられる。また、デプロイ支援装置100が、例えば、それぞれ異なるアプリケーション121に対応する1つの第2のコンテナ140を作成することが考えられる。これにより、クラウド110上に、それぞれ異なるアプリケーション121を搭載した複数の第1のコンテナ120をデプロイし易くすることができる。
【0031】
ここでは、説明の簡略化のため、アプリケーション121が、クラウド110が提供する1以上のサービス111のうち、1つのサービス111を利用する場合について説明したが、これに限らない。例えば、アプリケーション121が、クラウド110が提供する1以上のサービス111のうち、2以上のサービス111を利用する場合があってもよい。この場合、デプロイ支援装置100が、例えば、2以上のサービス111を利用するアプリケーション121に対応する1つの第2のコンテナ140を作成することが考えられる。これにより、デプロイ支援装置100は、クラウド110上に、2以上のアプリケーション121を搭載した第1のコンテナ120をデプロイし易くすることができる。
【0032】
ここでは、デプロイ支援装置100が、クラウド110上に、アプリケーション121を搭載した第1のコンテナ120をデプロイする場合について説明したが、これに限らない。例えば、デプロイ支援装置100が、クラウド110上に、アプリケーション121自体をデプロイする場合があってもよい。
【0033】
ここでは、デプロイ支援装置100としての機能を、単独のコンピュータで実現する場合について説明したが、これに限らない。例えば、デプロイ支援装置100としての機能を、複数のコンピュータの協働で実現する場合があってもよい。具体的には、クラウド上に、デプロイ支援装置100としての機能が実現される場合があってもよい。
【0034】
(情報処理システム200の一例)
次に、図2を用いて、図1に示したデプロイ支援装置100を適用した、情報処理システム200の一例について説明する。
【0035】
図2は、情報処理システム200の一例を示す説明図である。図2において、情報処理システム200は、デプロイ支援装置100と、情報蓄積装置201と、1以上のクラウド環境220と、1以上のクライアント装置203とを含む。クラウド環境220は、例えば、1以上の演算装置202を含む。
【0036】
情報処理システム200において、デプロイ支援装置100と情報蓄積装置201とは、有線または無線のネットワーク210を介して接続される。ネットワーク210は、例えば、LAN(Local Area Network)、WAN(Wide Area Network)、インターネットなどである。
【0037】
また、情報処理システム200において、デプロイ支援装置100と演算装置202とは、有線または無線のネットワーク210を介して接続される。また、情報処理システム200において、デプロイ支援装置100とクライアント装置203とは、有線または無線のネットワーク210を介して接続される。また、情報処理システム200において、情報蓄積装置201とクライアント装置203とは、有線または無線のネットワーク210を介して接続される。また、情報処理システム200において、演算装置202とクライアント装置203とは、有線または無線のネットワーク210を介して接続される。
【0038】
デプロイ支援装置100は、アプリケーションを搭載したアプリケーションコンテナをクラウド環境220上にデプロイし易くするコンピュータである。デプロイ支援装置100は、第1のアプリケーションを搭載したアプリケーションコンテナをクラウド環境220上にデプロイすることを要求する処理依頼を、クライアント装置203から受信する。
【0039】
処理依頼は、例えば、第1のアプリケーションを指定し、1以上のクラウド環境220のうち、指定の第1のアプリケーションを搭載したアプリケーションコンテナをデプロイするクラウド環境220を指定する。処理依頼は、例えば、第1のアプリケーションのコードを記憶するリポジトリの認証情報と、指定のクラウド環境220の認証情報とを含む。
【0040】
デプロイ支援装置100は、処理依頼に基づいて、指定のクラウド環境220を特定する。デプロイ支援装置100は、処理依頼に基づいて、第1のアプリケーションのコードを記憶するリポジトリの認証情報と、指定のクラウド環境220の認証情報とを取得する。
【0041】
デプロイ支援装置100は、取得したリポジトリの認証情報に基づいて、情報蓄積装置201が実現するリポジトリにアクセスし、第1のアプリケーションのコードを取得する。デプロイ支援装置100は、取得したコードを解析することにより、クラウド環境220が提供する1以上のサービスのうち、第1のアプリケーションが利用する第1のサービスを特定する。
【0042】
デプロイ支援装置100は、取得したクラウド環境220の認証情報に基づいて、クラウド環境220上にアクセスし、特定した第1のサービスを利用可能にする環境情報を取得する。環境情報は、例えば、第1のアプリケーションが第1のサービスを利用可能にする際に用いられる情報である。環境情報は、例えば、クラウド環境220が有するAPIなどに関する情報である。
【0043】
デプロイ支援装置100は、取得した環境情報に基づいて、第1のアプリケーションと、特定した第1のサービスとの通信を中継する機能を有する連携用コンテナを、クラウド環境220上に作成する。デプロイ支援装置100は、例えば、第1のアプリケーションを搭載したアプリケーションコンテナをクラウド環境220上にデプロイ可能にするマニフェストファイルを取得する。デプロイ支援装置100は、具体的には、マニフェストファイルを、クライアント装置203から受信することにより取得する。デプロイ支援装置100は、例えば、取得した環境情報に基づいて、連携用コンテナをクラウド環境220上にデプロイ可能にするよう、取得したマニフェストファイルを更新する。
【0044】
デプロイ支援装置100は、更新したマニフェストファイルに基づいて、第1のアプリケーションを搭載したアプリケーションコンテナのイメージを作成する。デプロイ支援装置100は、作成したアプリケーションコンテナのイメージに基づいて、第1のアプリケーションを搭載したアプリケーションコンテナをクラウド環境220上にデプロイする。デプロイ支援装置100は、更新したマニフェストファイルに基づいて、連携用コンテナのイメージを作成する。デプロイ支援装置100は、作成した連携用コンテナのイメージに基づいて、連携用コンテナをクラウド環境220上にデプロイする。
【0045】
これにより、デプロイ支援装置100は、第1のアプリケーションが第1のサービスを利用し易くすることができる。デプロイ支援装置100は、第1のアプリケーションを搭載したアプリケーションコンテナを、クラウド環境220上にデプロイし易くすることができる。
【0046】
デプロイ支援装置100は、第1のアプリケーションを搭載したアプリケーションコンテナをデプロイしたことを示し、第1のアプリケーションが利用可能であることを示す通知を、クライアント装置203に送信する。これにより、デプロイ支援装置100は、クライアント装置203で、第1のアプリケーションを利用可能にすることができる。デプロイ支援装置100は、例えば、サーバ、または、PCなどである。
【0047】
情報蓄積装置201は、ファイルを管理するリポジトリを実現するコンピュータである。ファイルは、例えば、アプリケーションのコードである。情報蓄積装置201は、アプリケーションのコードを取得し、リポジトリに記憶する。情報蓄積装置201は、例えば、利用者の操作入力に基づき、アプリケーションのコードの入力を受け付け、入力を受け付けたアプリケーションのコードを、リポジトリに記憶する。情報蓄積装置201は、例えば、アプリケーションのコードを、クライアント装置203から受信し、リポジトリに記憶する。
【0048】
情報蓄積装置201は、リポジトリに記憶したアプリケーションのコードを、デプロイ支援装置100に提供する。情報蓄積装置201は、例えば、サーバ、または、PCなどである。
【0049】
演算装置202は、クラウド環境220を形成するリソースを有するコンピュータである。クラウド環境220は、例えば、1以上のサービスを提供する。演算装置202は、例えば、クラウド環境220が提供するサービスを実現する。クラウド環境220は、提供するサービスを利用可能にする環境情報を、デプロイ支援装置100に送信する。クラウド環境220は、サービスを利用する外部とのやり取りを制御するAPIを有する。
【0050】
クラウド環境220は、コンテナを実行する。演算装置202は、例えば、コンテナを実現するリソースとなる。演算装置202は、例えば、アプリケーションコンテナを実現するリソースとなる。演算装置202は、例えば、連携用コンテナを実現するリソースとなる。演算装置202は、例えば、サーバ、または、PCなどである。
【0051】
クライアント装置203は、クラウド環境220が提供するアプリケーションを利用するコンピュータである。クライアント装置203は、アプリケーションを利用するクライアントによって利用される。クライアント装置203は、例えば、利用者の操作入力に基づき、アプリケーションのコードを、情報蓄積装置201に送信してもよい。
【0052】
クライアント装置203は、アプリケーションを搭載したコンテナをクラウド環境220にデプロイすることを要求する処理依頼を生成する。クライアント装置203は、例えば、利用者の操作入力に基づき、第1のアプリケーションの指定と、第1のアプリケーションを搭載したアプリケーションコンテナをデプロイするクラウド環境220の指定とを受け付ける。クライアント装置203は、例えば、利用者の操作入力に基づき、リポジトリの認証情報の入力と、指定のクラウド環境220の認証情報の入力とを受け付ける。クライアント装置203は、例えば、クラウド環境220を指定し、入力を受け付けたリポジトリの認証情報と、入力を受け付けた指定のクラウド環境220の認証情報とを含む処理依頼を生成する。
【0053】
クライアント装置203は、生成した処理依頼を、デプロイ支援装置100に送信する。クライアント装置203は、利用者の操作入力に基づき、第1のアプリケーションを搭載したアプリケーションコンテナをクラウド環境220上にデプロイ可能にするマニフェストファイルを生成し、デプロイ支援装置100に送信する。クライアント装置203は、処理依頼を送信した後、第1のアプリケーションが利用可能であることを示す通知を、デプロイ支援装置100から受信する。クライアント装置203は、通知を受信した後、第1のアプリケーションを利用する。クライアント装置203は、例えば、PC、タブレット端末、または、スマートフォンなどである。
【0054】
ここでは、デプロイ支援装置100が、情報蓄積装置201とは異なる装置である場合について説明したが、これに限らない。例えば、デプロイ支援装置100が、情報蓄積装置201としての機能を有し、情報蓄積装置201としても動作する場合があってもよい。
【0055】
ここでは、デプロイ支援装置100が、演算装置202とは異なる装置である場合について説明したが、これに限らない。例えば、デプロイ支援装置100が、演算装置202としての機能を有し、演算装置202としても動作する場合があってもよい。
【0056】
ここでは、デプロイ支援装置100が、クライアント装置203とは異なる装置である場合について説明したが、これに限らない。例えば、デプロイ支援装置100が、クライアント装置203としての機能を有し、クライアント装置203としても動作する場合があってもよい。
【0057】
(デプロイ支援装置100のハードウェア構成例)
次に、図3を用いて、デプロイ支援装置100のハードウェア構成例について説明する。
【0058】
図3は、デプロイ支援装置100のハードウェア構成例を示すブロック図である。図3において、デプロイ支援装置100は、CPU(Central Processing Unit)301と、メモリ302と、ネットワークI/F(Interface)303と、記録媒体I/F304と、記録媒体305とを有する。また、各構成部は、バス300によってそれぞれ接続される。
【0059】
ここで、CPU301は、デプロイ支援装置100の全体の制御を司る。メモリ302は、例えば、ROM(Read Only Memory)、RAM(Random Access Memory)およびフラッシュROMなどを有する。具体的には、例えば、フラッシュROMやROMが各種プログラムを記憶し、RAMがCPU301のワークエリアとして使用される。メモリ302に記憶されるプログラムは、CPU301にロードされることにより、コーディングされている処理をCPU301に実行させる。
【0060】
ネットワークI/F303は、通信回線を通じてネットワーク210に接続され、ネットワーク210を介して他のコンピュータに接続される。そして、ネットワークI/F303は、ネットワーク210と内部のインターフェースを司り、他のコンピュータからのデータの入出力を制御する。ネットワークI/F303は、例えば、モデムやLANアダプタなどである。
【0061】
記録媒体I/F304は、CPU301の制御に従って記録媒体305に対するデータのリード/ライトを制御する。記録媒体I/F304は、例えば、ディスクドライブ、SSD(Solid State Drive)、USB(Universal Serial Bus)ポートなどである。記録媒体305は、記録媒体I/F304の制御で書き込まれたデータを記憶する不揮発メモリである。記録媒体305は、例えば、ディスク、半導体メモリ、USBメモリなどである。記録媒体305は、デプロイ支援装置100から着脱可能であってもよい。
【0062】
デプロイ支援装置100は、上述した構成部の他、例えば、キーボード、マウス、ディスプレイ、プリンタ、スキャナ、マイク、スピーカーなどを有してもよい。また、デプロイ支援装置100は、記録媒体I/F304や記録媒体305を複数有していてもよい。また、デプロイ支援装置100は、記録媒体I/F304や記録媒体305を有していなくてもよい。
【0063】
(情報蓄積装置201のハードウェア構成例)
情報蓄積装置201のハードウェア構成例は、具体的には、図3に示したデプロイ支援装置100のハードウェア構成例と同様であるため、説明を省略する。
【0064】
(演算装置202のハードウェア構成例)
演算装置202のハードウェア構成例は、具体的には、図3に示したデプロイ支援装置100のハードウェア構成例と同様であるため、説明を省略する。
【0065】
(クライアント装置203のハードウェア構成例)
クライアント装置203のハードウェア構成例は、具体的には、図3に示したデプロイ支援装置100のハードウェア構成例と同様であるため、説明を省略する。
【0066】
(デプロイ支援装置100の機能的構成例)
次に、図4を用いて、デプロイ支援装置100の機能的構成例について説明する。
【0067】
図4は、デプロイ支援装置100の機能的構成例を示すブロック図である。デプロイ支援装置100は、記憶部400と、第1取得部401と、第2取得部402と、解析部403と、第3取得部404と、作成部405と、出力部406とを含む。
【0068】
記憶部400は、例えば、図3に示したメモリ302や記録媒体305などの記憶領域によって実現される。以下では、記憶部400が、デプロイ支援装置100に含まれる場合について説明するが、これに限らない。例えば、記憶部400が、デプロイ支援装置100とは異なる装置に含まれ、記憶部400の記憶内容がデプロイ支援装置100から参照可能である場合があってもよい。
【0069】
第1取得部401~出力部406は、制御部の一例として機能する。第1取得部401~出力部406は、具体的には、例えば、図3に示したメモリ302や記録媒体305などの記憶領域に記憶されたプログラムをCPU301に実行させることにより、または、ネットワークI/F303により、その機能を実現する。各機能部の処理結果は、例えば、図3に示したメモリ302や記録媒体305などの記憶領域に記憶される。
【0070】
記憶部400は、各機能部の処理において参照され、または更新される各種情報を記憶する。記憶部400は、例えば、第1のアプリケーションを搭載した第1のアプリケーションコンテナを指定のクラウド環境220にデプロイすることを要求する処理依頼を記憶する。処理依頼は、第1のアプリケーションを指定し、第1のアプリケーションを搭載した第1のアプリケーションコンテナをデプロイするクラウド環境220を指定する。処理依頼は、例えば、第1取得部401によって取得される。
【0071】
記憶部400は、例えば、アプリケーションのコードを記憶する外部の記憶装置に関する認証情報を記憶する。コードは、アプリケーションの機能をプログラム言語で記述したデータである。外部の記憶装置は、例えば、情報蓄積装置201などである。記憶部400は、具体的には、第1のアプリケーションのコードを記憶する外部の記憶装置に関する認証情報を記憶する。外部の記憶装置に関する認証情報は、例えば、第1取得部401によって取得される。外部の記憶装置に関する認証情報は、例えば、処理依頼に含まれていてもよい。
【0072】
記憶部400は、例えば、アプリケーションを搭載したアプリケーションコンテナをデプロイするクラウド環境220に関する認証情報を記憶する。記憶部400は、具体的には、第1のアプリケーションを搭載した第1のアプリケーションコンテナをデプロイする指定のコンテナ環境に関する認証情報を記憶する。クラウド環境220に関する認証情報は、例えば、第1取得部401によって取得される。クラウド環境220に関する認証情報は、例えば、処理依頼に含まれていてもよい。
【0073】
記憶部400は、例えば、アプリケーションのコードを記憶する。記憶部400は、具体的には、第1のアプリケーションのコードを記憶する。アプリケーションのコードは、例えば、第2取得部402によって取得される。
【0074】
記憶部400は、例えば、クラウド環境220が提供する1以上のサービスのうち、アプリケーションが利用するサービスを記憶する。記憶部400は、具体的には、指定のクラウド環境220が提供する1以上のサービスのうち、第1のアプリケーションが利用する第1のサービスを記憶する。サービスは、例えば、解析部403によって特定される。
【0075】
記憶部400は、例えば、サービスを利用可能にする環境情報を記憶する。環境情報は、例えば、アプリケーションがサービスを利用可能にする際に用いられる情報である。環境情報は、例えば、クラウド環境220が有するAPIなどに関する情報である。記憶部400は、具体的には、第1のサービスを利用可能にする環境情報を記憶する。環境情報は、例えば、第3取得部404によって取得される。
【0076】
記憶部400は、アプリケーションが利用するライブラリと、クラウド環境220が提供する1以上のサービスのうち、当該ライブラリに対応するサービスとの対応関係を表す対応情報を記憶する。対応情報は、例えば、図7を用いて後述する対応関係管理テーブル700のレコードである。
【0077】
第1取得部401は、各機能部の処理に用いられる各種情報を取得する。第1取得部401は、取得した各種情報を、記憶部400に記憶し、または、各機能部に出力する。また、第1取得部401は、記憶部400に記憶しておいた各種情報を、各機能部に出力してもよい。第1取得部401は、例えば、利用者の操作入力に基づき、各種情報を取得する。第1取得部401は、例えば、デプロイ支援装置100とは異なる装置から、各種情報を受信してもよい。
【0078】
第1取得部401は、例えば、第1のアプリケーションを搭載した第1のアプリケーションコンテナを指定のクラウド環境220にデプロイすることを要求する処理依頼を取得する。処理依頼は、第1のアプリケーションを指定し、第1のアプリケーションを搭載した第1のアプリケーションコンテナをデプロイするクラウド環境220を指定する。
【0079】
第1取得部401は、具体的には、処理依頼を、外部のコンピュータから受信することにより取得する。外部のコンピュータは、例えば、クライアント装置203などである。第1取得部401は、具体的には、利用者の操作入力に基づき、処理依頼の入力を受け付けることにより、処理依頼を取得する。
【0080】
第1取得部401は、例えば、第1のアプリケーションのコードを記憶する外部の記憶装置に関する認証情報を取得する。第1取得部401は、具体的には、外部の記憶装置に関する認証情報を、外部のコンピュータから受信することにより取得する。外部のコンピュータは、例えば、クライアント装置203などである。
【0081】
第1取得部401は、具体的には、利用者の操作入力に基づき、外部の記憶装置に関する認証情報の入力を受け付けることにより、外部の記憶装置に関する認証情報を取得してもよい。
【0082】
外部の記憶装置に関する認証情報は、例えば、処理依頼に含まれる場合があってもよい。この場合、第1取得部401は、具体的には、外部の記憶装置に関する認証情報を、取得した処理依頼から抽出することにより取得してもよい。
【0083】
第1取得部401は、例えば、指定のクラウド環境220に関する認証情報を取得する。第1取得部401は、具体的には、指定のクラウド環境220に関する認証情報を、外部のコンピュータから受信することにより取得する。外部のコンピュータは、例えば、クライアント装置203などである。
【0084】
第1取得部401は、具体的には、利用者の操作入力に基づき、指定のクラウド環境220に関する認証情報の入力を受け付けることにより、指定のクラウド環境220に関する認証情報を取得してもよい。
【0085】
指定のクラウド環境220に関する認証情報は、例えば、処理依頼に含まれる場合があってもよい。この場合、第1取得部401は、具体的には、指定のクラウド環境220に関する認証情報を、取得した処理依頼から抽出することにより取得してもよい。
【0086】
第1取得部401は、いずれかの機能部の処理を開始する開始トリガーを受け付けてもよい。開始トリガーは、例えば、利用者による所定の操作入力があったことである。開始トリガーは、例えば、他のコンピュータから、所定の情報を受信したことであってもよい。開始トリガーは、例えば、いずれかの機能部が所定の情報を出力したことであってもよい。第1取得部401は、具体的には、処理依頼を取得したことを、第2取得部402と、解析部403と、第3取得部404と、作成部405との処理を開始する開始トリガーとして受け付ける。
【0087】
第2取得部402は、アプリケーションのコードを取得する。第2取得部402は、例えば、第1取得部401で取得した処理依頼に基づいて、第1のアプリケーションのコードを取得する。第2取得部402は、具体的には、第1取得部401で取得した外部の記憶装置に関する認証情報を利用して外部の記憶装置にアクセスすることにより、第1のアプリケーションのコードを、外部の記憶装置から受信する。これにより、第2取得部402は、第1のアプリケーションを搭載した第1のアプリケーションコンテナを作成する際に用いられる情報を得ることができる。
【0088】
解析部403は、第1取得部401で取得したコードに基づいて、第1のアプリケーションコンテナをデプロイする指定のクラウド環境220が提供する1以上のサービスのうち、第1のアプリケーションが利用する第1のサービスを特定する。
【0089】
解析部403は、例えば、第1取得部401で取得したコードを解析することにより、第1取得部401で取得したコードに含まれる特定のライブラリ管理ファイルを確認し、第1のアプリケーションが利用するライブラリの一覧を取得する。解析部403は、例えば、取得したライブラリの一覧に基づいて、指定のクラウド環境220が提供するサービスのうち、第1のアプリケーションが利用する第1のサービスとして、第1のアプリケーションが利用するライブラリに対応するサービスを特定する。
【0090】
これにより、解析部403は、指定のクラウド環境220が提供する1以上のサービスのうち、第1のアプリケーションがいずれのサービスを、指定のクラウド環境220上で利用可能にすればよいのかを特定することができる。このため、解析部403は、指定のクラウド環境220が提供する1以上のサービスのうち、いずれのサービスを利用可能にする環境情報を、第3取得部404で取得すればよいのかを特定することができる。
【0091】
第3取得部404は、指定のクラウド環境220と通信し、解析部403で特定した第1のサービスを利用可能にする環境情報を取得する。第3取得部404は、例えば、第1取得部401で取得した指定のクラウド環境220に関する認証情報を利用して指定のクラウド環境220にアクセスすることにより、解析部403で特定した第1のサービスを利用可能にする環境情報を取得する。これにより、第3取得部404は、第1のアプリケーションが第1のサービスを利用可能にする際に用いられる情報を得ることができる。
【0092】
作成部405は、第3取得部404で取得した環境情報に基づいて、指定のクラウド環境220上に、第1のアプリケーションと、解析部403で特定した第1のサービスとの通信を中継する機能を有する連携用コンテナを作成する。作成部405は、例えば、第3取得部404で取得した環境情報に基づいて、指定のクラウド環境220上に、連携用コンテナを実現するリソースを確保し、連携用コンテナを作成する。
【0093】
作成部405は、具体的には、連携用コンテナのイメージを生成する。作成部405は、具体的には、指定のクラウド環境220上に、連携用コンテナを実現するリソースを確保する。作成部405は、具体的には、生成した連携用コンテナのイメージに基づいて、確保したリソースを利用して、連携用コンテナを、指定のクラウド環境220上にデプロイする。これにより、作成部405は、第1のアプリケーションを搭載した第1のアプリケーションコンテナを、指定のクラウド環境220上にデプロイし易くすることができる。
【0094】
作成部405は、第2取得部402で取得したコードに基づいて、指定のクラウド環境220上に、第1のアプリケーションを搭載した第1のアプリケーションコンテナを作成する。作成部405は、例えば、第2取得部402で取得したコードに基づいて、指定のクラウド環境220上に、第1のアプリケーションコンテナを実現するリソースを確保し、第1のアプリケーションコンテナを作成する。
【0095】
作成部405は、具体的には、第1のアプリケーションコンテナのイメージを生成する。作成部405は、具体的には、指定のクラウド環境220上に、第1のアプリケーションコンテナを実現するリソースを確保する。作成部405は、具体的には、生成した第1のアプリケーションコンテナのイメージに基づいて、確保したリソースを利用して、第1のアプリケーションコンテナを、指定のクラウド環境220上にデプロイする。これにより、作成部405は、第1のアプリケーションを起動し、第1のアプリケーションを利用可能にすることができる。
【0096】
出力部406は、少なくともいずれかの機能部の処理結果を出力する。出力形式は、例えば、ディスプレイへの表示、プリンタへの印刷出力、ネットワークI/F303による外部装置への送信、または、メモリ302や記録媒体305などの記憶領域への記憶である。これにより、出力部406は、少なくともいずれかの機能部の処理結果を利用者に通知可能にし、デプロイ支援装置100の利便性の向上を図ることができる。
【0097】
出力部406は、例えば、連携用コンテナと、第1のアプリケーションコンテナとを、指定のクラウド環境220上にデプロイしたことを表す通知を出力する。出力部406は、具体的には、連携用コンテナと、第1のアプリケーションコンテナとを、指定のクラウド環境220上にデプロイしたことを表す通知を、利用者が参照可能に出力する。これにより、出力部406は、利用者が、第1のアプリケーションを利用可能であることを把握可能にすることができる。
【0098】
ここでは、デプロイ支援装置100が、第1取得部401と、第2取得部402と、解析部403と、第3取得部404と、作成部405と、出力部406とを含む場合について説明したが、これに限らない。例えば、デプロイ支援装置100が、いずれかの機能を含まない場合があってもよい。具体的には、デプロイ支援装置100が、作成部405を含まず、外部のコンピュータが有する作成部405を利用する場合があってもよい。
【0099】
ここでは、デプロイ支援装置100が、第1のアプリケーションを搭載した第1のアプリケーションコンテナを、指定のクラウド環境220上にデプロイする場合について説明したが、これに限らない。例えば、デプロイ支援装置100が、第1のアプリケーション自体を、指定のクラウド環境220上にデプロイする場合があってもよい。
【0100】
(デプロイ支援装置100の動作の流れ)
次に、図5を用いて、デプロイ支援装置100の動作の流れについて説明する。
【0101】
図5は、デプロイ支援装置100の動作の流れを示す説明図である。図5において、デプロイ支援装置100は、クラウド環境220上にアプリケーション521を搭載したアプリケーションコンテナをデプロイすることを支援するデプロイ支援システム501を実現する。
【0102】
デプロイ支援装置100は、アプリケーション521が利用するライブラリと、クラウド環境220が提供する1以上のサービス522のうち、当該ライブラリに対応するサービス522との対応関係を表す対応関係管理情報を、内部データベース502に記憶する。情報蓄積装置201は、アプリケーション521のコードを記憶するGitリポジトリ511を実現する。
【0103】
(5-1)クライアント装置203は、利用者の操作入力に基づき、いずれかのアプリケーション521の指定と、指定のアプリケーション521を搭載したアプリケーションコンテナをデプロイするクラウド環境220の指定とを受け付ける。
【0104】
クライアント装置203は、利用者の操作入力に基づき、指定のアプリケーション521を記憶するGitリポジトリ511の認証情報の入力と、指定のクラウド環境220の認証情報の入力とを受け付ける。クライアント装置203は、利用者の操作入力に基づき、指定のアプリケーション521を搭載したアプリケーションコンテナをクラウド環境220上にデプロイ可能にする設定ファイルであるマニフェストファイルの入力を受け付ける。
【0105】
クライアント装置203は、指定のアプリケーション521と、指定のクラウド環境220とを示し、Gitリポジトリ511の認証情報と、指定のクラウド環境220の認証情報と、入力を受け付けたマニフェストファイルとを含む処理依頼を生成する。クライアント装置203は、生成した処理依頼を、デプロイ支援装置100に送信する。
【0106】
デプロイ支援装置100は、処理依頼を受信する。デプロイ支援装置100は、受信した処理依頼に基づいて、指定のアプリケーション521と、指定のクラウド環境220とを特定する。デプロイ支援装置100は、受信した処理依頼に基づいて、Gitリポジトリ511の認証情報と、指定のクラウド環境220の認証情報と、指定のアプリケーション521を搭載したアプリケーションコンテナに対応するマニフェストファイルとを取得する。
【0107】
(5-2)デプロイ支援装置100は、取得したGitリポジトリ511の認証情報を利用して、特定した指定のアプリケーション521のコードの問い合わせを、Gitリポジトリ511に送信する。デプロイ支援装置100は、特定した指定のアプリケーション521のコードを、Gitリポジトリ511から受信する。
【0108】
(5-3)デプロイ支援装置100は、取得した指定のアプリケーション521のコードを解析することにより、取得した指定のアプリケーション521のコードに含まれる特定のライブラリ管理ファイルを抽出する。デプロイ支援装置100は、抽出した特定のライブラリ管理ファイルに基づいて、指定のアプリケーション521が利用するライブラリの一覧を取得する。
【0109】
デプロイ支援装置100は、取得したライブラリの一覧と、内部データベース502とに基づいて、指定のクラウド環境220が提供するサービス522のうち、指定のアプリケーション521が利用するライブラリに対応するいずれかのサービス522を特定する。
【0110】
(5-4)デプロイ支援装置100は、取得した指定のクラウド環境220の認証情報を利用して、特定したサービス522の環境情報の問い合わせを、指定のクラウド環境220に送信する。デプロイ支援装置100は、特定したサービス522の環境情報を、指定のクラウド環境220から受信する。
【0111】
(5-5)デプロイ支援装置100は、指定のクラウド環境220上に、アプリケーション521を搭載したアプリケーションコンテナをデプロイする際に用いられるリソースを確保する。デプロイ支援装置100は、指定のクラウド環境220上に、アプリケーション521と特定したサービス522との通信を中継する連携用コンテナ523をデプロイする際に用いられるリソースを確保する。
【0112】
(5-6)デプロイ支援装置100は、受信した環境情報に基づいて、取得したマニフェストファイルを更新する。デプロイ支援装置100は、例えば、環境情報に基づいて、指定のアプリケーション521を搭載したアプリケーションコンテナに加えて、連携用コンテナ523を、指定のクラウド環境220上にデプロイ可能にするよう、マニフェストファイルを更新する。
【0113】
(5-7)デプロイ支援装置100は、更新したマニフェストファイルに基づいて、指定のクラウド環境220上に、指定のアプリケーション521を搭載したアプリケーションコンテナと、連携用コンテナ523とをデプロイする。
【0114】
これにより、デプロイ支援装置100は、指定のクラウド環境220上に、指定のアプリケーション521を搭載したアプリケーションコンテナをデプロイし易くすることができる。デプロイ支援装置100は、指定のクラウド環境220上で、指定のアプリケーション521が正常に動作可能にすることができる。
【0115】
(デプロイ支援装置100の動作の一例)
次に、図6図10を用いて、デプロイ支援装置100の動作の一例について説明する。
【0116】
図6図10は、デプロイ支援装置100の動作の一例を示す説明図である。まず、図6のシーケンス図を用いて、デプロイ支援装置100が、指定のアプリケーション521が利用するサービス522を特定する特定処理の流れについて説明する。特定処理は、例えば、デプロイ支援装置100と、情報蓄積装置201と、クラウド環境220と、クライアント装置203とによって実現される。
【0117】
図6のシーケンス図は、特定処理の流れを示す。図6において、デプロイ支援装置100は、指定のアプリケーション521のコードを記憶するGitリポジトリ511の認証情報と、指定のクラウド環境220の認証情報とを、クライアント装置203から受信する(ステップS601)。指定のクラウド環境220は、指定のアプリケーション521をデプロイするクラウド環境220である。
【0118】
次に、デプロイ支援装置100は、受信したGitリポジトリ511の認証情報に基づいて、指定のアプリケーション521のコードの問い合わせを、Gitリポジトリ511を実現する情報蓄積装置201に送信する(ステップS602)。デプロイ支援装置100は、問い合わせに対応する指定のアプリケーション521のコードを、Gitリポジトリ511を実現する情報蓄積装置201から取得する(ステップS603)。
【0119】
次に、デプロイ支援装置100は、取得した指定のアプリケーション521のコードを解析することにより、指定のアプリケーション521のコードの言語を特定する(ステップS604)。次に、デプロイ支援装置100は、特定した言語に基づいて、取得した指定のアプリケーション521のコードの中から、特定のライブラリ管理ファイルを確認し、指定のアプリケーション521が利用するライブラリの一覧を取得する(ステップS605)。
【0120】
また、デプロイ支援装置100は、内部データベース502から、対応関係管理テーブル700の記憶内容を検索する(ステップS606)。デプロイ支援装置100は、検索した結果、対応関係管理テーブル700の記憶内容を取得し、ライブラリと、当該ライブラリに対応する、指定のクラウド環境220が提供するいずれかのサービスとの対応関係を特定する(ステップS607)。ここで、図7の説明に移行し、対応関係管理テーブル700の一例について説明する。
【0121】
図7は、対応関係管理テーブル700の記憶内容の一例を示す。対応関係管理テーブル700は、例えば、図3に示したデプロイ支援装置100のメモリ302や記録媒体305などの記憶領域により実現される。
【0122】
図7に示すように、対応関係管理テーブル700は、サービスと、言語と、ライブラリとのフィールドを有する。対応関係管理テーブル700は、ライブラリごとに各フィールドに情報を設定することにより、対応関係管理情報がレコード700-aとして記憶される。aは、任意の整数である。
【0123】
サービスのフィールドには、アプリケーション521が利用する、クラウド環境220が提供するいずれかのサービスの種類が設定される。言語のフィールドには、上記アプリケーション521が上記いずれかのサービスを利用する場合に対応する、上記アプリケーション521が利用するいずれかのライブラリのプログラム言語が設定される。ライブラリのフィールドには、上記アプリケーション521が上記いずれかのサービスを利用する場合に対応する、上記アプリケーション521が利用する上記いずれかのライブラリの種類が設定される。
【0124】
図6の説明に戻り、デプロイ支援装置100は、指定のクラウド環境220が提供するサービス522のうち、指定のアプリケーション521が利用するサービス522の種類を特定する(ステップS608)。デプロイ支援装置100は、例えば、取得したライブラリの一覧と、特定した対応関係とに基づいて、指定のクラウド環境220が提供するサービス522のうち、指定のアプリケーション521が利用するサービス522の種類を特定する。
【0125】
そして、デプロイ支援装置100は、特定処理を終了する。これにより、デプロイ支援装置100は、指定のクラウド環境220上で、指定のアプリケーション521がいずれのサービス522を利用可能にすることが望まれるのかを特定することができる。
【0126】
次に、図8のシーケンス図を用いて、デプロイ支援装置100が、特定した種類のサービス522に対応する環境情報を取得する取得処理の流れについて説明する。取得処理は、例えば、デプロイ支援装置100と、情報蓄積装置201と、クラウド環境220と、クライアント装置203とによって実現される。
【0127】
図8のシーケンス図は、取得処理の流れを示す。図8において、デプロイ支援装置100は、指定のアプリケーション521のコードを記憶するGitリポジトリ511の認証情報と、指定のクラウド環境220の認証情報とを、クライアント装置203から受信する(ステップS801)。指定のクラウド環境220は、指定のアプリケーション521をデプロイするクラウド環境220である。
【0128】
次に、デプロイ支援装置100は、受信したGitリポジトリ511の認証情報に基づいて、指定のアプリケーション521のコードの問い合わせを、Gitリポジトリ511を実現する情報蓄積装置201に送信する(ステップS802)。デプロイ支援装置100は、問い合わせに対応する指定のアプリケーション521のコードを、Gitリポジトリ511を実現する情報蓄積装置201から取得する(ステップS803)。
【0129】
次に、デプロイ支援装置100は、取得した指定のアプリケーション521のコードを解析することにより、指定のクラウド環境220に対応するAPIのエンドポイントを特定する(ステップS804)。デプロイ支援装置100は、例えば、取得した指定のアプリケーション521のコードを解析することにより、指定のクラウド環境220の種類を特定し、特定した種類に基づいて、指定のクラウド環境220に対応するAPIのエンドポイントを特定する。
【0130】
次に、デプロイ支援装置100は、取得した指定のクラウド環境220の認証情報に基づいて、APIリクエストを、特定したエンドポイントに送信する(ステップS805)。デプロイ支援装置100は、APIリクエストに対するレスポンス情報を、指定のクラウド環境220から受信する(ステップS806)。
【0131】
次に、デプロイ支援装置100は、特定した種類に基づいて、指定のクラウド環境220に対応するルールに従って、APIリクエストに対するレスポンス情報を、環境情報に変換する(ステップS807)。そして、デプロイ支援装置100は、取得処理を終了する。これにより、デプロイ支援装置100は、連携用コンテナ523が参照する環境情報を取得することができ、連携用コンテナ523をデプロイ可能にすることができる。ここで、図9の説明に移行し、レスポンス情報を変換する一例について説明する。
【0132】
図9は、レスポンス情報を変換する一例を示す。図9において、デプロイ支援装置100は、レスポンス情報として、データベースインスタンスに関する情報900を取得したとする。デプロイ支援装置100は、取得した情報900から、“DBInstanceIdentifier”の値“mentai”を抽出し、環境情報910のdatabaseの値に設定する。デプロイ支援装置100は、取得した情報900から、“MasterUsername”の値“tsunakan”を抽出し、環境情報910のuserの値に設定する。
【0133】
デプロイ支援装置100は、取得した情報900から、“Endpoint”内の“Address”の値“mentai.cluster-ro-cicjym71ykmq.us-east-1.rds.amazonaws.com”を抽出する。amazonは、例えば、登録商標である。デプロイ支援装置100は、抽出した値“mentai.cluster-ro-cicjym71ykmq.us-east-1.rds.amazonaws.com”を、環境情報910のhostの値に設定する。
【0134】
デプロイ支援装置100は、特定した種類に基づいて、指定のクラウド環境220について予め記憶したパスワードを、環境情報910のpasswordの値に設定する。デプロイ支援装置100は、指定のクラウド環境220に関するパスワードを、クライアント装置203から受信してもよい。デプロイ支援装置100は、受信したパスワードを、環境情報910のpasswordの値に設定する。これにより、デプロイ支援装置100は、連携用コンテナ523が参照する環境情報910を取得することができ、連携用コンテナ523をデプロイ可能にすることができる。
【0135】
次に、図10を用いて、デプロイ支援装置100が、指定のコンテナ環境上に、指定のアプリケーション521を搭載したアプリケーションコンテナと、連携用コンテナ523とをデプロイする場合について説明する。
【0136】
図10において、デプロイ支援装置100は、指定のアプリケーション521を搭載したアプリケーションコンテナをクラウド環境220上にデプロイ可能にするマニフェストファイルを取得する。デプロイ支援装置100は、例えば、指定のアプリケーション521を搭載したアプリケーションコンテナをクラウド環境220上にデプロイ可能にするマニフェストファイルを、クライアント装置203から受信することにより取得する。
【0137】
デプロイ支援装置100は、取得した環境情報910に基づいて、連携用コンテナ523をクラウド環境220上にデプロイ可能にするよう、取得したマニフェストファイルを更新する。マニフェストファイルを更新する具体例については、図11図15を用いて後述する。
【0138】
デプロイ支援装置100は、更新したマニフェストファイルに基づいて、クラウド環境220上に、指定のアプリケーション521を搭載したアプリケーションコンテナと、連携用コンテナ523とをデプロイする。連携用コンテナ523は、環境情報910を記憶する。
【0139】
図10に示すように、アプリケーション521は、サービス522を利用する際、サービス522に対するリクエスト1001を、連携用コンテナ523に送信する。連携用コンテナ523は、リクエスト1001を受信する。連携用コンテナ523は、受信したリクエスト1001に環境情報910を反映し、リクエスト1002を生成する。
【0140】
連携用コンテナ523は、例えば、リクエスト1001のhostの値を、環境情報910のhostの値に変更する。連携用コンテナ523は、例えば、リクエスト1001のuserの値を、環境情報910のuserの値に変更する。連携用コンテナ523は、例えば、リクエスト1001のpasswordの値を、環境情報910のpasswordの値に変更する。連携用コンテナ523は、例えば、リクエスト1001のdatabaseの値を、環境情報910のdatabaseの値に変更する。
【0141】
連携用コンテナ523は、生成したリクエスト1002を、サービス522に送信する。連携用コンテナ523は、生成したリクエスト1002に対する応答を、サービス522から受信する。連携用コンテナ523は、受信した応答を、アプリケーション521に送信する。アプリケーション521は、応答を、連携用コンテナ523から受信する。これにより、アプリケーション521は、連携用コンテナ523を介して、サービス522を利用することができる。
【0142】
(マニフェストファイルを更新する具体例)
次に、図11図15を用いて、デプロイ支援装置100が、マニフェストファイルを更新する具体例について説明する。
【0143】
図11図15は、マニフェストファイルを更新する具体例を示す説明図である。デプロイ支援装置100は、例えば、予め、マニフェストファイルを更新する際に用いられる部品情報管理テーブル1100を記憶する。部品情報管理テーブル1100は、マニフェストファイルを更新する際、マニフェストファイルに追加する記述を生成するための情報を記憶する。ここで、図11の説明に移行し、部品情報管理テーブル1100の一例について説明する。
【0144】
図11は、部品情報管理テーブル1100の記憶内容の一例を示す。部品情報管理テーブル1100は、例えば、図3に示したデプロイ支援装置100のメモリ302や記録媒体305などの記憶領域により実現される。
【0145】
図11に示すように、部品情報管理テーブル1100は、連携先と、クラウドと、設定とのフィールドを有する。部品情報管理テーブル1100は、連携先と、クラウドとの組み合わせごとに各フィールドに情報を設定することにより、部品情報がレコード1100-bとして記憶される。bは、任意の整数である。
【0146】
連携先のフィールドには、クラウド環境220が提供するサービスの種類が設定される。クラウドのフィールドには、上記クラウド環境220を識別する情報が設定される。設定のフィールドには、上記クラウド環境220上に、上記種類のサービスに対応する連携用コンテナ523をデプロイするために、マニフェストファイルに追加する設定の雛型が設定される。雛型は、マニフェストファイルに追加する記述となり得る部品の組み合わせである。ここで、図12の説明に移行し、設定の雛型の一例について説明する。
【0147】
図12は、設定の雛型の一例を示す。図12に示すように、図11に示した雛型yyyは、具体的には、連携用コンテナ523のインフラストラクチャーの設定を示す部品1201と、環境変数の設定を示す部品1202との組み合わせである。環境変数の設定を示す部品1202は、複数の環境変数のそれぞれの環境変数の値を格納する入力欄を含む。入力欄は、例えば、空である。
【0148】
また、図11に示した雛型zzzは、具体的には、連携用コンテナ523のインフラストラクチャーの設定を示す部品1211と、環境変数の設定を示す部品1212との組み合わせである。環境変数の設定を示す部品1212は、複数の環境変数のそれぞれの環境変数の値を格納する入力欄を含む。入力欄は、例えば、空である。次に、図13の説明に移行する。
【0149】
図13において、デプロイ支援装置100は、部品情報管理テーブル1100を参照して、指定のアプリケーション521が利用するサービス522の種類と、指定のクラウド環境220との組み合わせに対応する雛型を取得する。デプロイ支援装置100は、具体的には、雛型として、部品1201と部品1202との組み合わせを取得する。
【0150】
デプロイ支援装置100は、部品1202の入力欄に、環境情報910を反映し、部品1300を生成する。これにより、デプロイ支援装置100は、マニフェストファイルに追加する記述を示す、部品1201と、部品1300との組み合わせを特定することができ、マニフェストファイルを更新可能にすることができる。
【0151】
デプロイ支援装置100は、予め、マニフェストファイルを更新する際に用いられる追加箇所管理テーブル1400を記憶する。追加箇所管理テーブル1400は、マニフェストファイルを更新する際、マニフェストファイルのいずれの箇所に記述を追加するのかを示す。ここで、図14の説明に移行し、追加箇所管理テーブル1400の一例について説明する。
【0152】
図14は、追加箇所管理テーブル1400の記憶内容の一例を示す。追加箇所管理テーブル1400は、例えば、図3に示したデプロイ支援装置100のメモリ302や記録媒体305などの記憶領域により実現される。
【0153】
図14に示すように、追加箇所管理テーブル1400は、設定部品と、キーとのフィールドを有する。追加箇所管理テーブル1400は、部品の種類ごとに各フィールドに情報を設定することにより、追加箇所管理情報がレコード1100-cとして記憶される。cは、任意の整数である。
【0154】
設定部品のフィールドには、部品の種類が設定される。部品の種類は、インフラストラクチャーの設定、または、環境変数の設定などである。インフラストラクチャーの設定の種類の部品は、例えば、部品1201などである。環境変数の設定の種類の部品は、例えば、部品1300などである。キーのフィールドには、マニフェストファイルのうち、上記種類の部品を追加する箇所を特定するためのキーが設定される。次に、図15の説明に移行する。
【0155】
図15において、デプロイ支援装置100は、追加箇所管理テーブル1400を参照して、部品1201に対応するキー“containers”を特定する。デプロイ支援装置100は、マニフェストファイル1500のうち、キー“containers”の文字列が現れる行の直後の箇所を、部品1201を追加する箇所として特定する。デプロイ支援装置100は、特定した箇所に、部品1201を挿入する。
【0156】
デプロイ支援装置100は、追加箇所管理テーブル1400を参照して、部品1300に対応するキー“env”を特定する。デプロイ支援装置100は、マニフェストファイル1500のうち、キー“env”の文字列が現れる行の直後の箇所を、部品1300を追加する箇所として特定する。デプロイ支援装置100は、特定した箇所に、部品1300を挿入する。
【0157】
これにより、デプロイ支援装置100は、マニフェストファイル1500を適切に更新することができる。デプロイ支援装置100は、例えば、連携用コンテナ523をクラウド環境220上にデプロイ可能にするよう、マニフェストファイル1500を適切に更新することができる。デプロイ支援装置100は、アプリケーション521を搭載したアプリケーションコンテナと、連携用コンテナ523とを、クラウド環境220上に適切にデプロイ可能にすることができる。
【0158】
ここで、例えば、作業者が、人手でマニフェストファイル1500を更新する場合が考えられる。この場合、作業者は、マニフェストファイル1500をどのように更新すればよいのかを判断することが難しく、マニフェストファイル1500を更新する際にかかる作業負担および作業時間の増大化を招くことがある。
【0159】
具体的には、マニフェストファイル1500のうち、いずれの箇所にどのような記述を追加すればよいのかは、クラウド環境220が提供するサービス522ごとに異なる。また、具体的には、マニフェストファイル1500のうち、いずれの箇所にどのような記述を追加すればよいのかは、クラウド環境220ごとに異なる。
【0160】
このため、作業者は、マニフェストファイル1500のうち、いずれの箇所に、どのような記述を追加すればよいのかを判断することが難しく、マニフェストファイル1500を更新する際にかかる作業負担および作業時間の増大化を招くことがある。
【0161】
これに対し、デプロイ支援装置100は、図11図15に示した通り、マニフェストファイル1500のうち、いずれの箇所に、どのような記述を追加すればよいのかを特定することができる。このため、デプロイ支援装置100は、マニフェストファイル1500を適切に更新することができる。
【0162】
(デプロイ処理手順)
次に、図16を用いて、デプロイ支援装置100が実行する、デプロイ処理手順の一例について説明する。デプロイ処理は、例えば、図3に示したCPU301と、メモリ302や記録媒体305などの記憶領域と、ネットワークI/F303とによって実現される。
【0163】
図16は、デプロイ処理手順の一例を示すフローチャートである。図16において、デプロイ支援装置100は、アプリケーションのコードを記憶するリポジトリの認証情報と、クラウド環境220の認証情報とを、クライアント装置203から受信する(ステップS1601)。クラウド環境220は、アプリケーションを搭載したアプリケーションコンテナをデプロイするクラウド環境220である。
【0164】
次に、デプロイ支援装置100は、受信したリポジトリの認証情報に基づいて、アプリケーションのコードを、リポジトリから取得する(ステップS1602)。そして、デプロイ支援装置100は、取得したアプリケーションのコードに基づいて、クラウド環境220が提供するサービスのうち、アプリケーションが利用するサービスの種類を特定する(ステップS1603)。
【0165】
次に、デプロイ支援装置100は、受信したクラウド環境220の認証情報に基づいて、特定した種類のサービスの環境情報を、クラウド環境220から取得する(ステップS1604)。そして、デプロイ支援装置100は、取得した環境情報をパラメータに設定し、アプリケーションを搭載したアプリケーションコンテナと特定した種類のサービスとを中継する連携用コンテナを作成する際に用いられるリソースを確保する(ステップS1605)。
【0166】
次に、デプロイ支援装置100は、アプリケーションが連携用コンテナを介して、特定した種類のサービスを呼び出し可能に、アプリケーションを搭載したアプリケーションコンテナをデプロイ可能にするマニフェストファイルを更新する(ステップS1606)。
【0167】
そして、デプロイ支援装置100は、取得したアプリケーションのコードと、確保したリソースとに基づいて、クラウド環境220上に、アプリケーションを搭載したコンテナと、連携用コンテナとをデプロイする(ステップS1607)。その後、デプロイ支援装置100は、デプロイ処理を終了する。
【0168】
以上説明したように、デプロイ支援装置100によれば、アプリケーションのコードを取得することができる。デプロイ支援装置100によれば、取得したコードに基づいて、アプリケーションを配置するクラウドが提供するサービスのうち、アプリケーションが利用するサービスを特定することができる。デプロイ支援装置100によれば、クラウドと通信し、特定したサービスを利用可能にする環境情報を取得することができる。デプロイ支援装置100によれば、取得した環境情報に基づいて、クラウド上に、アプリケーションと、特定したサービスとの通信を中継するコンテナを作成することができる。これにより、デプロイ支援装置100は、クラウド上に、アプリケーションを搭載したコンテナを作成し易くすることができる。
【0169】
デプロイ支援装置100によれば、クラウドの認証情報を取得することができる。デプロイ支援装置100によれば、取得した認証情報を用いてクラウドと通信し、特定したサービスを利用可能にする環境情報を取得することができる。これにより、デプロイ支援装置100は、クラウドと通信することにより、環境情報を取得し易くすることができる。デプロイ支援装置100は、環境情報を取得する際に利用者にかかる作業負担の低減化を図ることができる。
【0170】
デプロイ支援装置100によれば、取得した環境情報に基づいて、クラウド上に、アプリケーションと、特定したサービスとの通信を中継するコンテナを実現するリソースを確保することができる。デプロイ支援装置100によれば、確保したリソースを利用して、アプリケーションと、特定したサービスとの通信を中継するコンテナを作成することができる。これにより、デプロイ支援装置100は、アプリケーションと、特定したサービスとの通信を中継するコンテナを適切に作成することができる。
【0171】
デプロイ支援装置100によれば、コードに基づいて、クラウド上に、アプリケーションを搭載したコンテナを配置することができる。これにより、デプロイ支援装置100は、アプリケーションを利用可能にすることができる。
【0172】
なお、本実施の形態で説明したデプロイ支援方法は、予め用意されたプログラムをPCやワークステーションなどのコンピュータで実行することにより実現することができる。本実施の形態で説明したデプロイ支援プログラムは、コンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。記録媒体は、ハードディスク、フレキシブルディスク、CD(Compact Disc)-ROM、MO(Magneto Optical disc)、または、DVD(Digital Versatile Disc)などである。また、本実施の形態で説明したデプロイ支援プログラムは、インターネットなどのネットワークを介して配布してもよい。
【0173】
上述した実施の形態に関し、さらに以下の付記を開示する。
【0174】
(付記1)アプリケーションのコードを取得し、
取得した前記コードに基づいて、前記アプリケーションを配置するクラウドが提供するサービスのうち、前記アプリケーションが利用するサービスを特定し、
前記クラウドと通信し、特定した前記サービスを利用可能にする環境情報を取得し、
取得した前記環境情報に基づいて、前記クラウド上に、特定した前記サービスと前記アプリケーションとの通信を中継するコンテナを作成する、
制御部を有することを特徴とするデプロイ支援装置。
【0175】
(付記2)前記制御部は、
前記クラウドの認証情報を取得し、
取得した前記認証情報を用いて前記クラウドと通信し、特定した前記サービスを利用可能にする環境情報を取得する、ことを特徴とする付記1に記載のデプロイ支援装置。
【0176】
(付記3)前記制御部は、
取得した前記環境情報に基づいて、前記クラウド上に、前記コンテナを実現するリソースを確保し、前記コンテナを作成する、ことを特徴とする付記1または2に記載のデプロイ支援装置。
【0177】
(付記4)前記制御部は、
前記コードに基づいて、前記クラウド上に、前記アプリケーションを搭載したコンテナを配置する、ことを特徴とする付記1~3のいずれか一つに記載のデプロイ支援装置。
【0178】
(付記5)アプリケーションのコードを取得し、
取得した前記コードに基づいて、前記アプリケーションを配置するクラウドが提供するサービスのうち、前記アプリケーションが利用するサービスを特定し、
前記クラウドと通信し、特定した前記サービスを利用可能にする環境情報を取得し、
取得した前記環境情報に基づいて、前記クラウド上に、特定した前記サービスと前記アプリケーションとの通信を中継するコンテナを作成する、
処理をコンピュータが実行することを特徴とするデプロイ支援方法。
【0179】
(付記6)アプリケーションのコードを取得し、
取得した前記コードに基づいて、前記アプリケーションを配置するクラウドが提供するサービスのうち、前記アプリケーションが利用するサービスを特定し、
前記クラウドと通信し、特定した前記サービスを利用可能にする環境情報を取得し、
取得した前記環境情報に基づいて、前記クラウド上に、特定した前記サービスと前記アプリケーションとの通信を中継するコンテナを作成する、
処理をコンピュータに実行させることを特徴とするデプロイ支援プログラム。
【符号の説明】
【0180】
100 デプロイ支援装置
110 クラウド
111,522 サービス
120,140 コンテナ
121,521 アプリケーション
122 コード
130,910 環境情報
141 機能
200 情報処理システム
201 情報蓄積装置
202 演算装置
203 クライアント装置
210 ネットワーク
220 クラウド環境
300 バス
301 CPU
302 メモリ
303 ネットワークI/F
304 記録媒体I/F
305 記録媒体
400 記憶部
401 第1取得部
402 第2取得部
403 解析部
404 第3取得部
405 作成部
406 出力部
501 デプロイ支援システム
502 内部データベース
511 Gitリポジトリ
523 連携用コンテナ
700 対応関係管理テーブル
900 情報
1001,1002 リクエスト
1100 部品情報管理テーブル
1201,1202,1211,1212,1300 部品
1400 追加箇所管理テーブル
1500 マニフェストファイル
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16