DevOpsは、開発プロセスや組織文化に変革を起こし、価値の高いソフトウェアを確実かつスピーディーに届けることを実現する考え方です。ソフトウェア開発の各段階を可能な限り自動化し、テストにより品質を保証して提供するので、競争優位性を高められます。DevOpsの意味やメリット、アジャイル開発との違い、手法やステップ、ツールや導入のポイントについて紹介します。
➡︎【資料ダウンロード】業界ごとのDX推進ケースをまとめた“DX事例集”
目次
DevOpsは、開発(Development)と運用(Operations)を組み合わせた言葉です。顧客のニーズに応え続けるために、開発や運用といった部門を超えて連携・協力し、価値の高いソフトウェアを確実かつスピーディーに届けることを実現する組織変革の考え方をいいます。
DevOpsでは、ソフトウェア開発の各段階を可能な限り自動化します。そのため、ビルドやテスト、リリース、デプロイや監視といった作業を迅速に、かつ品質を保証しながら行えるようになるので、競争優位性を高められるのです。
★DevOpsは、価値の高いソフトウェアを確実かつスピーディーに届けることを実現する組織変革の考え方
・DevOpsは開発(Development)と運用 (Operations)を組み合わせた言葉
・DevOpsではソフトウェア開発の各段階を可能な限り自動化する
・迅速かつ品質を保証しながら行うので、競争優位性を高められる
DevOpsの起源については、2008年にITコンサルタントのPatrick Debois氏が行ったプレゼンテーション「Agile Infrastructure & Operations」が元になっていると言われます。
2009年には「Velocity 2009」というイベントにおいて、エンジニアのJohn Allspaw氏とPaul Hammond氏が「10+ Deploys Per Day: Dev and Ops Cooperation at Flickr」というプレゼンを発表し、DevOpsという言葉が使われるようになっていきました。
従来からの組織は、開発部門と運用部門が別組織となっている場合があります。開発部門の目的は、「システムへの新しい機能追加」であり、運用部門の目的は「システムの安定稼働」と、目的の相違により対立しがちな構造となっていたのです。
しかし、両部門の目的の先には、「顧客中心のシステムやソフトウェア開発でビジネスの価値を高め、それをより迅速にエンドユーザーに届け続ける」という共通のミッションが存在しています。
ミッションの実現のためには、開発プロセスや組織文化そのものに変革を起こしていく必要があり、この活動をDevOpsと呼ぶようになりました。
デジタル化が急速に進むグローバル社会において、顧客が求める価値は短い期間で変化するようになりました。その変化に対応した価値を提供するために求められるのはアジリティ(俊敏さ)です。顧客の求める価値を、俊敏に市場へ投入していける組織づくりや能力が重要になります。
日本では、開発や運用といった経営機能ごとに編成された組織形態である、縦割り構造のサイロ化組織となっている企業が多くあります。このサイロ化形態では、部門ごとの考え方も異なり、部門間をまたいだ開発プロセスの実現が難しかったのです。
そこで、DevOpsの考えを導入し、開発プロセスや組織文化そのものに変革を起こしていくことが重要視されているのです。
これは、経済産業省の『DXレポート2(中間取りまとめ)』の、「ITシステムのみならず企業文化(固定観念)を変革する」というDX(デジタルトランスフォーメーション)の本質と同様の考え方になります。
➡︎【資料ダウンロード】業界ごとのDX推進ケースをまとめた“DX事例集”
DevOpsを導入するメリットには、ソフトウェアの迅速なリリースと配信、高い信頼性とセキュリティの実現といったことが挙げられます。
開発と運用が連携できると、情報共有や決定のスピードが上がり、ソフトウェアの新しい機能リリースやバグ修正を迅速に行えるようになります。
開発者は、IaC(Infrastructure as Code)といった手法を使い、本番レベルの環境を用意することにより、テストや開発が容易になり、より迅速な展開やバージョンアップデートが可能です。より素早く顧客のニーズに応えられるようになるので、競争優位性を高めることにつながります。
継続的インテグレーションと継続的デリバリー(CI/CD)といった手法を使い、ビルドやリリースといった工程をできる限りツールで自動化します。アプリケーションの更新やインフラストラクチャの変更が機能的に安全であると、品質を保証しながら配信を行うため、高い信頼性を保てるのです。
脆弱性の評価と修正を、CI/CDシステムに統合することで、品質保証(QA)においても他のテストと並行してコンテナなどでセキュリティテストを実行できます。さらにビルド変更や脆弱性の発見のたびにセキュリティテストを行うことで、高レベルのセキュリティの保証となるでしょう。
➡︎【資料ダウンロード】業界ごとのDX推進ケースをまとめた“DX事例集”
アジャイル開発の意味や、アジャイル開発とDevOpsの違いはどのような点か、確認していきましょう。
アジャイル(agile)とは「素早い」「機敏な」「頭の回転が速い」という意味です。
アジャイル開発は、計画・設計・実装・テストの開発工程を、機能単位の小さいサイクルで迅速に繰り返すシステムやソフトウェアの開発手法です。
従来のウォーターフォール開発とは異なり、優先度の高い重要な機能から着手します。素早くリリースしつつブラッシュアップしていくことを念頭に置いているため、仕様変更に強いことが特徴です。
★アジャイル開発について詳しくはこちら
➡︎【資料ダウンロード】DX推進に欠かせない「アジャイル手法」の教科書
アジャイルは、開発工程を機能単位の小さいサイクルで繰り返す開発手法です。これは対象を「システムやソフトウェアの開発」とした、ビジネスの価値を高める開発アプローチです。
DevOpsも、同じくビジネスの価値を高めるシステムやソフトウェア開発が目的であり、確実にエンドユーザーに届けるところまでをミッションとしています。
つまりDevOpsは、「システムやソフトウェアの展開」まで、アジャイルの考えを拡張した開発アプローチといえるでしょう。
➡︎【資料ダウンロード】業界ごとのDX推進ケースをまとめた“DX事例集”
DevOpsの手法として、DevOpsのフレームワークを議論するコミュニティDASA(DevOps Agile Skills Association)が提唱する、6つの原則(ベストプラクティス)を紹介します。
IT製品やサービスを構築する活動のすべては、顧客を中心に短いフィードバックサイクルで行われることが重要です。DevOpsを行う組織は、顧客の要求に応えるために、継続的にイノベーションを起こしていく必要があります。
製品やサービスの顧客満足を最大にするために、絶えず投資し行動し、個々の戦略がうまくいかないときは方向転換しましょう。
組織は、ウォーターフォールやプロセス指向のモデルに代表される、各部門や個人が特定の役割のみに従事することから脱却する必要があります。全体像を共有しコラボレーションして、全従業員が顧客に提供する価値を念頭において行動します。
ITサービス開発後、サービスの展開と保守を運用部門に任せるのではなく、DevOps環境では、製品のライフサイクルすべてに責任を負うよう、垂直統合で組織化します。
組織化されたチームは提供するITサービスに対し、製品寿命が尽きるまで責任を持ちサポートと製品の品質を保証します。
機能横断型自律チームとして、メンバーにはバランスの取れたスキルが必要です。テストや分析、コーディングなどの知識やスキルだけを持つ旧来のITスペシャリストではなく、オールラウンドなチームメンバーが必要です。このようなチームは、個人の成長と発達の場となります。
エンドツーエンドの責任のために、組織は顧客のニーズ、法律の変更、新しい技術の利用可能性といった状況の変化に照らして継続的に適応する必要があります。
DevOps文化では、無駄を最小限に抑え、スピード、コスト、提供のしやすさを最適化し、提供する製品やサービスを継続的に改善することに強く焦点を置きます。失敗から学ぶ文化を定着させることが不可欠です。
速いサイクルで継続的に改善する文化を採用し、エンドユーザーや顧客から即座にフィードバックを得られる組織とする必要があります。
CI/CDを含むソフトウェア開発プロセスだけでなく、IaCによるインフラ全体の自動化を考えましょう。
➡︎【資料ダウンロード】業界ごとのDX推進ケースをまとめた“DX事例集”
DevOps成熟度調査として、DASAのアンケート形式の「DASA DevOps Competence Quickscan」があります。4つのスキルエリアと8つの知識(ナレッジ)エリアについて、それぞれ2つずつ、合計24の質問で、入門(L1)からマスター(L5)のどのレベルにいるかを確認できるものです。各エリアの項目と意味の例は、それぞれ次の通りです。
スキルエリア
ナレッジエリア
自社のDevOpsはどのような状態であるか把握を行い、レベルを上げるにはどのようにする必要があるのか、参考にしてみましょう。
➡︎【資料ダウンロード】業界ごとのDX推進ケースをまとめた“DX事例集”
DevOpsの各段階で行うことや、利用するツールにはどのようなものがあるかを確認していきましょう。
計画段階では、ビジネスの価値(バリュー)や要件定義を行います。この段階で使うツールは、ナレッジベースのための社内Wikiやタスクやプロジェクト管理機能といったものです。プロジェクト管理ツールとしてJIRAやAzure DevOpsがよく知られています。
ソフトウェアの設計や実装において、過去バージョンの情報をすぐに確認できるバージョン管理システムやビルド自動化ツールを用います。プログラムテスト自動化を可能にするジョブ実行機能があるGitHubやGitLab、Bitbucketといったツールを活用します。
継続的なテストを実施し、コードの品質を確保します。有名なツールとして、Java言語の単体テストツールのJUnitやTestNG、Webアプリケーション自動テストツールのSelenium、Webアプリケーションの負荷テストプラットフォームのBlazeMeterがあります。
開発したソフトウェアのパッケージ化、本番環境の管理および配置を行います。ツールとしては、複数のサーバーに対してアプリケーションのデプロイや、管理をする構成管理ツールAnsibleやPuppet、コンテナのアプリケーション実行環境を管理するDockerやKubernetesが挙げられます。
本番ソフトウェア環境をモニタリングし、インシデントや異常の検出を行います。使用するのは監視ツールやインシデント管理ツールと呼ばれるものです。ツールの例として、インフラやアプリのパフォーマンス監視、ログ管理の統合および自動化を行うNew RelicやDatadog、さまざまなDBのログをリアルタイムに可視化するダッシュボードツールGrafana、ネットワーク上のデータから内容を解析表示するネットワークアナライザのWiresharkがあります。
➡︎【資料ダウンロード】業界ごとのDX推進ケースをまとめた“DX事例集”
DevOps導入のポイントを確認していきましょう。
DevOpsは、組織文化そのものに変革を起こしてミッション実現をする活動です。文化を変容させていくには、考え方を変化させ、部門を隔てているサイロの解消をしましょう。
ソフトウェアの開発と運用のスピードと品質目標を明確にし、責任を共有し、各自のやるべきことを明確にします。
さらに、頻繁にコミュニケーションを取り、強い信頼関係と情報の流れを重視し、コラボレーションを促進する教育の機会を設けましょう。
組織にとって最も重要で最も価値のあるものは何かによって、計測する指標であるKPIは異なります。
その中でも、DevOpsの研究者Nicole Forsgren氏はDevOpsの効果を測定するには「リードタイム」、「リリース頻度」、「平均修復時間」(MTTR)、「変更失敗率」の4つが適切であると述べています。
リードタイム:ソースコードのコミットからデプロイまでの所要時間
リリース頻度:ソフトウェアの本番環境へのデプロイの頻度
平均修復時間(MTTR):サービスダウンが発生してから復旧するまでの時間
変更失敗率:本番環境へリリースした時のサービスダウン発生率
これらはチーム全体の目標を反映し、組織のパフォーマンス向上を示します。そのため、すべての状況を監視することが重要です。
➡︎【資料ダウンロード】業界ごとのDX推進ケースをまとめた“DX事例集”
DevOpsは、ビジネスの価値を高めるシステムやソフトウェアを、より迅速にエンドユーザーに届け続ける開発プロセスを実現する組織変革です。DASAのフレームワークを参考に、自社の状況を把握し、強みや特徴を磨き、企業の競争優位性を高めていきましょう。
モンスターラボは、約20年にわたるサービス・プロダクト開発実績から得られたデジタル領域の知見や技術力を活かし、デジタルプロダクト開発事業を展開しています。
先端テクノロジーに対応した高度なIT人材があらゆるプラットフォーム上での開発を支援します。アジャイル開発とDevOpsによる柔軟な開発進行や、国内外のリソースを活用したスケーラブルな開発体制の構築も可能です。 また、リリース後の保守運用や品質向上支援まで伴走可能です。
モンスターラボが提供するサポートの詳しい概要は以下リンクをご確認ください。