特許第6958726号(P6958726)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

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

▶ 日本電気株式会社の特許一覧

特許6958726アプリケーション実行装置、アプリケーション実行方法、およびプログラム
<>
  • 特許6958726-アプリケーション実行装置、アプリケーション実行方法、およびプログラム 図000002
  • 特許6958726-アプリケーション実行装置、アプリケーション実行方法、およびプログラム 図000003
  • 特許6958726-アプリケーション実行装置、アプリケーション実行方法、およびプログラム 図000004
  • 特許6958726-アプリケーション実行装置、アプリケーション実行方法、およびプログラム 図000005
  • 特許6958726-アプリケーション実行装置、アプリケーション実行方法、およびプログラム 図000006
  • 特許6958726-アプリケーション実行装置、アプリケーション実行方法、およびプログラム 図000007
  • 特許6958726-アプリケーション実行装置、アプリケーション実行方法、およびプログラム 図000008
  • 特許6958726-アプリケーション実行装置、アプリケーション実行方法、およびプログラム 図000009
  • 特許6958726-アプリケーション実行装置、アプリケーション実行方法、およびプログラム 図000010
  • 特許6958726-アプリケーション実行装置、アプリケーション実行方法、およびプログラム 図000011
  • 特許6958726-アプリケーション実行装置、アプリケーション実行方法、およびプログラム 図000012
  • 特許6958726-アプリケーション実行装置、アプリケーション実行方法、およびプログラム 図000013
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6958726
(24)【登録日】2021年10月11日
(45)【発行日】2021年11月2日
(54)【発明の名称】アプリケーション実行装置、アプリケーション実行方法、およびプログラム
(51)【国際特許分類】
   G06F 8/65 20180101AFI20211021BHJP
   G06F 9/455 20060101ALI20211021BHJP
【FI】
   G06F8/65
   G06F9/455 150
