DevOpsとは?基礎知識やアジャイル開発との違い、メリットを解説

  • 2022.12.22
       
DevOpsとは?基礎知識やアジャイル開発との違い、メリットを解説

ソフトウェア開発プロジェクトにおいて、DevOpsを導入することで迅速な開発、運用が可能になります。本記事では、そんなDevOpsについて解説します。

DevOpsとは

DevOps(デブオプス)とは、「開発」を意味するDevelopmentと「運用」を意味するOperationsを組み合わせた造語です。開発担当者と運用担当者が連携をとり、協力することでスムーズに開発、運用を進め、製品の価値を継続的に向上させるという考え方です。

DevOpsが生まれた背景
DevOpsが生まれた背景には、開発現場でチーム間での対立構造ができてしまうという問題があります。多くのソフトウェア開発現場では、システム開発を担う開発(Dev)チームとサービス運用を担う運用(Ops)チームに分かれて作業します。開発チームの目的が「新しい機能の追加し、より早く市場投入する」である一方で、運用チームの目的は「システムの安定稼働とサービスの安定供給」です。このように、両者の目的の相違によって立場上の対立関係が生じてしまうことがあります。そして、このような意見の対立が積み重なることで、チーム間の溝が深まる「サイロ化」にもつながりかねません。しかし、両者の目的の先には、「価値のあるサービスをより迅速に顧客に届け続ける」という共通の目的が存在しています。この最終的な目的が同じであれば、本来は対立する必要はないのです。
また、デジタル化が急速に進む現代では、顧客の求める価値も流動的です。その変化に対応するために、より迅速なソフトウェア開発ができるような開発プロセスや組織づくりが求められます。
こういった背景からDevOpsが重要視されるようになったのです。

アジャイル開発との違い

DevOpsとアジャイル開発は、継続的にサイクルを回すことや小さな単位ごとに分けて開発サイクルを回すことといった共通点があることで混同されることがありますが、別物です。DevOpsは組織の協力体制に関する組織論であり、幅広い概念ですが、一方のアジャイル開発は、具体的な開発手法を指します。ただ、両者の親和性は高く、DevOpsを実現するための開発手法にアジャイル開発が採用されることもあります。
そもそもアジャイル開発とは、「要件定義→設計→開発→テスト→リリース」といった開発工程を1つの機能単位で小さいサイクルで繰り返すという手法です。これは、従来主流だったウォーターフォール開発という開発の一連の流れを順番に実行していく手法よりも、柔軟性が高く、リリースまでの期間が短いといった特長があります。DevOpsの組織論のもと、アジャイル開発を行うことでより効率的に柔軟な開発が可能になります。

DevOpsのメリット

DevOpsの本質は、開発担当者と運用担当者間の対立を解消することでスムーズな開発、運用を行うことです。DevOpsの実現には、各ステップでさまざまなツールを導入する必要が出てきます。その代表的なものに管理ファイルの変更履歴を記録する「バージョン管理システム」や作業を自動化する「CI/CDツール」などがありますが、このようなツールを活用することで生産性の向上に繋がります。そして、生産性が向上することでその分の時間を品質向上や新サービスの開発などに使えるため、より製品やサービスの価値が高められます。このようなツールによる自動化は、ほかにも作業の高速化が可能になるというメリットもあります。高速化はDevOpsのライフサイクルを回す速度が速くなることで顧客から受けた要望やフィードバックを瞬時に取り入れやすくなり、急速に変化する市場ニーズに素早く対応できるようになります。

DevOpsのプロセス

DevOpsによる開発は、以下に示す6つのプロセスで構成されます。
これらを継続的に回していくことでDevOpsが実現できます。

計画
プロジェクト全体の要件定義を行い、実装する機能やタスク管理、進捗管理などを決めていきます。プロジェクト管理ツールとして有名なものにはJIRAやAzure DevOpsなどがあります。

開発
計画に従って、プログラマーがコーディングするなどの開発作業を行います。
ソフトウェアの設計・実装段階では、過去の編集履歴をすぐに確認できるようにバージョン管理システムやビルド自動化ツールを用います。プログラムテストを自動化するジョブ実行機能のあるGitHubやGitLabなどのツールを使用します。

テスト
開発した成果物にバグなどの不具合がないかテストしていきます。
ここで用いられる代表的なツールとして、JUnitやSelenium、BlazeMeterなどがあります。

デプロイ
開発工程が一通り終わり、テストで問題がなかった場合は実際の環境で正常に作動するよう整備していきます。ここで使われるツールとしてはAnsibleやPuppet、Docker、Kubernetesなどが挙げられます。

運用
リリース後は、継続的に製品、サービスを提供するための保守管理です。
サーバやアプリケーションソフトウェアの監視、トラブル時の対応などを行います。

監視
運用で得られたデータや顧客からの要望、フィードバックなどを継続的に受け取り、開発に反映させることです。
これには監視ツールやインシデント管理ツールを使います。有名なものには、New RelicやDatadog、Grafana、Wiresharkなどがあります。

     

Otherカテゴリの最新記事