« Gitによるチケット駆動開発の事例 | トップページ | A successful git branching model とgithub flowの比較 »

2013/03/30

サーバー構築を構成管理とTDDで作業する時代になってきた

ChefやPuppetなど、サーバー構築をプログラムで作成する時代になってきた。
しかも、サーバー構築を構成管理とTDDで作業するのが最近の流れのようだ。
クラウドが当たり前の時代になった今、もう一つの技術革新が生まれているように思う。
クラウドについてはまだ理解不十分だけれども、気になる記事をメモ。

【元ネタ】
Chefのテストスイーツを色々試してみた (1) - カイワレの大冒険

Chefのテストスイーツを色々試してみた (2) - カイワレの大冒険

Chefサーバを動かすまでの方法をまとめてみた(自動化のススメ) - カイワレの大冒険

2008年出版された「ThoughtWorksアンソロジー ―アジャイルとオブジェクト指向によるソフトウェアイノベーション」では、ラストマイル問題が提示されていた。
ラストマイル問題とは、いくらソフトウェアを作っても、本番環境へリリース&稼働確認するのにかなりの時間がかかってしまうという内容。
開発環境で正常動作しても、本番環境へのデプロイや本番環境相当の開発環境の構築に手間がかかる所に大きな問題点がある。
開発がTDDやCIでも、肝心の本番環境で動作しなければ意味が無い。

ラストマイル問題には3つのボトルネックがある。
一つ目は、本番環境は大規模で複雑で高価であること。
以前は、サーバーやネットワーク機器のインフラを揃えるのも高価だし、特にDB周りのミドルウェアは商用製品ならどうしてもお金はかかる。

2つ目は、本番環境というインフラを設計し、構築し、検証するコストが大きいこと。
インフラ構築はどうしてもWF型開発のように、設計重視にならざるをえない。
インフラというハードウェアの購入時からOSのインストール、DBやWebサーバーのインストールに至るまで、手順を間違えると後戻りできないからだ。

3つ目は、たとえ本番環境を用意し、テストも用意できたとしても、全てのテストを実行するには時間がかかりすぎること。
インフラ担当者ならば、サーバー間の接続テストや負荷テストを色々考えないといけない。
アプリ担当者ならば、アプリケーションのシステムテストや受入テストのテストケースも重要だが、業務系システムならば、膨大なテストデータを予め投入しておく必要もある。
そして、テストデータが多いほど、回帰テストも時間が長くなる。

しかし、ラストマイル問題のようなインフラ周りの長年の問題も、クラウドと言う新しい技術が大きく変えているようだ。
本番環境を仮想化するというだけでなく、ライブラリやミドルウェアのバージョンを構成管理して、インフラの稼働確認をテスト駆動していく発想で推し進める。
インフラというハードウェアをソフトウェアへ変換することで大きく変わる点は、何度もやり直しが効くため、アジャイルにインフラ構築しやすくなることだ。

アジャイルにインフラ構築できることによって、最初は小さく作っておき、ユーザからのアクセス数が増えてきたら動的にリソースを増やすというシステム設計が可能になる。
その分、インフラ構築の初期投資も浮くし、最初からサーバーの負荷を想定した完璧な設計も必要なくなる利点がある。

上記の記事では、Chefを使って環境構築を自動化するだけでなく、RSpecやCucumberで受入テストも行い、最後はRakeでまとめてテストできるようにして、継続的インテグレーション化していく方向のようだ。
従来のインフラ構築とは全く違うすごいやり方だなと思う。

後もう一つ注意すべき点は、ChefやRSpecやCucumberなど、Rubyで全てがまかなえること。
クラウド時代のサーバー構築では、Rubyという技術が必須になってきているように思える。

最近の技術のトレンドは、GitとGitHubにおけるPullRequest主導のチケット駆動開発、そしてRubyライブラリを中心としたクラウド技術にあると思う。
この流れを今後も追いかけていく。

|

« Gitによるチケット駆動開発の事例 | トップページ | A successful git branching model とgithub flowの比較 »

Agile」カテゴリの記事

Git・構成管理」カテゴリの記事

Jenkins」カテゴリの記事

ソフトウェア」カテゴリの記事

ソフトウェア工学」カテゴリの記事

チケット駆動開発」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)


コメントは記事投稿者が公開するまで表示されません。



« Gitによるチケット駆動開発の事例 | トップページ | A successful git branching model とgithub flowの比較 »