DevOps (G検定)

DevOps

1. 定義と概要

DevOpsとは、Development(開発)とOperations(運用)を組み合わせた言葉です。開発チームと運用チームが連携し、ソフトウェアの機能追加や改善を継続的かつ迅速にユーザーへ届けられるようにする考え方・文化・実践方法の総称にあたります。

文化(Culture)・プロセス(Process)・技術(Technology)の3つの要素で構成され、なかでも開発チームと運用チームの間にある組織の壁を解消する文化面が土台にあたります。具体例としては、短いサイクルでの機能リリースや、障害発生時に開発チームと運用チームが共同で対応にあたる体制などが挙げられます。

従来、開発チームは新機能の追加や変更を増やしたい立場にあり、運用チームはシステムの安定稼働を優先し変更を避けたい立場にありました。両者は同じプロジェクトに関わりながらも目標が対立しやすく、サイロ化(部署同士が情報を共有せずそれぞれ孤立してしまう状態)を招きやすい関係にあったといえます。この対立はリリース速度の低下や、障害発生時に原因の切り分けに時間がかかるといった課題を生んでいました。

2000年代後半以降、開発チームと運用チームが協力し、自動化ツールを活用して迅速かつ安定的にリリースする文化としてDevOpsが提唱され、広がってきました。単なるツール導入にとどまらず、組織の働き方そのものを見直す文化的な取り組みという性格を持つ点が特徴です。

2. 試験対策ポイント

まず整理しておきたいのは、DevOpsを支える3つの要素です。文化(Culture)・プロセス(Process)・技術(Technology)のうち、開発と運用のサイロを解消する文化面が土台にあたるという位置づけを押さえておきたいところです。プロセス面と技術面は、この文化を実際の開発現場で機能させるための仕組みという関係にあります。

技術面の中心にあるのがCI/CD(コードの変更を自動でテスト・統合し、リリースまでを自動化する仕組み)です。よく似た略語が並びますが、CIとCDでは担う役割が分かれます。

略語 担う役割
CI(継続的インテグレーション) コードの変更を頻繁に取り込み、自動でテストして変更を早期に検証する
CD(継続的デリバリー) テスト済みのコードを、いつでもリリースできる状態に自動的に整える

変更を検証する段階と、リリース直前の状態を整える段階という分担にあり、名前が近いぶん取り違えやすい組み合わせです。両者がつながることで、コードの変更からリリースまでが一本の自動化された流れになります。

CI/CDを支えるツール群として、変更履歴を管理するバージョン管理システム、コンテナ技術(アプリケーションと実行環境をひとまとめにして、どこでも同じように動かせるようにする技術)が挙げられます。そのほかIaC(Infrastructure as Code。サーバーなどのインフラの設定をコードで管理する手法)やモニタリングツール(システムの稼働状況を継続的に見張るためのツール)などが並びます。

これらは技術面の全体像を成すツール群として、まとめて確認しておきたい範囲です。個々の仕組みを単独で覚えるより、文化・プロセス・技術という3要素のどこに位置づくかを意識すると全体の関係がつかめます。

またDevOpsの考え方を機械学習プロジェクトに広げた概念がMLOpsで、AIをビジネスで使い続けるうえでの土台にあたります。機械学習に特有の課題は、別のテーマとして扱われます。

3. 関連概念との比較・相違点

DevOpsと混同されやすいのが、アジャイル開発とMLOpsです。どこまでを対象にする考え方なのかを並べると、三者の関係がつかみやすくなります。

概念 主な対象範囲
アジャイル開発 要件定義からテストまでの開発工程
DevOps 開発工程に、リリース後の運用や監視を加えた開発ライフサイクル全体
MLOps 機械学習プロジェクト。コードに加えてデータや学習済みモデルも運用の対象

アジャイル開発(短い期間で開発とリリースを繰り返しながら進める開発手法)との最大の違いは、この対象範囲にあります。アジャイル開発が「何をどう作るか」という開発の進め方に主眼を置くのに対し、DevOpsは「作ったものをどう安定的に届け続けるか」という運用まで見据えた文化である点が異なります。

