DevOps

開発チームと運用チームの協働を促進し、ソフトウェアのデリバリーと品質を継続的に改善する文化・プラクティスの総称

チーム自動化
DevOps」の技術書を見る (62 冊) →

DevOps とは

DevOps は、Development (開発) と Operations (運用) の壁を取り払い、ソフトウェアのビルド・テスト・リリース・運用を一体的に行う文化とプラクティスの総称である。2009 年の DevOpsDays カンファレンス (ベルギー) で Patrick Debois が提唱し、急速に広まった。

単なるツールの導入ではなく、組織文化の変革を伴う点が本質だ。CI/CD パイプラインを構築しても、開発チームと運用チームが別々のサイロで働いていれば DevOps とは言えない。

DevOps 以前の問題

従来の開発プロセスでは、開発チームが「新機能を速くリリースしたい」、運用チームが「システムを安定させたい」という相反する目標を持ち、対立構造が生まれていた。

  • 開発チームがコードを「壁の向こう」に投げ、運用チームがデプロイする
  • 本番障害が起きると「開発のバグだ」「運用の設定ミスだ」と責任の押し付け合い
  • リリースは月 1 回の大規模デプロイ。変更量が多いため障害リスクが高い
  • 障害の原因調査に数日かかる (開発者が本番環境にアクセスできない)

DevOps の 3 つの道 (Three Ways)

Gene Kim が「The Phoenix Project」「The DevOps Handbook」で体系化した 3 つの原則。

第 1 の道 - フローの高速化

コードの変更が本番に反映されるまでのリードタイムを短縮する。

第 2 の道 - フィードバックの増幅

本番環境の状態を開発に素早くフィードバックする。

第 3 の道 - 継続的な学習と実験

失敗から学び、改善を繰り返す文化を醸成する。

CALMS フレームワーク

DevOps の成熟度を評価するフレームワーク。

要素意味具体例
Culture協働と信頼の文化blame-free ポストモーテム
Automation手作業の自動化CI/CD、IaC、自動テスト
Lean無駄の排除WIP 制限、バリューストリームマッピング
Measurement定量的な計測DORA メトリクス (後述)
Sharing知識の共有内部ドキュメント、勉強会、ペアプログラミング

DORA メトリクス

Google の DORA (DevOps Research and Assessment) チームが特定した、DevOps の成熟度を測る 4 つのメトリクス。

メトリクスEliteHighMediumLow
デプロイ頻度オンデマンド (1 日複数回)週 1〜月 1月 1〜半年 1半年以上
リードタイム1 時間未満1 日〜1 週間1 週間〜1 ヶ月1 ヶ月以上
変更失敗率0〜15%16〜30%16〜30%46〜60%
復旧時間1 時間未満1 日未満1 日〜1 週間6 ヶ月以上

SRE との関係

SRE (Site Reliability Engineering) は DevOps の具体的な実装の 1 つで、Google が提唱した。DevOps が「文化と原則」を定義するのに対し、SRE は「エラーバジェット」「SLO」「トイル削減」など具体的なプラクティスを提供する。Google の Ben Treynor は「SRE は DevOps のインターフェースを実装したクラスだ」と表現している。

DevOps のプラクティス

DevOps のプラクティスを以下に整理する。

プラクティスツール
CI/CDGitHub Actions, CodePipeline
IaCSAM, CloudFormation, Terraform
モニタリングCloudWatch, X-Ray
自動テストVitest, Playwright
ChatOpsSlack + Lambda
# CI/CD パイプライン
on:
  push:
    branches: [main]
jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - run: npm ci && npm test
      - run: sam build && sam deploy
# インフラの変更もコードレビュー
git checkout -b feature/add-sqs
# template.yaml を変更
git push && gh pr create

より深く学ぶには関連書籍が役立つ。

この記事は役に立ちましたか?

関連用語

関連する記事