連載
» 2013年12月03日 18時00分 UPDATE

DevOps時代の開発者のための構成管理入門(終):継続的デリバリ/デプロイを実現する手法・ツールまとめ (1/2)

バージョン管理や継続的インテグレーションとも密接に関わる継続的デリバリ/デプロイメントの概要や主なツール、経緯、実践事例を紹介。実践手法として「ブルーグリーン・デプロイメント」「Immutable Infrastructure」が注目だ。

[中村知成, 染田貴志,株式会社ヌーラボ]

完全に自動化されたリリースプロセスが必要となる「継続的デリバリ」とは

 いよいよ本連載「DevOps時代の開発者のための構成管理入門」も最終回となりました。今回のトピックは「継続的デリバリ」です。

 継続的デリバリは、本連載で扱ってきたバージョン管理継続的インテグレーションなどの単一のプラクティスではなく、それら一連のプラクティスを包含した、ソフトウェアデリバリ全体に対しての「考え方」「アプローチ」といえるものです。

 「継続的デリバリを実践する」ということは、いついかなる状態のソフトウェアでもクリック1つでプロダクション環境に反映できることを意味します。そのためには、完全に自動化されたリリースプロセスが必要となり、そこでバージョン管理システムや継続的インテグレーションサーバが活用されます。

 ここまでの連載の内容や、後述する継続的なデプロイメントも含めた一連のプラクティスとの関連は以下のようになります。

devops_cm5_1.jpg 継続的デリバリの全体像

 この図にあるように、バージョン管理や継続的インテグレーションは個別に独立してあるのではなく、階層的な関係にあります。上に行けば行くほど、そのプロダクトをより柔軟・迅速にユーザーに届けることができる半面、実現の難易度は高くなっていきます。

「ビジネス面からの価値創造」の視点から継続的デリバリを理解する

 さて、継続的デリバリを理解する上で重要なポイントは、これを技術的なプラクティスの延長線上で捉えるより、むしろ「ビジネス面からの価値創造」の視点に立って考えられるべきものである、ということです。

 連載第2回「ITS/BTSによるプロジェクト運営7つの勘所と手軽に使える5ツール」の冒頭で取り上げた書籍『継続的デリバリ』の著者、Jezz Humble氏は記事「Continuous Delivery: The Value Proposition | What Is Continuous Delivery?」(InformIT)で、継続的デリバリのビジネス上のメリットを以下のように述べています。

1つは、あなたのビジネスがどれくらい価値を生み出すのかをより素早く検証することができ、またそのビジネスを実際のユーザーのフィードバックに合わせて軌道修正できるようになることだ。

そして2つ目は、長期プロジェクトにありがちな「ビッグバン」リリースに比べて圧倒的に低いリスクでソフトウェアをデリバリできるので、それに伴うコストが予測可能なものとなることである。

 1つ目のメリットはまさに、リーンスタートアップで説かれているスタートアップが成功するために目指すべき姿そのものです。これは言い換えれば、「継続的デリバリを正しく理解し、チームで実践するには、技術的な側面だけにフォーカスするのではなく、ビジネス面で生み出す価値を視野に入れた形で推し進める必要がある」ということです。

 継続的デリバリのスタートラインに立つ時には、まず自分の仕事が生み出している「価値」について振り返ってみてください。

継続的デリバリのトレンドとツール

 ここでは、継続的デリバリについてのトレンドや、そこで使われるツールを俯瞰して見てみましょう。

 ここまでの連載で取り上げてきたバージョン管理、自動ビルド、継続的インテグレーションといったソフトウェア開発における技術やプロセスの成熟に加えて、継続的デリバリの実現に寄与した原動力は、インフラの仮想化に関する技術の進化だといえるでしょう。その進化を少したどってみましょう。

「ハードウェアの仮想化」

 まず、メインフレームやオープン系のハイエンドサーバでは、「ハードウェアの仮想化」がなされていました。そこでは動的にメモリやCPU資源を増減させたり、障害の発生したコンポーネントを切り離すといったシステムの可用性に着目した形での仮想化がなされています。そういったハードウェアへのOSのインストールや設定には、「Kickstart」や、それをベースにした「Cobbler」などのツールが使われています。

「OSベースの仮想化」

 次に「OSベースの仮想化」が進み、「Xen」「VMware 」などのハイパーバイザ型のものと、「OpenVZ」「LXC」などのコンテナタイプが、おのおの進化してきました。OSベースの仮想化では、OSそのものをポータブルなオブジェクトとして扱うことで、OS環境そのものを別の物理サーバに移したり、簡単に複製できたりするようになり、スケールアウトやスケールアップがより容易になりました。

「サーバ構成管理ツール」

 ハードウェアから切り離された形でOS環境を手軽に扱えるようになったことで、サーバ環境の中身をより簡単に構築、管理できるように「Chef」「Puppet」「Ansible」といった「サーバ構成管理ツール」が登場しました。

クラウドサービスの登場で「ハードウェアの調達がいらなくなった」「プログラマブルに環境を調達できるようになった」

 そして、AWSやWindows Azureをはじめとする多くのクラウドサービスを利用すれば、ハードウェアの存在を意識せずに環境そのものをプログラマブルに調達できるようになりました。

 ここで、大きなパラダイムシフトが起こります。

 「ハードウェアの調達がいらなくなったこと」「プログラマブルに環境を調達できるようになったこと」で、デリバリに必要なほぼ全てのコンポーネントが自動で、またごくわずかの時間で準備できるようになったのです。

「オーケストレーションツール」

 そして、そうやって調達された大量のホストに対してアプリケーションをデプロイしたり、ミドルウェアの調整を行ったりするための「オーケストレーションツール」として、「Capistrano」「Fabric」といったツールが活用されています。そして文字通りワンクリックでアプリケーションが本番環境に反映されるという「継続的デリバリ」が現実のものとなったのです。

 ここまで紹介したツールとおのおのの関係を簡単に図にすると、以下のようになります。

devops_cm5_2.jpg ツールスタック
       1|2 次のページへ

Copyright© 2017 ITmedia, Inc. All Rights Reserved.

@IT Special

- PR -

TechTargetジャパン

この記事に関連するホワイトペーパー

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。