【請求項の数】7
【全頁数】15
(21)【出願番号】特願2020-507792(P2020-507792)
(86)(22)【出願日】2019年3月18日
(86)【国際出願番号】JP2019011197
(87)【国際公開番号】WO2019181860
(87)【国際公開日】20190926
【審査請求日】2020年7月10日
(31)【優先権主張番号】特願2018-55456(P2018-55456)
(32)【優先日】2018年3月23日
(33)【優先権主張国】JP
(73)【特許権者】
【識別番号】000004237
【氏名又は名称】日本電気株式会社
(74)【代理人】
【識別番号】100109313
【弁理士】
【氏名又は名称】机 昌彦
(74)【代理人】
【識別番号】100124154
【弁理士】
【氏名又は名称】下坂 直樹
(72)【発明者】
【氏名】岡田 好大
【審査官】 石川 亮
(56)【参考文献】
【文献】 特開2017−111761(JP,A)
【文献】 内田 誠悟,ビルド環境の構築とDockerイメージのビルド 本番運用を見据えたイメージの作り方,WEB+DB PRESS,日本,技術評論社,2015年05月25日,第86巻,pp.99-105.
【文献】 村井 和夫,C&C++コンパイラ/リンカ/アセンブラ/デバッガ… 全部タダでMyパソコンに! ARM用LLVM&GCC開発環境の構築,Interface,日本,CQ出版株式会社,2015年03月01日,第41巻,第3号,pp.57-64.
【文献】 中村 憲一,組み込みLinux活用技法入門:3 クロス環境での構築手法を中心とした組み込みLinuxカーネル構築の実際,Interface,日本,CQ出版株式会社,2002年03月01日,第28巻,第3号,pp.29-38.
【文献】 安田 幸弘,一度は作ってみたい! 俺流Linux[前編],Linux WORLD,日本,(株)IDGジャパン,2006年09月01日,第5巻,第9号,pp.63-94.
【文献】 菊間 一宏 他,大規模通信ソフト開発環境へのOSSツール適用の評価,電子情報通信学会技術研究報告,日本,一般社団法人電子情報通信学会,2016年11月17日,第116巻,第322号,pp.61-66.
(58)【調査した分野】(Int.Cl.,DB名)
G06F 8/65
G06F 9/455
(57)【特許請求の範囲】
【請求項1】
コンテナ型仮想化技術を用いて構築される業務システムに含まれるアプリケーション実行装置であって、
コンテナ上で動作するアプリケーションを定義するコンテナ定義ファイルの更新を検出する更新検出手段と、
更新が検出された場合、前記コンテナ定義ファイルをビルドすることにより生成されるコンテナイメージのデータ量を軽減させるために、前記コンテナ定義ファイルおよび前記コンテナイメージの各内容を変更する内容変更手段と
備え、
前記内容変更手段は、更新が検知された前記コンテナ定義ファイルを解析してビルド命令を特定し、更新が検知された前記コンテナ定義ファイルに、特定された前記ビルド命令が実行された後に、実行に使用されたソースファイルを削除する削除命令を書き加え、前記削除命令が書き加えられた前記コンテナ定義ファイルのビルドを実行し、
前記コンテナ定義ファイルが更新されてから更新についてのデプロイが完了するまでの全体時間を算出し、前記全体時間が、予め決定された上限時間を超えるか否かを判定し、前記全体時間が前記上限時間を超える場合、前記コンテナイメージに含まれるレイヤの構造を再構築する
ことを特徴とするアプリケーション実行装置。
【請求項2】
前記再構築は、古い前記構造を一旦取り払うとともにメタデータを排除することにより複数の前記レイヤを1つの前記レイヤに統合する処理であることを特徴とする請求項1に記載のアプリケーション実行装置。
【請求項3】
前記内容変更手段は、
前記削除命令が書き加えられた前記コンテナ定義ファイルのビルドを実行する際、前記ビルドの時間であるビルド時間を計測し、
コンテナの起動時間を計測し、前記起動時間と前記ビルド時間とを用いて前記全体時間を算出する
ことを特徴とする請求項1または2に記載のアプリケーション実行装置。
【請求項4】
前記上限時間は、前記業務システムに要求される性能に基づいて決定されることを特徴とする請求項1から3のいずれか1項に記載のアプリケーション実行装置。
【請求項5】
マスタとして動作するマスタ側アプリケーション実行装置と、
前記マスタ側アプリケーション実行装置と接続され、スレーブとして動作するスレーブ側アプリケーション実行装置と、を備え、
前記マスタ側アプリケーション実行装置および前記スレーブ側アプリケーション実行装置は、請求項1から4のいずれか1項に記載される前記アプリケーション実行装置である
ことを特徴とする業務システム。
【請求項6】
コンテナ型仮想化技術を用いて構築される業務システムに含まれるアプリケーション実行装置におけるアプリケーション実行方法であって、
コンテナ上で動作するアプリケーションを定義するコンテナ定義ファイルの更新を検出し、
更新が検出された場合、前記コンテナ定義ファイルをビルドすることにより生成されるコンテナイメージのデータ量を軽減させるために、前記コンテナ定義ファイルおよび前記コンテナイメージの各内容を変更し、
各内容の変更が、更新が検知された前記コンテナ定義ファイルを解析してビルド命令を特定し、更新が検知された前記コンテナ定義ファイルに、特定された前記ビルド命令が実行された後に、実行に使用されたソースファイルを削除する削除命令を書き加え、前記削除命令が書き加えられた前記コンテナ定義ファイルのビルドを実行し、
前記コンテナ定義ファイルが更新されてから更新についてのデプロイが完了するまでの全体時間を算出し、前記全体時間が、予め決定された上限時間を超えるか否かを判定し、前記全体時間が前記上限時間を超える場合、前記コンテナイメージに含まれるレイヤの構造を再構築する
ことを特徴とするアプリケーション実行方法。
【請求項7】
コンテナ型仮想化技術を用いて構築される業務システムに含まれるアプリケーション実行装置のコンピュータに、
コンテナ上で動作するアプリケーションを定義するコンテナ定義ファイルの更新を検出する更新検出処理と、
更新が検出された場合、前記コンテナ定義ファイルをビルドすることにより生成されるコンテナイメージのデータ量を軽減させるために、前記コンテナ定義ファイルおよび前記コンテナイメージの各内容を変更する内容変更処理と
を実行させるためのプログラムであって、
前記内容変更処理は、更新が検知された前記コンテナ定義ファイルを解析してビルド命令を特定し、更新が検知された前記コンテナ定義ファイルに、特定された前記ビルド命令が実行された後に、実行に使用されたソースファイルを削除する削除命令を書き加え、前記削除命令が書き加えられた前記コンテナ定義ファイルのビルドを実行する処理と、
前記コンテナ定義ファイルが更新されてから更新についてのデプロイが完了するまでの全体時間を算出し、前記全体時間が、予め決定された上限時間を超えるか否かを判定し、前記全体時間が前記上限時間を超える場合、前記コンテナイメージに含まれるレイヤの構造を再構築する処理と
であるプログラム
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、アプリケーション実行装置、アプリケーション実行方法、およびプログラムに関する。
【背景技術】
【0002】
ビッグデータなどの大規模なデータを扱う業務システムを構築する際、コンテナ型仮想化技術が採用されるケースが増えてきている。コンテナ型仮想化は、仮想化の一種であり、1つのOS(Operating System)に、コンテナといわれる「独立したサーバと同様の振る舞いをする区画」を複数作り、それを個別のユーザ/サービスに割り当てるものである。コンテナには個別にCPU(Central Processing Unit)/メモリ/ストレージなどを割り当てる必要がない。従って、コンテナ型仮想化を用いた業務システムの場合、システムリソースのオーバーヘッドは少なくて済む。
【0003】
一方で、近年、DevOpsが注目されており、上記業務システムもこのDevOpsを満足することが求められている。DevOpsとは、開発(Development)と運用(Operations)とが協力し、ビジネス要求に対して、より柔軟に、スピーディに対応できるシステムを作り上げるための取り組みのことを指す。なお、現時点においては、DevOpsについての厳密な定義はない。
【0004】
上記に関連して、例えば、特許文献1には、アップデート命令を受信したコンテナ管理部が、現在のコンテナを削除(停止)し、コンテナテンプレートの更新を行うことが記載されている。ここで、コンテナテンプレートの更新とは、新コンテナテンプレートをダウンロードすることであってもよいし、コンテナ収容装置に予め格納されている新コンテナテンプレートを読み出すことであってもよいとの記載がある。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2017−111761号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
コンテナ型仮想化を用いた業務システムにおいてアプリケーションを最新の状態で動作させるためには、アプリケーションの更新が必要である。その場合、更新内容をコンテナイメージに反映し、更新されたコンテナイメージを実行環境にデプロイする必要がある。上記において、コンテナイメージとは、アプリケーションをコンテナ上で動作させるために必要なファイルを一纏めにしたイメージファイルのことである。また、デプロイは、ソフトウェアシステムを利用可能にする活動全般のことを指す。
【0007】
しかしながら、コンテナイメージの作成には手間が掛かり、かつそのビルド(たとえば、コンパイル/リンク)には時間が掛かる場合がある。
【0008】
また、コンテナイメージでは、アプリケーションの更新に伴う実行環境へのデプロイの度に、これまでのファイルシステムの差分情報(ソースファイルの差分ファイル)がレイヤとして蓄積されている。従って、アプリケーションの更新を繰り返す度に、デプロイ完了までの時間が次第に増大していく虞がある。時間の増大を回避するため、業務システムの運用者自身による定期的なメンテナンス作業(コンテナイメージの整理)が実施されているが、これは運用者にとってかなりの手間となる。
【0009】
すなわち、コンテナ型仮想化技術を用いて構築される業務システムの開発において、一般的なオンプレミス環境(自社運用環境)での業務システムの開発に比べ、アプリケーションの開発および運用(DevOps)を効率的に実施するための仕組みがあまり提案されていないのが実情である。
【0010】
本発明は、上記課題を解決するためになされたものであり、コンテナ型仮想化技術を用いて構築される業務システムにおけるアプリケーションの開発および運用を効率化させることが可能な技術を提供することを目的とする。
【課題を解決するための手段】
【0011】
本発明のアプリケーション実行装置は、コンテナ型仮想化技術を用いて構築される業務システムに含まれるアプリケーション実行装置であって、コンテナ上で動作するアプリケーションを定義するコンテナ定義ファイルの更新を検出する更新検出手段と、更新が検出された場合、前記コンテナ定義ファイルをビルドすることにより生成されるコンテナイメージのデータ量を軽減させるために、前記コンテナ定義ファイルおよび前記コンテナイメージの各内容を変更する内容変更手段と、を備える。
【0012】
本発明のアプリケーション実行方法は、コンテナ型仮想化技術を用いて構築される業務システムに含まれるアプリケーション実行装置におけるアプリケーション実行方法であって、コンテナ上で動作するアプリケーションを定義するコンテナ定義ファイルの更新を検出し、更新が検出された場合、前記コンテナ定義ファイルをビルドすることにより生成されるコンテナイメージのデータ量を軽減させるために、前記コンテナ定義ファイルおよび前記コンテナイメージの各内容を変更することを特徴とする。
【0013】
本発明のプログラムは、コンテナ型仮想化技術を用いて構築される業務システムに含まれるアプリケーション実行装置のコンピュータに、コンテナ上で動作するアプリケーションを定義するコンテナ定義ファイルの更新を検出する更新検出処理と、更新が検出された場合、前記コンテナ定義ファイルをビルドすることにより生成されるコンテナイメージのデータ量を軽減させるために、前記コンテナ定義ファイルおよび前記コンテナイメージの各内容を変更する内容変更処理と、を実行させる
【発明の効果】
【0014】
本発明によれば、コンテナ型仮想化技術を用いて構築される業務システムにおけるアプリケーションの開発および運用を効率化させることができる。
【図面の簡単な説明】
【0015】
図1】本発明の第1の実施形態に係るアプリケーション実行装置の構成例を示すブロック図である。
図2図1に示すアプリケーション実行装置の動作例(アプリケーション実行方法)を説明するためのフローチャートである。
図3】本発明の第2の実施形態に係る業務システムの構成例を示すブロック図である。
図4図3に示されるコンテナイメージ生成部の構成例を示すブロック図である。
図5図3に示されるコンテナ管理部の構成例を示すブロック図である。
図6図3に示されるアプリケーション実行装置の第1の動作例(アプリケーション実行方法)を説明するためのフローチャートである。
図7】中間ファイル(ソースファイル)を削除するためにビルド実行ステップを書き換える処理を説明するための図である。
図8】中間ファイル(ソースファイル)の削除によりコンテナイメージが軽量化される様子を示す図である。
図9図3に示されるアプリケーション実行装置の第2の動作例(アプリケーション実行方法)を説明するためのフローチャートである。
図10】レイヤ統合によるコンテナイメージ更新処理を説明する図である。
図11】本発明の第3の実施形態に係るアプリケーション実行システムの構成例を示すブロック図である。
図12】本発明の第4の実施形態に係るアプリケーション実行装置の構成例を示すブロック図である。
【発明を実施するための形態】
【0016】
[第1の実施形態]
図1は、本発明の第1の実施形態に係るアプリケーション実行装置500の構成例を示すブロック図である。
【0017】
アプリケーション実行装置500は、コンテナ型仮想化技術を用いて構築される業務システム(図1において不図示)に含まれる。コンテナおよびコンテナ型仮想化技術については、[背景技術]にて説明済みである。
【0018】
アプリケーション実行装置500は、更新検出部501(更新検出手段および更新検出処理の一例)と、内容変更部502(内容変更手段および内容変更処理の一例)と、を備える。
【0019】
更新検出部501は、コンテナ上で動作するアプリケーションを定義するコンテナ定義ファイルの更新を検出する。内容変更部502は、更新が検出された場合、コンテナ定義ファイルをビルドすることにより生成されるコンテナイメージのデータ量を軽減させるために、コンテナ定義ファイルおよびコンテナイメージの各内容を変更する。
【0020】
アプリケーション実行装置500は、例えば、IC(Integrated Circuit)やFPGA(Field Programmable Gate Array)等の電子回路で構成されてもよい。あるいは、アプリケーション実行装置500は、コンピュータ(たとえば、CPU(Central Processing Unit))がメモリに記憶されたプログラムを実行する構成であってもよい。もちろん、アプリケーション実行装置500は、電子回路とコンピュータの組み合わせにて構成されてもよい。
【0021】
図2は、図1に示すアプリケーション実行装置500の動作例(アプリケーション実行方法)を説明するためのフローチャートである。
【0022】
更新検出部501は、コンテナ上で動作するアプリケーションを定義するコンテナ定義ファイルの更新を検出する(ステップS100)。
【0023】
更新が検出された場合、内容変更部502は、コンテナイメージのデータ量を軽減させるために、コンテナ定義ファイルおよびコンテナイメージの各内容を変更する(ステップS101)。
【0024】
なお、アプリケーション実行装置500の詳細な構成および動作については、第2の実施形態にて説明する。
【0025】
以上説明した第1の実施形態によれば、コンテナへのアプリケーションの反映に必要なコンテナ定義ファイルの作成や更新の度に発生する、ビルドからコンテナへのデプロイまでの作業のすべてはアプリケーション実行装置500にて自動的に実行される。従って、更新に費やされる時間の増大を回避するために、業務システムの運用者自身によって定期的に実行されるメンテナンス作業を不要とすることができる。
【0026】
さらに、第1の実施形態では、コンテナイメージを軽量化させるための処理がアプリケーション実行装置500によって自動的に実行されるので、コンテナに対するアプリケーションの更新に費やされる時間を短縮することができる。
【0027】
すなわち、以上説明した第1の実施形態によれば、コンテナ型仮想化技術を用いて構築される業務システムにおけるアプリケーションの開発および運用を効率化させることができる。
[第2の実施形態]
(構成の説明)
図3は、本発明の第2の実施形態に係る業務システム100の構成例を示すブロック図である。業務システム100は、アプリケーション実行装置1と、データストレージ200と、を備える。
【0028】
アプリケーション実行装置1は、図1に示すアプリケーション実行装置500を基本とする構成を含み、少なくとも1つのアプリケーションを、コンテナ型仮想化技術を用いて実行する。アプリケーションで実行される業務は、例えば、商品需要予測、販売価格予測、会計管理業務、顧客管理業務、商品管理業務、生産管理業務、または給与管理業務である。もちろん、アプリケーションが実行する業務は、上記に限定されない。また、アプリケーション実行装置1は、物理マシンおよび仮想マシンのどちらであってもよい。
【0029】
アプリケーション実行装置1は、更新検出部10と、コンテナイメージ生成部20と、コンテナイメージ管理部30と、コンテナ管理部40と、記憶部50と、少なくとも1つのコンテナ60と、を備える。更新検出部10は、図1の更新検出部501の構成を含む。また、コンテナイメージ生成部20とコンテナイメージ管理部30とコンテナ管理部40とをまとめたものは、図1の内容変更部502の具体例に対応する。
【0030】
更新検出部10は、コンテナ60上で動作するアプリケーションを定義するコンテナ定義ファイルの更新を検出する。コンテナ定義ファイルの更新が検出された場合、更新検出部10は、コンテナイメージ生成部20に対して、更新されたコンテナ定義ファイルを用いてコンテナイメージを更新するよう指示する。
【0031】
コンテナイメージ生成部20およびコンテナ管理部40の詳細については後述する。
【0032】
コンテナイメージ管理部30は、コンテナイメージをリポジトリ形式で管理するとともに、コンテナイメージの更新を通知する。
【0033】
記憶部50は、アプリケーション実行装置1内で動作する各処理部が出力したファイルやイメージを保存する。
【0034】
コンテナ60は、少なくとも1つ設けられ、割り当てられた所定のアプリケーションを実行する。
【0035】
データストレージ200は、アプリケーションが使用する各種のファイルやデータを格納する。たとえば、データストレージ200は、コンテナ定義ファイルを格納する。
【0036】
図4は、図3に示されるコンテナイメージ生成部20の構成例を示すブロック図である。コンテナイメージ生成部20は、図4に示されるように、ビルド実行部21と、ビルド時間計測部22と、コンテナ定義ファイル解析部23と、コンテナ定義ファイル書替部24と、コンテナイメージ書替部25と、を備える。
【0037】
ビルド実行部21は、コンテナ定義ファイルをビルドする。ビルド時間計測部22は、ビルドに費やされた処理時間を計測する。コンテナ定義ファイル解析部23は、更新が検知されたコンテナ定義ファイルの内容を解析する。コンテナ定義ファイル書替部24は、更新されたコンテナ定義ファイルの内容を変更する。コンテナイメージ書替部25は、ビルドを実行するときにコンテナイメージの構成(たとえば、レイヤ構造)を再構築する。
【0038】
図5は、図3に示されるコンテナ管理部40の構成例を説明するブロック図である。コンテナ管理部40は、リソース制御部41と、上限時間超過判定部42と、を備える。
【0039】
リソース制御部41は、コンテナの起動に必要なリソースを制御する。上限時間超過判定部42は、全体の処理時間(後述)が、予め決定された上限時間(後述)を超えるか否かを判定する。
【0040】
なお、図3および図4における各部の接続はあくまで一例である。
(動作の説明)
以下、本実施形態の業務システム100におけるデプロイ環境の更新動作について説明する。
【0041】
なお、以下の説明において、コンテナ型仮想化の一例である、例えば、Docker(登録商標)が使用される場合を想定している。また、デプロイ対象のシステム構成は、RPM(Red Hat package managerまたはRPM Package Manager)などの一般的なパッケージで構成されるものとして説明する。さらに、以下の動作が実行される前に、業務システム100の運用者により、予め、デプロイ環境が更新されるまでの上限時間が設定されているものとする。上限時間は、例えば、業務システム100に要求される性能に基づいて決定される。上限時間は、例えば、記憶部50に記憶される。
【0042】
図6は、図3に示されるアプリケーション実行装置1の第1の動作例(アプリケーション実行方法)を説明するための図であり、詳細には、実行環境が構築されるまでの動作を説明するフローチャートである。
【0043】
更新検出部10は、データストレージ200に格納されているいずれかのコンテナ定義ファイルが更新されたか否かを検出する(ステップS1)。更新が検出されない場合(ステップS1にてNo)、ステップS1の処理が再度実行される。
【0044】
更新が検知された場合(ステップS1のYes)、更新検出部10は、コンテナイメージ生成部20に対して、ビルド(更新が検知されたコンテナ定義ファイルを用いてコンテナイメージを更新する処理)の実行を指示する。
【0045】
コンテナイメージ生成部20のコンテナ定義ファイル解析部23は、更新検出部10からの指示に応じて、更新が検知されたコンテナ定義ファイルを解析し、ビルド命令(たとえば、make、またはrpmbuild)を特定する(ステップS2)。
【0046】
コンテナイメージ生成部20のコンテナ定義ファイル書替部24は、データストレージ200内の、更新されたコンテナ定義ファイルの内容を変更する(ステップS3)。ここで、ステップS2で特定されたビルド命令に記述されたソースファイルは、デプロイ環境の更新によって実行環境が構築されるまで(すなわち、ビルド命令によりビルドが完了するまで)のいわば中間ファイルであり、実行環境の構築後は不要となるファイルである。そこで、ステップS3において、コンテナ定義ファイル書替部24は、当該ビルド命令の実行時に使用されるソースファイルをビルド命令の実行完了後に削除するための削除命令を、更新が検知されたコンテナ定義ファイルに書き加える。
【0047】
コンテナイメージ生成部20のビルド実行部21は、このように削除命令の追加によって書き替えられたコンテナ定義ファイルのビルドを、ステップS2で特定されたビルド命令に従って実行する(ステップS4)。すなわち、ビルド実行部21は、コンテナイメージ書替部25に指示し、コンテナイメージ書替部25は、データストレージ200に格納されたコンテナイメージの構成、たとえば、レイヤ構造を再構築(または、更新とも言う)する。
【0048】
コンテナ定義ファイルのビルドを実行する際、コンテナイメージ生成部20のビルド時間計測部22は、上記ビルドの処理時間であるビルド時間を計測する(ステップS5)。計測されたビルド時間は、例えば、記憶部50に格納される。更新検出部10は、ビルドの実行により更新されたコンテナイメージをコンテナイメージ管理部30に格納する。コンテナイメージ管理部30は、コンテナ管理部40に対して、コンテナイメージが更新された旨の更新通知を送信する(ステップS6)。
【0049】
図7は、ソースファイルを削除するためにコンテナ定義ファイル中のビルドの実行ステップを書き換える処理(ステップS3の処理)を説明するための図である。図7に示すように、ステップS3で変更後の命令行には、ソースファイル(/xxx/yyy/src)を削除するための「rm」コマンドが追加される。rmコマンドを追加することで、ソースファイルがコンテナイメージに追加されるのが禁止される。
【0050】
図8は、ソースファイルの削除によりコンテナイメージが軽量化される様子を示す図である。図8から諒解されるように、図6に示すフローの実行により、Layer3において、ソースファイル(差分ファイル)はコンテナイメージ管理部30に格納されず、実行環境へのデプロイに必要なファイル(aaa.rpm)のみが格納されるようになる。
【0051】
図9は、図3に示されるアプリケーション実行装置1の第2の動作例(アプリケーション実行方法)を説明するための図であり、詳細には、コンテナ起動時の動作を説明するフローチャートである。図9のフローチャートに示される処理は、通常、図6のフローチャートに示される処理が完了した後に実行される。
【0052】
図5に示すコンテナ管理部40のリソース制御部41は、コンテナイメージ管理部30からの更新通知を受信する(ステップS10)。リソース制御部41は、稼働中のコンテナを順次停止させ、更新された新しいコンテナイメージをコンテナイメージ管理部30から取得してコンテナ60を起動する(ステップS11)。
【0053】
コンテナ管理部40の上限時間超過判定部42は、コンテナの起動時間を計測する(ステップS12)。計測した起動時間は、例えば、記憶部50に格納される。上限時間超過判定部42は、起動時間と計測済みのビルド時間(図4のステップS5参照)とを用いて、コンテナ定義ファイルが更新されてからその更新についてのデプロイが完了するまでの全体時間を算出する(ステップS13)。
【0054】
上限時間超過判定部42は、全体の処理時間が、予め決定された上限時間を超えるか否かを判定する(ステップS14)。全体の処理時間が上限時間を超えない場合(ステップS14のNo)、本フローは終了する。
【0055】
上限時間を超える場合(ステップS14のYes)、コンテナイメージ書替部25は、コンテナイメージ管理部30に格納されるコンテナイメージに含まれるレイヤ構造を再構築する(ステップS15)。具体的には、図10に示されるように、コンテナイメージ書替部25は、古いレイヤ構造(図10のLayer1〜3)を一旦取り払うとともにメタデータを排除することにより、複数のレイヤ(Layer1〜3)を1つのレイヤ(Layer1)に統合する。メタデータとは、あるデータそのものではなく、そのデータを表す属性や関連する情報を記述したデータのことである。図10には、メタデータが排除されることにより軽量化し、且つ1つに纏められたLayer1が示されている。
(効果の説明)
以上説明した第2の実施形態によれば、コンテナへのアプリケーションの反映に必要なコンテナ定義ファイルの作成や更新の度に発生する、ビルドからコンテナへのデプロイまでの作業のすべてはアプリケーション実行装置1にて自動的に実行される。従って、更新に費やされる時間の増大を回避するために、業務システムの運用者自身によって定期的に実行されるメンテナンス作業を不要とすることができる。
【0056】
さらに、第2の実施形態では、コンテナイメージを軽量化させるための様々な処理が、アプリケーション実行装置1によって自動的に実行されるので、コンテナに対するアプリケーションの更新に費やされる時間を短縮することができる。様々な処理とは、例えば、中間ファイルであるソースファイルを削除するための削除命令を追加する処理や、メタデータを排除しレイヤを1つに統合する処理である。
【0057】
すなわち、以上説明した第2の実施形態によれば、コンテナ型仮想化技術を用いて構築される業務システム100におけるアプリケーションの開発および運用を効率化させることができる。
[第3の実施形態]
図11は、本発明の第3の実施形態に係る業務システム550の構成例を示すブロック図である。業務システム550は、マスタとして動作するマスタ側アプリケーション実行装置560と、スレーブとして動作するスレーブ側アプリケーション実行装置570と、を備える。
【0058】
マスタ側アプリケーション実行装置560とスレーブ側アプリケーション実行装置570とは、インターネット等のネットワーク580を介して接続される。
【0059】
マスタ側アプリケーション実行装置560およびスレーブ側アプリケーション実行装置570は、例えば、第1の実施形態および第2の実施形態のいずれか一方のアプリケーション実行装置とすることができる。
【0060】
以上説明した第3の実施形態のように、アプリケーション実行装置を分散配置することにより、アプリケーションの開発および運用をより一層効率的に実施することが可能となる。
[第4の実施形態]
図12は、本発明の第4の実施形態に係るアプリケーション実行装置600の構成例を示すブロック図であり、詳細には、図1に示すアプリケーション実行装置500、または図3に示すアプリケーション実行装置1を、コンピュータによって実現したアプリケーション実行装置600のブロック図である。
【0061】
アプリケーション実行装置600は、記憶装置602と、プロセッサ等を含む演算装置604(コンピュータ)と、を備える。記憶装置602は、コンピュータ読み取り可能な記録媒体であり、コンピュータプログラム650を記憶する。コンピュータプログラム650は、例えば、第1の実施形態で説明した動作や第2の実施形態で説明した動作を演算装置604に実行させるためのプログラムである。
【0062】
なお、演算装置604の例としては、例えば、プログラムを読み取り実行する、1つまたはそれ以上のCPUと、CPUが実行する命令を記憶するメモリを挙げることができる。また、コンピュータ読み取り可能な記録媒体は、例えば、非一時的な記憶装置である。非一時的な記憶装置の例としては、例えば、光ディスク、磁気ディスク、ROM(Read Only Memory)、不揮発性半導体メモリ等の可搬媒体、コンピュータシステムに内蔵されるハードディスクを挙げることができる。また、コンピュータ読み取り可能な記録媒体は、一時的な記憶装置であってもよい。一時的な記憶装置の例としては、例えば、インターネット等のネットワークや電話回線等の通信回線を介してプログラムを送信する場合の信号線、あるいは、コンピュータシステム内部の揮発性メモリを挙げることができる。
【0063】
以上説明した第4の実施形態によれば、第1および第2の実施形態と同様に、コンテナ型仮想化技術を用いて構築される業務システムにおけるアプリケーションの開発および運用を効率化させることができる。
【0064】
以上、各実施形態を用いて本発明を説明したが、本発明の技術的範囲は、上記各実施形態の記載に限定されない。上記各実施形態に多様な変更又は改良を加えることが可能であることは当業者にとって自明である。従って、そのような変更又は改良を加えた形態もまた本発明の技術的範囲に含まれることは説明するまでもない。また、以上説明した各実施形態において使用される、数値や各構成の名称等は例示的なものであり適宜変更可能である。
【0065】
この出願は、2018年 3月23日に出願された日本出願特願2018−055456を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【符号の説明】
【0066】
1 アプリケーション実行装置
10 更新検出部
20 コンテナイメージ生成部
21 ビルド実行部
22 ビルド時間計測部
23 コンテナ定義ファイル解析部
24 コンテナ定義ファイル書替部
25 コンテナイメージ書替部
30 コンテナイメージ管理部
40 コンテナ管理部
41 リソース制御部
42 上限時間超過判定部
50 記憶部
60 コンテナ
500 アプリケーション実行装置
501 更新検出部
502 内容変更部
550 業務システム
560 マスタ側アプリケーション実行装置
570 スレーブ側アプリケーション実行装置
580 ネットワーク
600 アプリケーション実行装置
602 記憶装置
604 演算装置
650 コンピュータプログラム
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12