両者は対立する概念ではなく、アジャイル開発で短いサイクルの開発を進め、DevOpsでそのリリースと運用を支えるという形で組み合わせて語られることも少なくありません。開発工程の手法か、運用まで含む文化かという範囲の違いは、混同しやすい組み合わせです。

MLOpsとの違いは、適用領域にあります。DevOpsはソフトウェア開発全般を対象とする考え方であるのに対し、MLOpsはその考え方を機械学習プロジェクト(モデルの学習・評価・デプロイ・再学習)に広げた派生という位置づけです。

ソフトウェアのコードを対象にするDevOpsに対して、MLOpsはコードに加えてデータや学習済みモデルそのものも管理・運用の対象に含む点が異なります。機械学習特有の課題の詳細については、本記事では立ち入りません。

4. ビジネス・実務での活用シナリオ

Webサービスやシステム開発を手がける企業では、CI/CDパイプラインによる自動テスト・自動デプロイを整え、1日に複数回のリリースを行う体制を構築しています。手作業によるリリース作業を減らすことで、機能改善のサイクルを大きく短縮できる点が実務上の効果です。小さな変更を高頻度でリリースできれば、不具合が見つかった際の影響範囲も小さく抑えられます。

金融機関やインフラ系企業では、モニタリングツールでシステムの稼働状況を可視化し、障害発生時に開発チームと運用チームが共同で原因調査・復旧にあたる体制を整える例が見られます。開発と運用が別々に動くのではなく同じ画面を見ながら対応することで、障害の原因特定から復旧までの時間を縮める効果につながります。システムの安定稼働が強く求められる業種ほど、両チームの連携体制が実務上の重みを持ちます。

AI・機械学習プロジェクトでは、DevOpsの考え方を土台に、モデルのデプロイ・監視・再学習の仕組みをMLOpsとして整備する動きが広がっています。モデルは一度デプロイして終わりではなく、データの傾向変化に応じて継続的に見直す運用が必要になるため、DevOpsで培われた自動化の考え方が生きる領域です。

5. 要点まとめ

  • DevOpsは開発チームと運用チームが連携しソフトウェアを継続的かつ迅速に改善・提供する考え方で、文化・プロセス・技術の3要素から成ります。
  • 技術面の中心はCI/CD。コードの統合・テスト・リリースを自動化し、開発から運用までのサイクルを短縮する仕組みにあたります。
  • アジャイル開発は開発工程が中心、DevOpsは運用・監視まで含むライフサイクル全体が対象という関係にあり、DevOpsを機械学習に広げた概念がMLOpsにあたります。

6. 確認問題

問1DevOpsとは、開発チームと運用チームが連携し、ソフトウェアの改善を継続的かつ迅速に提供するための考え方・文化・実践方法を指す。

解答・解説をみる

○ 正しい

DevOpsは文化・プロセス・技術の3要素で構成され、開発と運用のサイロ解消を土台とする定義そのものです。短いサイクルでの機能リリースなどが、この考え方の具体例にあたります。

問2アジャイル開発とDevOpsは対象範囲が同じで、どちらも開発工程(要件定義からテストまで)のみを扱う手法である。

解答・解説をみる

× 誤り

正しくはアジャイル開発が開発工程中心、DevOpsはリリース後の運用・監視まで含むライフサイクル全体を対象とする関係にあります。範囲を同一視するのは取り違えやすい点です。

問3CI/CDは、コードの変更を自動でテスト・統合し、リリースまでの工程を自動化する仕組みであり、DevOpsを実現する技術的な要素の一つにあたる。

解答・解説をみる

○ 正しい

CI(継続的インテグレーション)とCD(継続的デリバリー)の役割の違いを含めて、技術面の中心に位置づけられます。バージョン管理システムやコンテナ技術などのツール群とあわせて見ておきたい部分です。