DevOpsのメリットとは?ウォーターフォールとの違いについて

 2020.05.26  ストレージチャンネル編集部

2009年開催のオライリー主催イベント、Velocity 2009にて画期的な開発手法がFlickrのエンジニアから紹介されます。それが、「DevOps(デヴオプス)」です。Flickrはこの開発手法により、1日10回以上ものリリースを実現したといいます。Velocity 2009でFlickrエンジニアが登壇した際に紹介したスライドが、今でも閲覧可能なのでぜひ一度ご覧ください。

10+ Deploys Per Day: Dev and Ops Cooperation at Flickr(1日10回以上のリリース:Flickrによる開発と運用の協力体制

本記事でご紹介するのは、そんなDevOpsのメリットです。とりわけクラウドサービスなど、定期的に機能をリリースしたユーザーの便を向上する必要性が高い分野において有効だとされているこの開発手法には、どのような特徴があるのでしょうか?旧来から主流の開発手法であるウォーターフォールとの違いも含めてご紹介します。

DevOpsのメリットとは?ウォーターフォールとの違いについて

DevOpsとは?ウォーターフォールとの違い

DevOpsは「Development(ディベロップメント:開発)」と「Operations(オペレーションズ:運用)」の2単語を掛け合わせた造語であり、開発チームと運用チームが共に手を取り協力し合う体制を表します。

システム開発(サービス運用)の現場では、「ユーザーの利便性を高めるために新しい機能を続々とリリースしたい」という開発チームの想いと、「ユーザーからの信頼性を維持するために安定稼働を続けたい」という運用チームの想いが交差し、対立しやすい関係性を生んでいます。

リリースしたい開発チーム、リリースして欲しくない運用チーム。しかし、両者がシステム開発や運用に携わる使命は、「システムやサービスを通じてユーザーの課題を解決し、ビジネス価値を高める」ことで一致しているはずです。そこに目を向けたFlickrエンジニアは、対立するのではなく協力することで従来以上に強力な開発・運用体制が取れるのではないか?と考え、DevOpsを考案します。

そして、DevOpsを採用することで「短期間での迅速は開発」、「テスト期間の短縮化による早期リリース」、「テスト・ビルド・リリースの自動化による安定性の維持」が実現できます。

Kubernetesの第一人者たちが選ぶストレージの極意とは
ネットアップのマイクロソフトOffice365向けバックアップ・アーカイブサービスご紹介

ウォーターフォールとの違い

ウォーターフォールは数十年前に確立された開発手法の1つで、要件定義から設計・開発・テスト・リリースに至るまで巨大な流れによってプロジェクトが進行します。それがまるで滝の水が上から下へと、逆流することなく落ちていくように見えることから、ウォーターフォールと名付けられました。

この開発手法は、実際の滝と同じように逆流が難しいのが特徴です。工程ごとの明確な成果物が設定され、それをクリアしなければ次の工程へ移ることはできません。従って、プロジェクト途中で仕様・要件の変更が生ると想定以上の手戻りが発生し、十中八九プロジェクトが遅延します。

従って、ウォーターフォールはDevOpsが使用される開発現場のように、素早いリリースが求められるような状況下では不利な開発手法となります。

詳しくは、こちら「DevOpsとは?ストレージ管理者が知っておきたいトレンド」記事でご参考にしてください。

DevOpsのメリット(3つの向上)

メリット1. 信頼性(リライアビリティ)の向上

前述のように、開発チームと運用チームのミッションは、「ユーザーの利便性を高めるために新しい機能を続々とリリースしたい」と「ユーザーからの信頼性を維持するために安定稼働を続けたい」で異なっているのが通常です。「動いているシステムには触れない」という運用の大原則がある限り、運用チームは開発チームによる容易なリリースを嫌います。ユーザーからの信頼性を損なう可能性が高いからです。

一方で、DevOpsで信頼性を高められるケースがあります。DevOpsでは開発チームと運用チームを繋ぎ、かつテスト・ビルド・リリースといった手作業で行われていた工程の自動化を図ることで、ヒューマンエラーを防げます。システムの信頼性を損なうようなリリースは、その多くが人手によるミスが発生しているのが原因です。それらの自動化すれば、運用チームもリリースを受け入れやすくなり、なおかつ安定した稼働によってユーザーからの信頼性を向上できます。

メリット2. 生産性(プロダクティビティ)の向上

開発チームと運用チームが対立しているような開発環境は、実は問題だらけです。「他のメンバーの修正を上書きしてしまう」、「本番環境で想定通りにシステムが動かない」、「リリースが複雑になり手順書が必要なほど」、「管理台帳の一貫性が無く、検索性も低い」などなど、挙げ出せばきりがありません。

この数々の問題を解決してくれるのがDevOpsです。DevOpsでは開発チームと運用チームがスムーズにやり取りをするために、多数のツールを活用します。開発や運用にかかわるさまざまな情報をExcelで管理している状況から想像もできないほど生産性が向上し、Flickrエンジニアが語った1日10回以上のリリースも不可能ではなくなります。

メリット3. 俊敏性(アジリティ)の向上

ウォーターフォールは、プロジェクトが終了するまで機能がリリースされない、いわゆるビックバンリリース形態です。一見、信頼性の高い開発ができるようにも思えますが、実際は要求変更に弱いシステムになりがちで、システム構築事態が目的になる可能性が高いでしょう。

一方、DevOpsはアジャイルに代表されるような俊敏性の高い開発手法を採り入れることから、機能の企画・計画からリリースまでの工程を非常にスピーディに進めることが可能です。

[SMART_CONTENT]

DevOpsに欠かせないツール

「DevOpsでは多数のツールを活用する」と説明しました。では、具体的にどのようなツールを活用するものなのでしょうか?

1. バージョン管理システム

ソースコードの過去のある時点の状態を復元したり、変更内容の差分を表示できたりするようにするシステムです。代表的なのがGitやSebversion、あるいはGitのホスティングサービスであるGitHubがよく使用されています。

2. バグトラッキングシステム

ソースコードに発生したバグのトラッキング(追跡)をはじめ、タスク管理・進捗管理・メンバー間の情報共有などが行えます。

3. CI / CDツール

システムの単体テスト及び結合テスト、ビルドなどの品質に関する作業を自動化し、システムの信頼性を維持するためのツールです。

4. 構成管理ツール

開発チームと運用チームのインテグレーションをサポートし、運用で行うリリース作業を自動化するためのツールです。

以上のツールと、DevOpsを成功させるための組織文化があれば、Flickrのような1日10回以上のリリースと安定的なシステム稼働も夢ではありません。この機会にぜひ、DevOpsの導入をご検討ください。

Kubernetesの第一人者たちが選ぶストレージの極意とは

RECENT POST「コラム」の最新記事


DevOpsのメリットとは?ウォーターフォールとの違いについて
ネットアップクラウドデータサービス
ハイパーコンバージドインフラも新たな世代へ NetApp HCI
NetApp All Flash FAS

RANKING人気資料ランキング

FlexPodクラウドアプライアンス
ブログ購読のお申込み