-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy path01.tex
9 lines (5 loc) · 4.57 KB
/
01.tex
1
2
3
4
5
6
7
8
9
\section{はじめに}
科学やビジネス領域における問題の複雑化への要求に応えるため,システムが大規模化・複雑化する\cite{survey_and_taxonomy_of_iaas}のに伴い,UNIXシェルにより書かれたプログラムに代わり,サーバの設定を宣言的なコードで扱う構成管理手法が広く提供されている.その実装として1993年にCFEngine\cite{cfengine}が登場し,その後様々な構成管理ツールが生み出されているが\cite{cmt},2005年のPuppetの登場\cite{puppet}と2006年のAmazon EC2の登場\cite{ec2}をきっかけに``Infrastructure as Code''という概念が台頭した.この概念における``Infrastructure''はアプリケーションを載せるためのインフラを意味し,OSやミドルウェアといったソフトウェアレイヤーを含む.そして,インフラをコードで扱うことから,アジャイルソフトウェア開発\cite{agile_manifesto}と同様の手法がサーバ構築・運用にも適用できるのでは,という発想が生まれ``Agile infrastructure and operations''\cite{agile_infrastructure}という流れが生じている.
``Agile infrastructures and operations''を実践するためのプロセスとして,テスト駆動開発\cite{test_driven_development}の手法をサーバ構築・運用に応用した``Test-Driven Infrastructure''\cite{test_driven_infrastructure_with_chef}が提案されており,このプロセスを支援するテストフレームワークがいくつも登場している\cite{chefspec}\cite{rspec-puppet}\cite{cucumber-chef}\cite{minitest-chef-handler}\cite{test-kitchen}\cite{rspec-system}.これらのうち,ChefSpec\cite{chefspec},rspec-puppet\cite{rspec-puppet}は,構成管理ツール固有の言語で書かれたコードの内容をテストするのみで,実際にコードをサーバに適用し,設定が正しく行われたかどうかまではテストしない.そのため,単体テストしては利用できるが結合テスト用途には利用できない.Cucumber-chef\cite{cucumber-chef},minitest-chef-handler\cite{minitest-chef-handler}はChefという特定の構成管理ツールに依存している.そのため,Chef以外の構成管理ツールでは利用することができない.Test Kitchen\cite{test-kitchen}やrspec-system\cite{rspec-system}は,テスト用Virtual Machine(以降VMとする)の作成,テスト用VMへの構成管理ツールの適用,テストの実行をトータルで行う統合テストスイートであるが,標準で持つテスト実行機能は汎用性に乏しく,特定の構成管理ツールに依存しており,OSやディストリビューション毎の違いを意識したテストコードを書く必要がある.
我々は,テストフレームワークの汎用性を高めるために,構成管理ツール特有の振る舞い,例えば,パッケージのインストールやシステムユーザの作成などを抽出,一般化し,それらをテストするためのコマンドをOSやディストリビューション毎に分離,その上でOSや実行形式の違いを吸収するレイヤーを設けることにより,汎用コマンド実行フレームワークを定義した.続いて,テストコードの記述の抽象度を高め可読性を上げるために,宣言的かつ自然言語に近い記法で汎用コマンド実行フレームワークを操作できる制御テストフレームワークを定義した.これにより,テスト対象の環境の違いを気にすることなく,直観的にテストが書ける.また,フレームワークを用途別に分離して定義することにより,制御テストフレームワークを独自の記法に変更することも容易である.例えば,本論文で提案するテストフレームワークでは,テスト記法としてRSpec\cite{rspec}を採用しているが,他のテストフレームワークに差し替えたり,あるいはまったく独自の記法に差し替えたりすることも可能である.このテストフレームワークをserverspec\cite{serverspec}と名付けた.serverspecを採用している企業も既に存在する\cite{nintendo}\cite{wantedly}.
本論文の構成について述べる.2章ではサーバの構成管理とテスト手法について更に詳しく述べる.3章では提案するサーバテスト手法と実装について述べ,4章では提案手法の評価について論じ,5章で結びとする.