最近では、ソフトウェア開発者が集うイベント(企業主催・ユーザー主催を問わず)にて「DevOps(デヴオプス)」を耳にする機会が増えています。この開発手法が最初に提唱されたのは、2009年のこと。米オライリーが開催した年次イベント「Velocity 2009」にて、FlickrのエンジニアであるJohn AllspawとPaul Hammondが紹介しました。
その概要は「10+ Deploys Per Day: Dev and Ops Cooperation at Flickr(1日10回以上のリリース:Flickrによる開発と運用の協力体制)」というスライドにまとめられ、現在でも閲覧可能となっています。
それではいったいDevOpsの定義とは何なのでしょうか。実はDevOpsに対する明確な定義はいまだ存在しません。柔軟な発想を採り入れて開発に取り組める反面、DevOpsの本質を理解しないまま導入してしまうケースも少なくないのが問題です。
そこで本記事では「DevOpsとは何か?」を、アジャイルとの違いを含めて紹介していきます。

DevOpsはアジャイルから生まれた?
まず、DevOpsとアジャイルの関係を明らかにしておくと、ドーナツ状の大枠にアジャイルと呼ばれるカテゴリの開発手法が存在し、小枠の中にDevOpsが存在している状態です。
アジャイルの原典とも言えるのが「アジャイルソフトウェア開発宣言」です。俗にアジャイルマニフェストと呼ばれるこの文書は、アジャイルの分野において名声のある17名の開発者が、米ユタ州のスノーバードと呼ばれるスキーリゾートに会し、各人が提唱してきた軽量ソフトウェア開発手法の重要な部分を統合することについて議論した末に生まれました。下記に、「アジャイルソフトウェアの12の原則」より重要な項目を抜粋します。
- 顧客満足を最優先し、価値のあるソフトウェアを早く継続的に提供します。
- 要求の変更はたとえ開発の後期であっても歓迎します。変化を味方につけることによって、お客様の競争力を引き上げます。
- 動くソフトウェアを、2-3週間から2-3ヶ月というできるだけ短い時間間隔でリリースします。
- ビジネス側の人と開発者は、プロジェクトを通して日々一緒に働かなければなりません。
- 動くソフトウェアこそが進捗の最も重要な尺度です。
- チームがもっと効率を高めることができるかを定期的に振り返り、それに基づいて自分たちのやり方を最適に調整します。
こちら「DevOpsとは?ストレージ管理者が知っておきたいトレンド」記事もご参考にしてください!
DevOpsとは何か?
では、アジャイルの一大ムーブメントから生まれたDevOpsはどのような開発手法なのか?シンプルに言えば、それは「開発チーム(Development)と運用チーム(Operations)が互いに協力し、素早いビルド・テスト・リリースと信頼性の高いサービス稼働を目指すための体制」を意味します。
一般的に、開発チームには「ユーザーの利便性を高めるために新しい機能を続々とリリースしたい」という思い、運用チーム「ユーザーからの信頼性を維持するために安定稼働を続けたい」という思いが交差しています。これは両者が対立しやすい環境を生み出す最たる原因です。
一方で開発チームと運用チームには「システム(サービス)によってビジネスの価値を高め、それを確実かつ迅速にユーザーへ届け続ける」という共通のミッションがあります。つまり開発チームと運用チームは協力して然るべき関係で、本来対立するべきではないのです。
DevOpsに欠かせないツールと組織文化
Velocity 2009のセッションにてFlickrエンジニアが紹介した「10+ Deploys Per Day: Dev and Ops Cooperation at Flickr」をきっかけに、様々な組織や開発者がDevOpsに有効性を感じて取り組み始めました。そしてDevOps実現のために欠かせないツールと組織文化があります。
ツール
バージョン管理システム
ソースコードの過去のある時点の状態を復元したり、変更内容の差分を表示できたりするようにするシステムです。代表的なのがGitやSebversion、あるいはGitのホスティングサービスであるGitHubがよく使用されています。
バグトラッキングシステム
ソースコードに発生したバグのトラッキング(追跡)をはじめ、タスク管理・進捗管理・メンバー間の情報共有などが行えます。
CI / CDツール
システムの単体テスト及び結合テスト、ビルドなどの品質に関する作業を自動化し、システムの信頼性を維持するためのツールです。
構成管理ツール
開発チームと運用チームのインテグレーションをサポートし、運用で行うリリース作業を自動化するためのツールです。
[SMART_CONTENT]
組織文化
互いを尊重する
チームは違え、一緒に働くメンバーのことを心から思いやり、すべてのメンバーを人間として丁重に扱い、その能力や功績を評価する。
互いを信頼する
自分以外のメンバーはすべて優秀であり、正しいことをすると信じて時には仕事を任せる。
失敗に対し健全な態度を取る
新しいことに挑戦すれば失敗するリスクは自然と高くなるもの。そのため、挑戦に失敗は付きものと考え、誰かのミスを決して責めたりしないこと。
失敗した相手を非難しない
失敗が明らかであっても、それを非難するような言葉を断じて吐かない。それよりも、要因分析を行って次に同じ問題が起こらないようにどうすればよいか?という建設的な議論を行う。
ツールと組織文化の「カイゼン」活動
開発チームと運用チームが「システム(サービス)によってビジネスの価値を高め、それを確実かつ迅速にユーザーへ届け続ける」という共通のミッションを達成し続けるためには、ツールと組織文化の両面から繰り返し「カイゼン」活動を続けていくことが重要だと考えられています。
必要なツールと組織文化を導入すればDevOpsが完成なのではなく、定義が曖昧だからこそ、組織ごとに独自のDevOpsを構築することが大切です。だからこそ、DevOpsの基本を押さえて新しい開発手法を導入したのならば、運用を通じて定期的なレビューを行い、問題点と改善点を洗い出して繰り返し「カイゼン」していくことが重要なのです。
DevOpsを検討しよう!
いかかでしょうか?DevOpsを導入する組織は続々と増えています。しかし中にはDevOpsを誤解しながら取り組んでいるケースも少なくありません。この機会に、DevOpsの基本を押さえながら、画期的な開発手法にぜひチャレンジしてみてください。
- カテゴリ:
- トレンド