[修士論文] コンテナ仮想化に基づく開発における構成管理プロセスの提案

小林研M2の木下さんが修士論文を提出しました.

題目:コンテナ仮想化に基づく開発における構成管理プロセスの提案
論文概要:

現代のソフトウェア開発プロジェクトにおけるソフトウェア構成管理では、外部依存の管理や依存関係の解決をパッケージ管理ツールを用いて行うことが主流である。
これによりソースコードの変更に起因しないデグレーションを発生することがある。またパッケージ管理ツールに委ねた外部依存構成はプロジェクトのリポジトリ上では管理されていないため問題の発見と特定が困難となる。

Dockerにおいてこのデグレーションの発生の要因であるDockerfileのビルド再現性の低さに対処するため外部依存の指定記述にバージョン固定を用いる運用や、その運用を支援する手法が提案されている。しかしバージョン固定を厳密に行ったDockerfileは長期的にはビルド可能性が低下すると報告されており、また外部依存指定の対象とするバージョンの更新作業に対する支援も不十分である。

そこで、本研究では開発プロジェクトにおけるDockerfileのビルド再現性とビルド可能性を両立を目的として、新たな構成管理プロセスを提案する。提案する構成管理プロセスでは、開発プロジェクトのリポジトリ上で開発者が作成したDockerfileとそれに基づいて生成する外部依存のバージョンが固定化された独自形式のファイルMoldfileを共に管理し、後者を継続的に自動更新する。また、提案する構成管理プロセス導入以前の時期のDockerfileに対しても事後的にMoldfileの生成を行えるよう、過去の特定の時点における外部依存構成の推定に基づくMoldfileの推定生成手法も提案する。

提案手法の有用性を確認するために、既存の開発プロジェクトのDockerfileとイメージを対象に2つの評価実験を行った。1つめでは既存のDockerfileに対してMoldfileの生成を行いMoldfileによって記録される構成情報の量と質、有用性を評価することで、Moldfileが外部依存の構成情報の記録として有用であることを確認した。2つめでは既存の開発プロジェクトの過去の時点のDockerfileを対象にDockerfile上の外部依存のバージョン推定を行い、過去の時点のMoldfileの推定生成手法の精度を評価した。この実験においてバージョン推定の精度が極めて低い値となったため、その原因と提案手法の課題を明らかにするため推定結果と当時の実際のバージョンとの関係性の分析を行った。分析により実験に使用した外部依存情報のデータベースの情報が不十分であることが確認したほか、実際にイメージにインストールされる外部依存のバージョンにはバージョンの新しさだけでなくイメージに使用しているOSの環境も関係している可能性を指摘し、提案手法におけるMoldfileの推定生成手法の改善の指針を示した。