2022年 秋期 応用情報技術者試験 問4
コンテナ型仮想化技術
C社は,レストランの予約サービスを提供する会社である。C社のレストランの予約サービスを提供するWebアプリケーションソフトウェア(以下,Webアプリという)は,20名の開発者が在籍するWebアプリ開発部で開発,保守されている。C社のWebアプリにアクセスするURLは,"https://www.example.jp/" である。
Webアプリには,機能X,機能Y,機能Zの三つの機能があり,そのソースコードやコンパイル済みロードモジュールは,開発期間中に頻繁に更新されるので,バージョン管理システムを利用してバージョン管理している。また,Webアプリは,外部のベンダーが提供するミドルウェアA及びミドルウェアBを利用しており,各ミドルウェアには開発ベンダーから不定期にアップデートパッチ(以下,パッチという)が提供される。パッチが提供された場合,C社ではテスト環境で一定期間テストを行った後,顧客向けにサービスを提供する本番環境のミドルウェアにパッチを適用している。
このため,Webアプリの開発者は,本番環境に適用されるパッチにあわせて,自分の開発用PCの開発環境のミドルウェアにもパッチを適用する必要がある。開発環境へのパッチは,20台の開発用PC全てに適用する必要があり,作業工数が掛かる。
そこで,Webアプリ開発部では,Webアプリの動作に必要なソフトウェアをイメージファイルにまとめて配布することができるコンテナ型仮想化技術を用いて,パッチ適用済みのコンテナイメージを開発者の開発用PCに配布することで,開発環境へのミドルウェアのパッチ適用工数を削減することについて検討を開始した。コンテナ型仮想化技術を用いた開発環境の構築は,Webアプリ開発部のDさんが担当することになった。
【Webアプリのリリーススケジュール】
まずDさんは,今後のミドルウェアへのパッチ適用とWebアプリのリリーススケジュールを確認した。今後のリリーススケジュールを図1に示す。

C社では,ミドルウェアの公開済みのパッチを計画的に本番環境に適用しており,本番環境のミドルウェアAのパッチ適用が10月中旬に,ミドルウェアBのパッチ適用が11月中旬に計画されている。また,10月,11月,及び12月に向けて三つのWebアプリ開発案件が並行して進められる予定である。開発者は各Webアプリ開発案件のリリーススケジュールを考慮し,リリース時点の本番環境のミドルウェアのバージョンと同一のバージョンのミドルウェアを開発環境にインストールして開発作業を行う必要がある。
なお,二つのミドルウェアでは,パッチ提供の場合にはバージョン番号が0.0.1ずつ上がることがミドルウェアの開発ベンダーから公表されている。また,バージョン番号を飛ばして本番環境のミドルウェアにパッチを適用することはない。
【コンテナ型仮想化技術の調査】
次にDさんは,コンテナ型仮想化技術について調査した。コンテナ型仮想化技術は,一つのOS上に独立したアプリケーションの動作環境を構築する技術であり,aやb上に仮想マシンを動作させるサーバ型仮想化技術と比較してcが不要となり,CPUやメモリを効率良く利用できる。C社の開発環境で用いる場合には,Webアプリの開発に必要な指定バージョンのミドルウェアをコンテナイメージにまとめ,それを開発者に配布する。
【コンテナイメージの作成】
まずDさんは,基本的なライブラリを含むコンテナイメージをインターネット上の公開リポジトリからダウンロードし,Webアプリの開発に必要な二つのミドルウェア
の指定バージョンをコンテナ内にインストールした。次に,コンテナイメージを作成し社内リポジトリへ登録して,C社の開発者がダウンロードできるようにした。
なお,Webアプリのソースコードやロードモジュールは,バージョン管理システムを利用してバージョン管理し,①コンテナイメージにWebアプリのソースコードやロードモジュールは含めないことにした。Dさんが作成したコンテナイメージの一覧を表1に示す。
コンテナイメージ名 | 説明 | ミドルウェアA バージョン | ミドルウェアB バージョン |
---|---|---|---|
img-dev_oct | 10月1日リリース向け開発用 | (省略) | (省略) |
img-dev_nov | 11月1日リリース向け開発用 | d | e |
img-dev_dec | 12月1日リリース向け開発用 | 10.1.2 | 15.3.4 |
【コンテナイメージの利用】
Webアプリ開発部のEさんは,機能Xの変更を行うために,Dさんが作成したコンテナイメージ"img-dev_oct"を社内リポジトリからダウンロードし,開発用PCでコンテナを起動させた。Eさんが用いたコンテナの起動コマンドの引数(抜粋)を図2に示す。
-p 10443:443 -v /app/FuncX:/app img-dev_oct
図2中の-pオプションは,ホストOSの10443番ポートをコンテナの443番ポートにバインドするオプションである。なお,コンテナ内では443番ポートでWebアプリへのアクセスを待ち受ける。さらに,-vオプションは,ホストOSのディレクトリ"/app/FuncX"を,コンテナ内の"/app"にマウントするオプションである。
EさんがWebアプリのテストを行う場合,開発用PCのホストOSで実行されるWebブラウザから②テスト用のURLへアクセスすることで"img-dev_oct"内で実行されているWebアプリにアクセスできる。また,コンテナ内に作成されたファイル"/app/test/test.txt"は,ホストOSのfとして作成される。
12月1日リリース向け開発案件をリリースした後の12月中旬に,10月1日リリース向け開発で変更を加えた機能Xの処理ロジックの誤りが検出された。この誤りを12月中に修正して本番環境へリリースするために,Eさんは③あるコンテナイメージを開発用PC上で起動させて,機能Xの誤りを修正した。
その後,Dさんはコンテナ型仮想化技術を活用した開発環境の構築を完了させ,開発者の開発環境へのパッチ適用作業を軽減した。