本文へジャンプします。

TOP

ニフクラクラウドナビ

「DevOps」とは?「開発担当者」と「運用担当者」が連携してビジネス価値を高める開発手法

IT技術の進歩と歩調を合わせるようにユーザーのニーズは日々変化し、次々に生まれてくる新しいニーズにマッチしたサービスを迅速に市場へ投入して随時改良を加えていくことが、企業活動に求められるようになりました。

特にIT関連のシステム開発・ソフトウェア開発の分野において、そのような市場ニーズに適した開発スタイルとして注目されているのが「DevOps(デブオプス)」です。

明確な定義が難しく誤解されやすい「DevOps」

明確な定義が難しく誤解されやすい「DevOps」

DevOpsは、「Development(デベロップメント=開発)」と「Operations(オペレーション=運用)」を組み合わせた造語で、開発担当と運用担当が緊密に連携して、柔軟かつスピーディーにシステム開発を行う手法です。

DevOpsの主な特長として下記の2つが挙げられます。

  • 短期間で迅速な開発の実現
  • テスト期間の短縮による早期リリースの実現

開発者と運用者にはそれぞれ異なるミッションがあり、例えば、開発者が「ユーザーのために新機能を早く追加したい」ことを考えるのに対し、運用者は「新しい機能よりも安定稼働を重視したい」と考えた場合、対立が生じます。

このように要望が異なる両者の対立を解消し、共通の目的達成に向けて連携するための活動そのものがDevOpsなのです。両者は、ユーザーに提供するビジネスの価値を高めるだけでなく、確実にそして迅速に提供し続けるという共通の目的があるはずです。

「特定の技術や開発ツールなどを利用すること」=「DevOps」ではなく、それらはDevOpsを行うための手段でしかありません。共通の目的を達成するために、開発と運用という異なるチームが協力するという文化が共通認識となっていることが重要です。

したがって、明確な定義が難しく誤解もされやすい概念と言えます。

DevOpsはなぜ生まれたのか

DevOpsがどのようなものかを知るために、簡単にDevOpsの成り立ちを振り返ってみます。

DevOpsという言葉は、アメリカのメディア企業であるオライリー主催の「Velocity 2009」というカンファレンスで行われた、写真共有サービス「Flickr(フリッカー)」のエンジニアによるセッション「10+ Deploys Per Day: Dev and Ops Cooperation at Flickr」で初めて登場しました。

システム開発の手法は常にさまざまな方法が提案されていますが、DevOpsはクラウドサービスの普及に伴い、新しい開発手法が求められていて、そのニーズに対応した手法の1つと位置付けられています。

つまり、クラウドサービスの登場によって、以前は手動で時間がかかっていた処理の自動化や効率化が可能になるという大きな変化が起きました。開発者(Dev)が行うソフトウェア開発はもちろん、運用者(Ops)が行っていた業務が、プログラミングやツールを利用することで自動化/効率化が可能となり、両者は業務的に緊密に連携して共通の目的を達成するための体制が作りやすくなったと言えます。

DevOpsがシステムの自動運用化・リソースサイクルを変える

先ほど、DevOpsには明確な定義が難しいと紹介しましたが、その目的は明確であり「開発者と運用者が協力し合うことにより、リリースサイクルの短縮化を図る」ことで、顧客満足度の高いサービスを迅速かつ継続的に提供するというものです。

そのためには、開発者と運用者が活発なコミュニケーションを行い、目的を共有することが重要になりますが、それを実現するための環境として、クラウドサービスの利用やツールの導入だけではなく、自動化を前提とした開発手法への刷新や企業・組織としての文化を変えていく必要があります。

DevOpsを理解するための3つのポイント

ここでDevOpsについて、3つの観点から重要な要素をまとめてみます。

1.コラボレーション

開発と運用の目的はそれぞれ異なります。開発側の目的が新しいサービスを迅速に投入しシステムを改良していくことであるのに対し、運用側は「動いているシステムには触らない」という言葉に象徴されるように、なによりも安定稼働を重視する傾向が見られます。

このような関係にある開発(Dev)と運用(Ops)がサイロ化して対立関係が生じると、システムの開発と運用はスムーズに行えなくなるのは明白です。

開発と運用の連携はもちろんのこと、リリースサイクルを向上させて新サービス展開に差別化を図るための手段としても、DevOpsは欠かせません。

2.開発手法

近年では、コアとなるサービスをリリースして、運用しながら機能を追加したりサービスを改良したりしていく開発スタイルが求められるようになってきています。また、作業を自動化してヒューマンエラーを防止する目的で、DevOpsで提案されている代表的な3つの開発手法を紹介します。

継続的インテグレーション
(CI:Continuous Integration)
ビルドとテストが自動化されている開発手法を指します。例えば、ソースコードをリポジトリにマージすると自動的にビルドとテストが実行される状態です
継続的デリバリー
(CD:Continuous Delivery)
継続的インテグレーション(CI)に加えて、ステージング環境へのデプロイを行いテストを実施してリリースの準備を行うこと
継続的デプロイメント
(CDep:Continuous Deployment)
継続的インテグレーション(CI)に加えて、ステージング環境へのデプロイやテストだけでなく、リリースまでのプロセスを自動化すること
3.ツール

前述の3つのキーワードを実行するためには、ツールの活用が不可欠です。DevOpsで使用される代表的なツールを紹介します。

バージョン管理システム 過去のある時点の状態を復元したり、変更内容の差分を表示できるようにするシステム。代表的なものとしてはGitやMercurialやSubversionなど
バグトラッキングシステム バグのトラッキングをはじめ、タスク管理、進捗管理、情報共有を行うシステム。RedmineやJIRAなど
CI/CDツール ソフトウェアの単体テスト/結合テスト、ビルドなどの品質に関連する作業を自動化して品質を保つためのツール。Jenkinsなど
構成管理ツール 開発と運用間のインテグレーションをサポートして、運用で行うリリース作業を自動化するためのツール。Ansibleなど

コラボレーション、開発手法、ツールの3つのポイントでDevOpsを解説してきましたが、記事文中でも触れたように、DevOpsには「明確な定義」「正解」というものはありません。

単純にツールを導入すればDevOpsが実現するようなものではなく、開発や運用に関わるさまざまな人々をつなげて顧客満足度の高いサービスを迅速に提供するための組織文化を構築する、という重要な部分を理解しなければなりません。

DevOpsは、柔軟かつスピーディーなシステム開発の方法論として、今後ますます普及が進むものと予想されます。

クラウド移行のポイントを徹底解説無料ebookをダウンロード

導入のご相談はお電話でも受け付けております。

0120-22-1200

0120-22-1200

受付時間:平日9:00~17:45
※携帯電話・PHSからもご利用可能