- コラボレーター
- SELECK編集部
「DevOps」とは? 概要やメリット、ツール、導入事例【3選】までわかりやすく徹底解説!
近年、IT業界で「DevOps(デブオプス)」という言葉が注目を集めています。DevOpsとは、「開発(Development)」と「運用(Operations)」を組み合わせた造語で、その名の通り、ソフトウェア開発と運用のプロセスを統合する考え方や組織の仕組みを指します。
DevOpsの目的は、開発や運用といったチームを越えた連携・協力を通じて、より顧客のニーズに答える価値の高いソフトウェアを確実に、かつスピーディーに届けることです。
その実現のために、開発におけるビルドやテスト、リリース、デプロイや監視といった作業をできる限り自動化し、統合するだけでなく、チーム間のコミュニケーションやコラボレーションを促進するような組織文化の醸成を行います。
このようなDevOpsを導入することで、従来型のソフトウェア開発より速いペースで顧客に良いサービスを提供し、市場競争力を高めることができるようになります。現代において品質の高いソフトウェアを開発するには、DevOpsの導入が必要不可欠と言っても過言ではないのです。
そこで本記事では、DevOpsの定義や導入するメリット、国内外企業の成功事例まで、わかりやすく徹底的に解説します。
<目次>
- DevOpsとは? その定義や歴史、基本的な考え方は?
- エンジニアにとってのDevOpsの必要性と重要性、導入のメリット
- DevOpsを組織に導入する際のポイント4つ
- DevOpsの推進をサポートするツール
- DevOpsと「アジャイル開発」「継続的デリバリー」の違い
- 【事例3選】DevOpsのベストプラクティス
DevOpsとは? その定義や歴史、基本的な考え方は?
DevOpsの始まりは、2007年頃にさかのぼります。当時、ソフトウェア開発とIT運用のコミュニティが、開発と運用チームが分断されている従来の開発モデルに懸念を示したのがきっかけでした。
というのも、古くからある「ウォーターフォール方式」と呼ばれる開発モデルは、開発者と運用者が別々に動くことが基本でした。
開発チームが数ヶ月かけて開発し、運用チームがさらに数ヶ月以上にわたってテストを実行する。その結果として、ソフトウェアのリリースサイクルが長いと数年ものスパンになるなど、多大な時間を要していました。
そういった問題点を受けて登場したのが、より迅速で柔軟な「アジャイル開発」と呼ばれる手法です。この手法では「要件定義→設計→実装→テスト→リリース」を1つのサイクルとして細かく速いスピードで繰り返し、優先度の高い機能から順次リリースすることで、リリースのサイクルを1〜2週間に短縮することを可能にしました。
しかし、テストに時間がかかるのは従来の開発モデルと変わりありません。1つのリリースサイクルが短縮されても、問題点があれば何度もやり直す必要があるため、最終的なリリースまでは1年程度必要なこともあるなど、開発から運用までの時間を大きく短縮するという課題は残っていました。
そういった従来のソフトウェア開発における課題を解決するために生まれた考え方が、「DevOps」です。
DevOpsは冒頭でお伝えした通り、ソフトウェア開発(Development)と運用(Operations)を一体化した造語で、ソフトウェアの計画(PLAN)から開発(DEVELOP)、リリース(DELIVER)、運用(OPERATE)までの一連のプロセスが独立することなく、相互に連携し合うことが特徴です。
この一連のプロセスを短期間で繰り返すことで、高品質でスピーディな開発を目指すのがDevOpsの基本的な考え方になります。
(参考・画像引用元:What is DevOps?|Azure DevOps)
エンジニアにとってのDevOpsの必要性と重要性、導入のメリット
DevOpsを導入するメリットは、おもに以下の4つです。
- 開発からリリースまでのスピード向上
- 高品質なソフトウェア開発
- 作業や連携の効率化
- 競合他社に負けない製品開発
従来の開発手法では、リリースサイクルを加速させるためにエンジニアがコードを量産する一方で、運用チームは安定したシステムを提供するために何度もテストを実行。その過程でテストに時間がかかり、リリースを遅らせるケースが多くありました。
しかしDevOpsを取り入れると、開発チームと運用チームの「サイロ化」を防ぐことができ、ソフトウェア開発における各フェーズで相互に連携が行われます。
また、開発〜運用のサイクルを素早く回すために、プロセスの見直しや各種ツールの導入による自動化・効率化が率先して実行されます。それによって、開発スピードや品質の向上、業務効率化が期待できるのです。
また、そのメリットを生かしてユーザーのニーズに素早く対応し、競合他社に負けない製品を開発すれば、ビジネスの成功にも大きく近づくことができるでしょう。
DevOpsを組織に導入する際のポイント4つ
DevOpsを導入する際は、これまでの開発における固定概念を捨て、組織の中に新たな「文化」を構築することが大切になります。
ここでは、組織全体がDevOpsの文化を理解したうえで、高いパフォーマンスで開発に取り掛かるチームを育成するために重要となる4つのポイントを挙げていきます。
- コラボレーション、プロセスの可視化、アライメント
DevOpsの実践においては、チーム間の信頼とコラボレーションが必要不可欠です。開発チームやITチームなど開発に関わるすべてのチームは、開発プロセスや優先順位などを共有し合い、協力して作業を進めなければなりません。
また、プロセス全体の可視化により、進捗状況の共有や問題の特定などができれば、迅速に対処できます。
もう1つ重要となるのが、目標達成のためにチーム全員が同じ方向に向かって協力するアライメントです。一人でも方向を間違えれば、スピーディな開発や運用は実現できません。
これら3つの特徴が、DevOps文化の成熟度とパフォーマンスの向上に重要な役割を果たします。
- チームメンバー同士の協力
チームメンバー同士が協力し、自分の役割以外にも主体性を持って関わることも欠かせません。
例えば、開発チームのメンバーが運用フェーズにも関わったり、運用チームのメンバーが、開発段階から一緒にセキュリティやコンプライアンスについて考えたりするといった形です。
このように各チームメンバーがお互いの役割に携わることで、一体となってソフトウェア開発に取り組むことができます。
- KGIやKPI指標の設定
DevOpsによって組織のパフォーマンスを向上する上では、その効果を継続的に測定することが重要です。
各企業が重視する項目によってKPIの指標は変わりますが、代表的なものとしては、開発生産性を示すメトリクスであるFour Keys(下図参照)を用いて開発の効率を測るケースが挙げられます。
▼Googleが提唱した開発パフォーマンスの指標「Four Keys」(※こちらを参照し編集部が作成)
- 継続的なプロセスの改善
継続的にプロセスの改善を行うことも、DevOpsの文化を浸透させるポイントです。ユーザーのニーズに素早く対応しつつイノベーションを促進するため、常に改善を続ける体制が求められます。
(参考:What is DevOps?|Azure DevOps)
DevOpsの推進をサポートするツール
これまで何度か触れてきたように、DevOpsを推進する上では開発を自動化・効率化する各種ツールの導入は欠かせません。
具体的には、「プラン、コード、ビルド、テスト、デプロイ、運用、モニタリング」といった個々の開発プロセスに対して、それぞれのフェーズと自社の課題にマッチしたツールを選ぶ必要があります。
例えば、「コードの管理、共有」フェーズではGit、GitHub、GitLabなどを活用したり、「ビルド〜テスト」フェーズではCI/CDツールを活用したりします。CI/CDツールとは、継続的インテグレーション(CI)と継続的デリバリー(CD)を自動化するためのツールで、具体的にはTravis CI、Jenkins、CircleCI、Azure DevOpsなどがあります。
また、「テスト自動化」に特化したツールとしては、Selenium、Autify、MagicPodといったものがあり、その他にもそれぞれのフェーズに合わせて展開されているツールは多岐に渡ります。
- パッケージ管理ツール:Artifactory、Nexus、JFrog など
- モニタリングツール:ELK Stack、Prometheus、Grafana など
- インフラ管理・自動化ツール:Ansible、Chef、Puppet など
- クラウドプラットフォーム:Amazon Web Services、Microsoft Azure、Google Cloud Platform など
- チームコラボレーションツール:Slack、Microsoft Teams、Asana など
(参考・画像引用元:https://biplus.com.vn/devops-automation-tools/)
こうしたDevOpsツールの選定においては、機能性、ユーザビリティ、インテグレーション(他ツールとの連携性)、スケーラビリティ、セキュリティなど、さまざまなポイントを押さえることが重要です。自社にあったツールを選定するために、ぜひ調査してみてはいかがでしょうか。
DevOpsと「アジャイル開発」「継続的デリバリー」の違い
ソフトウェアの開発手法において、DevOpsと関係の深い言葉には、「アジャイル開発」、「継続的デリバリー(CD)」などがあります。これらとDevOpsとの違いはどこにあるのでしょうか。
まず、DevOpsは「迅速かつ柔軟なサービス提供を行うために、開発チームと運用チームが協力することが重要」という考え方や仕組みづくりを指します。
次に、アジャイル開発ですが、そもそも「アジャイル」とは「機敏な」「素早い」という意味を持つ言葉です。アジャイル開発はそれらの特徴をもったソフトウェア開発の手法の総称を指し、小さなチームを組んで、短い開発サイクルを繰り返しながら機能を追加していきます。
また、開発サイクルの過程で設計の変更があっても素早く対応できるため、リリース計画は綿密に作り込まないという特徴があります。
※「アジャイル開発」の詳しい内容についてはこちらの記事をご覧ください
【事例7選】「アジャイル」とは? 開発やHRなど多くの分野で注目される理由を徹底解説!
(参考:https://reqtest.com/agile-blog/agile-vs-devops/)
そして「継続的デリバリー(CD)」は、ソフトウェアリリースの自動化と継続的な品質保証を組み合わせた開発手法です。
これはテスト・ビルドを繰り返し行う継続的インテグレーション(CI)を拡張したもので、コードの変更が発生するたびに自動でビルド・テスト・本番環境へのリリースが実行され、継続的に機能の追加やソフトウェアの改修が行われます。
継続的デリバリーはアジャイル開発の一部でもあり、ソフトウェアのリリースサイクルを高速化するだけでなく、品質を確保するための重要な要素となっています。
これらをまとめると、DevOpsは「ソフトウェアの開発と運用を統合する考え方」である一方、アジャイル開発は「開発プロセスを迅速かつ柔軟にする開発手法の総称」、継続的デリバリーは「リリースまでの自動化と継続的な品質保証を組み合わせた開発手法」です。
それぞれのアプローチは、ソフトウェア開発において重要な役割を果たします。また、「DevOpsの実現のために、開発モデルとしてアジャイル開発を採用する」といったように、相互に近い関係を持つ言葉です。
(参考:https://aws.amazon.com/jp/devops/continuous-delivery/)
【事例3選】DevOpsのベストプラクティス
DevOpsのベストプラクティスは、業界や業種によって異なります。ここでは、国内外企業3つの事例をご紹介します。
Docusign Inc.
Docusign Inc.は、電子署名や捺印などを一括で管理し、契約プロセスを最適化するソリューションを提供する企業です。その事業の性質上、誤った承認や捺印が行われることはサービスの致命傷となりえるため、開発におけるテストやデバッグは非常に重要ですが、その一方ではサービスの競争力を維持するために、開発スピードも重要でした。
そこで同社では、アプリケーションモックと呼ばれるツールを導入し、インシデント管理と組み合わせることで、リリース前に実際のやりとりに近いシミュレーションでアプリケーションをテストすることを可能に。
ツール導入と他チームとの連携により、開発におけるテストのプロセスが効率化されたのはもちろん、実践的なシミュレーションが可能になったことで、ユーザビリティの確認ができるようになったこともメリットだったといいます。
このように、DevOpsは業務を効率化するだけでなく、ユーザーファーストのサービスを提供することにもつながるのです。
(出典:6 DevOps Case Studies /
Capital One
同社は、顧客体験の変革に役立つ新技術をいち早く導入し、意識的にデジタルテクノロジー企業へと変貌を遂げたことで知られる企業です。その一環としてDevOpsの導入を行い、開発チームと運用チームの連携によってリリースサイクルを短縮することに成功しました。
具体的には、下記のようなことに取り組んだといいます。
- 顧客フィードバックにこだわり、それを製品に反映させることを大切にする
- クラウドファーストのポリシーを掲げ、マイクロサービスの活用を増やす
- AWSの各種サービスを導入することで、インフラの構築に必要な時間を99%以上短縮
こうした取り組みの結果、開発チームが、新製品のプランが立った時点ですぐに開発に着手できるような状態が構築できたそうです。
さらに、DevOpsの導入により、組織的な文化にも変化が起こりました。具体的には、開発者の製品に対するオーナーシップが高まり、他の職種と協力してカスタマーエクスペリエンス向上に取り組むようになったといいます。
また、開発者のみならず社員全体へも良い影響が出ています。例えば、開発期間が短縮されたため、顧客からのフィードバックを短い期間で製品に反映できるようになり、ビジネスサイドのモチベーションが上昇したそうです。
DevOpsの導入によって強力な開発者文化を確立することは、優秀な人材を獲得し、維持するために重要であることはもちろん、独立した自律的なチームを育成しサポートするためにも重要であると同社CTOは話しています。
(出典:On-Demand Infrastructure on AWS Helps Capital One DevOps Teams Move Faster Than Ever)
すかいらーくグループ
「ガスト」や「バーミヤン」などの外食チェーン店を手がける「すかいらーくグループ」は、ユーザーがストレスなく利用できるマルチブランドアプリを提供するため、DevOpsの開発体制を導入しました。
開発チームは開発のほか、テストや運用なども担当。GitHubをはじめとするツールを利用し、デプロイやテストを自動化して業務効率を図りました。
ほかにも、専用ツールを駆使して異常通知や定期バッチを実施。運用業務の負担が減り、ユーザーにとってベストな価値を提供するための開発に注力できるようになりました。
これらの取り組みにより、リリースまでのサイクルを短縮化しつつ、ユーザーファーストを意識した開発が実現。操作性やデザインにもこだわった、ユーザーが利用しやすいアプリを完成させることができたそうです。
(出典:https://classmethod.jp/cases/skylark/)
今回は、DevOpsをテーマに、その定義から各社の事例までご紹介させていただきましたが、いかがでしたでしょうか?
本記事が、DevOpsについての理解を深める機会になれば幸いです。(了)