開発運用アーキテクチャ

デプロイ戦略 ― 頻度を上げてリスクを下げる ― 生成AI時代のアーキテクチャ超入門

デプロイ戦略 ― 頻度を上げてリスクを下げる ― 生成AI時代のアーキテクチャ超入門

本記事について

当サイトを閲覧いただきありがとうございます。 本記事はシリーズ『生成AI時代のアーキテクチャ超入門』の「開発運用アーキテクチャ」カテゴリ第8弾として、デプロイ戦略について解説する記事です。

現代は頻繁に・小さく・安全にデプロイする文化が主流。デプロイ頻度・失敗率・復旧速度は DORA 4指標の中核です。本記事ではローリング/Blue-Green/Canary/Feature Flag/Shadow Deployment/Dark Launchなどの戦略、ロールバック設計、AI時代の自動Canary判定まで解説します。

このカテゴリの他の記事

概要 ― 作って届けて動かし続ける一本の流れ ― 生成AI時代のアーキテクチャ超入門senkohome.com/arch-intro-devops-overview/DevOps・SREの全体像 ― 速度と安定性は両立する ― 生成AI時代のアーキテクチャ超入門senkohome.com/arch-intro-devops-sre/構成管理 ― Git+モノレポ+GitHub Flowが鉄板 ― 生成AI時代のアーキテクチャ超入門senkohome.com/arch-intro-devops-vcs/開発環境とローカル実行 ― 初コミットまで半日 ― 生成AI時代のアーキテクチャ超入門senkohome.com/arch-intro-devops-devenv/コードレビュー ― PR 300行+1人承認+CODEOWNERS ― 生成AI時代のアーキテクチャ超入門senkohome.com/arch-intro-devops-review/テスト設計 ― ピラミッド+Testcontainers+ブランチカバレッジ ― 生成AI時代のアーキテクチャ超入門senkohome.com/arch-intro-devops-test/CI/CD ― GitHub Actions+OIDC+Feature Flagが鉄板 ― 生成AI時代のアーキテクチャ超入門senkohome.com/arch-intro-devops-cicd/監視とオブザーバビリティ ― 三本柱+OpenTelemetry+SLOアラート ― 生成AI時代のアーキテクチャ超入門senkohome.com/arch-intro-devops-observability/ログ設計 ― 構造化JSON+PII禁止+段階的コールド化 ― 生成AI時代のアーキテクチャ超入門senkohome.com/arch-intro-devops-logging/SLOとSLI ― 100%を求めずエラー予算で速度を買う ― 生成AI時代のアーキテクチャ超入門senkohome.com/arch-intro-devops-slo/インシデント対応 ― 英雄ではなく仕組みで収束させる ― 生成AI時代のアーキテクチャ超入門senkohome.com/arch-intro-devops-incident/SREプラクティス ― Toil削減とカオス演習 ― 生成AI時代のアーキテクチャ超入門senkohome.com/arch-intro-devops-sre-practice/ドキュメンテーション ― README+ADR+OpenAPIをGitに寄せる ― 生成AI時代のアーキテクチャ超入門senkohome.com/arch-intro-devops-docs/チケット・プロジェクト管理 ― Epic/Story/Task+1日粒度 ― 生成AI時代のアーキテクチャ超入門senkohome.com/arch-intro-devops-ticket/

なぜデプロイ戦略が必要か

デプロイ失敗が最大の障害要因

Google SRE の報告では、本番障害の70%以上が変更(デプロイ・設定変更)起因です。デプロイ戦略が事故を減らします。2012年 Knight Capital 事件「8台中1台の取り残し + 45分で4.4億ドル損失 + 倒産」というデプロイ事故の象徴例で、本記事のデプロイ戦略はまさにこの種の事故を防ぐためのものです(詳細は付録「重大インシデント事例集」)。

頻繁なデプロイが品質を上げる

「大きく・稀に」デプロイすると失敗時の影響範囲が巨大になります。小さく・頻繁にすれば1回の被害が小さく、切り戻しも容易になります。

ビジネススピードを支える

新機能を作っても1か月リリースできないのでは意味がありません。デプロイ戦略は技術的意思決定と同じくらいビジネス成果に直結します。

主要な戦略

デプロイ戦略には複数のパターンがあります。それぞれリスク・コスト・複雑度が違うため、システムに応じて使い分けます。

flowchart TB
    subgraph BG["Blue-Green"]
        BLUE[Blue<br/>v1 旧版] --> ROUTER1[Router] -.切替.-> GREEN[Green<br/>v2 新版]
    end
    subgraph CN["Canary"]
        ROUTER2[Router]
        ROUTER2 -->|95%| OLD[v1]
        ROUTER2 -->|5%→25%→100%| NEW[v2]
    end
    subgraph FF["Feature Flag"]
        APP[本番アプリ v2<br/>機能はOFF]
        APP -.|フラグON| FEATURE[新機能解放]
    end
    subgraph SH["Shadow"]
        REQ[本番リクエスト] --> V1[v1<br/>応答]
        REQ -.|並行| V2[v2<br/>結果は破棄]
    end
    classDef bg fill:#dbeafe,stroke:#2563eb;
    classDef cn fill:#dcfce7,stroke:#16a34a;
    classDef ff fill:#fef3c7,stroke:#d97706;
    classDef sh fill:#fae8ff,stroke:#a21caf;
    class BG,BLUE,GREEN,ROUTER1 bg;
    class CN,OLD,NEW,ROUTER2 cn;
    class FF,APP,FEATURE ff;
    class SH,REQ,V1,V2 sh;
戦略内容リスク
Rolling Update順次置換
Blue-Green2環境を切替低・コスト2倍
Canary一部ユーザーだけ新版最低
Feature Flagコードは本番・機能はOFF最低
Recreate全停止→新版起動
Shadow本番と並行に新版走らせる低・検証向き

中でも Canary が重要なのは、本番でしか見えない問題を早期に捕まえられるからです。テスト環境では再現できない本物のユーザー行動・本物のデータ分布・本物のトラフィックパターンに新版を少量だけ晒し、異常があれば影響ユーザーを最小限に抑えて撤退できます。ステージングで問題なかったのに本番で初めて壊れるケースは少なくなく、Canary はその最後の安全網になります。

ただし Canary にはそれなりの実装コストが伴います。リクエストを割合で振り分けるトラフィックルーティング(Service Mesh や Ingress の重み付け)、新旧のエラー率・レイテンシを比較するメトリクス自動判定(Flagger や Argo Rollouts など)が必要で、監視基盤が整っていない段階ではいきなり Canary から始めるのは困難です。だからこそ「Canary + Feature Flagが現代の定石として語られ、細かく制御し問題時の影響を最小化する装備一式として採用されます。

Rolling Update

古いバージョンを順次新バージョンに置き換える方式です。Kubernetes のデフォルト戦略で、一部の Pod から新版に入れ替えていきます。シンプルで追加インフラ不要ですが、問題時の切り戻しに時間がかかる欠点があります。

メリットデメリット
追加インフラ不要切り戻しが遅い
シンプル新旧混在が長い
K8s 標準スキーマ変更で困る

マイナーな更新には適していますが、スキーマ変更や互換性のない変更には向きません。

Blue-Green Deployment

2つの本番環境(Blue・Green)を用意し、ロードバランサで切替する方式です。Blue が現行、Green が新版で、問題がなければトラフィックを Green に切替、問題あれば Blue に戻すだけです。

flowchart TB
    LB([Load Balancer])
    B1["Blue: v1.0<br/>全トラフィック"]
    G1["Green: v1.1<br/>待機中"]
    SW{切替}
    B2["Blue: v1.0<br/>待機中"]
    G2["Green: v1.1<br/>全トラフィック"]
    LB --> B1
    LB -.待機.-> G1
    B1 --> SW
    G1 --> SW
    SW --> B2
    SW --> G2
    classDef lb fill:#fef3c7,stroke:#d97706;
    classDef active fill:#dcfce7,stroke:#16a34a;
    classDef standby fill:#f1f5f9,stroke:#64748b;
    classDef sw fill:#fae8ff,stroke:#a21caf;
    class LB lb;
    class B1,G2 active;
    class G1,B2 standby;
    class SW sw;
メリットデメリット
瞬時の切替・切り戻しインフラコスト2倍
DB スキーマ変更も扱えるDB の共有で注意必要
検証環境として使えるデータ整合性課題

Canary Deployment

新版を一部ユーザー(5% → 20% → 50% → 100%)に段階的に展開する方式です。問題があれば早期に検知でき、影響ユーザーを最小化できます。最も安全なデプロイ戦略として、SRE 組織では標準化しています。

段階割合観察期間
Phase 11〜5%15分
Phase 220%30分
Phase 350%1時間
Phase 4100%-

各段階でエラー率・レイテンシを自動監視し、異常があれば自動ロールバックするのが理想です。Argo RolloutsFlaggerSpinnaker などのツールが支援します。

Feature Flag(機能フラグ)

コードは本番にデプロイし、機能の ON/OFF を動的制御する方式です。デプロイとリリースを分離でき、「デプロイ済みだが誰にも見えない」状態を作れます。A/B テスト・段階リリース・緊急停止にも使えます。

ツール特徴
LaunchDarklyエンタープライズ定番
FlagsmithOSS 版あり
UnleashOSS・GitLab 統合
PostHog分析と統合
独自実装設定ファイル or DB

「コードのデプロイ」「機能のリリース」を分離するのが現代的な発想で、リスクを大幅に下げられます。

データベースマイグレーション

DB スキーマ変更を伴うデプロイは最も難しい領域です。コードと DB の整合性を保ちながら、無停止で変更するには特別な設計が必要です。Expand and Contractパターンが標準です。

ステップ内容
Expand新旧両対応のスキーマに拡張
コード更新新カラムを使い始める
Backfill古いデータを新カラムに埋める
Contract古いカラム削除

1リリースで全部やろうとすると本番停止します。複数回に分けて徐々に移行するのが現代的なベストプラクティスです。

自動ロールバック

デプロイ後に異常を検知したら自動で前バージョンに戻す仕組みです。人手による判断を待たないため、被害が最小化されます。監視指標(エラー率・レイテンシ・SLO)を見て自動判断します。

トリガー
エラー率急増5xx 率が2倍
レイテンシ悪化P95 が閾値超過
SLO 違反バーンレート 10x 超
手動判断ボタン1つで戻せる

人間のオペレーターに依存しないのが現代的で、24時間自動で守られる状態を作ります。

CI/CDパイプライン

デプロイ戦略を支えるのが CI/CD(Continuous Integration/Continuous Deployment)です。コードがコミットされたら自動でビルド・テスト・デプロイするパイプラインを構築します。

ツール特徴
GitHub ActionsGitHub 統合・人気
GitLab CIGitLab 統合
CircleCI早期から SaaS
ArgoCD/FluxGitOps K8s 特化
Jenkins古参・高カスタマイズ

GitOps(Git を唯一の真実にしてデプロイ)が現代トレンドで、コミットがそのままデプロイになる運用が主流です。

Progressive Delivery

Canary・Feature Flag・自動判断を組み合わせた次世代デプロイ戦略です。「プログレッシブ(段階的)」にユーザーを新版に移行し、観測データで自動判断します。Argo Rollouts・Flagger がこの思想を体現しています。

要素役割
段階的展開ユーザー比率を徐々に増やす
メトリクス分析SLI で自動判断
自動ロールバック異常時は即座に戻す
A/B テスト統合同時に効果測定

人間を介さないデプロイが実現でき、100% 自動化された SRE 組織の標準です。

判断基準①:トラフィック量

トラフィック量でデプロイ戦略が変わります。少量なら Rolling で十分、大規模なら Canary + Progressive 必須です。

トラフィック推奨
低(社内ツール)Rolling Update
中(B2C 一般)Blue-Green or Canary
大(数百万 RPS=Requests Per Second)Canary + Feature Flag
超大(GAFA 規模)Progressive + 自動判断

判断基準②:リスク許容度

金融・医療・決済のように障害コストが極めて高い業種は、最も慎重なデプロイが必要です。逆に実験的 B2C は高速デプロイ文化が向きます。

リスク許容度推奨
高(SaaS 試験機能)Feature Flag 中心・高頻度
中(一般 B2C)Canary + 監視
低(金融・医療)Blue-Green + 事前承認
最低(航空・原子力)段階リリース + 長期検証

ケース別の選び方

個人開発・小規模Webサービス

GitHub Actions + Rolling Update(K8s 標準)。Feature Flag は設定ファイルや DB 列で自作、追加インフラ不要。CI 通過で本番自動デプロイ、問題あれば手動で前コミットに戻す運用で十分です。

スタートアップ・成長期B2C SaaS

GitHub Actions + Canary(Argo Rollouts)+ Feature Flag(Unleash/PostHog)。5%→20%→100% の3段階展開、エラー率・P95 レイテンシを自動監視して異常時は自動ロールバック。DB は Expand and Contract で無停止移行します。

中堅企業・マイクロサービス多数

ArgoCD(GitOps)+ Flagger + LaunchDarkly。サービスごとに独立デプロイ、Progressive Delivery で SLI ベース自動判断、Feature Flag は組織全体で統一管理。月数百回のデプロイが現実的になります。

金融・医療・決済

Blue-Green + 事前承認ワークフロー + Change Advisory Board(変更諮問委員会)。リリース時刻は業務時間外に固定、DB スキーマ変更は別リリースで先行適用、監査ログは永続保存。AI エージェントによる自動対応は要件次第で検討します。

よくある勘違い

リリース頻度が少ない方が安全

逆です。頻度が高いほど1回のリスクが小さく、筋肉が鍛えられます。Google は1日数千回デプロイしています。

Blue-Greenなら完璧

DB 変更の考慮なしには使えません。Expand and Contract が必要です。

Feature Flagを増やせば増やすほど安全

管理コストが爆発します。Flag のライフサイクル管理(使い終わったら削除)が必須。Feature Flag を気軽に増やし続けた結果、200個近く溜まってどれが現役でどれが死体か誰も分からなくなり、新人のオンボーディングで「Flag 一覧を読むだけで半日」という状態になった、という話は SaaS 現場で定期的に語られます。Flag はリリース時に削除タスクを必ずセットで切るのが唯一の処方箋です。

CIでテスト通ったら本番に出して良い

段階的展開が基本。いきなり100% はリスク高です。

DORA 4指標による数値Gate

※ 2026年4月時点の業界相場値です。テクノロジー・人材市場の変化で陳腐化するため、定期的にアップデートが必要です。

デプロイ戦略の質は DORA 4指標で測るのが世界標準です。

DORA指標EliteHighMediumLow
デプロイ頻度日複数回週〜日次月1〜週1月1未満
変更リードタイム(コミット→本番)1時間以内1日〜1週間1週間〜1か月1〜6か月
変更失敗率0〜15%16〜30%16〜30%46〜60%
復旧時間(MTTR)1時間以内1日以内1日〜1週間1週間〜1か月

Canary展開の数値Gateは、Phase 1: 1〜5% で15分観察、Phase 2: 20% で30分、Phase 3: 50% で1時間、Phase 4: 100%。エラー率が旧版 + 0.5%超、または P99 > 旧版 × 1.2 で自動ロールバック。これが Argo Rollouts/Flagger 標準の判定基準です。

Elite レベルを目指すなら、日複数回デプロイ + 1時間以内復旧。Canary + Feature Flag が前提です。

デプロイ戦略の鬼門・禁じ手

デプロイで事故る典型パターン。どれも「会社を傾ける級」の破壊力を持ちます。

禁じ手なぜダメか
全サーバーに一度に新版デプロイ2012年 Knight Capital 事件(8台中1台に古いコード、45分で4.4億ドル損失)のパターン
Feature Flagを使わず全公開リリース問題時に全ユーザー影響、切り戻し不能
DBマイグレーションとコードデプロイを同時不整合時の切り戻し不能。expand/contractで分離
Feature Flagを使ったまま放置200個溜まってどれが現役か不明、オンボーディング半日コース
CIでテスト通過=本番100%展開Canary なしは無謀、段階展開が必須
自動ロールバックなし人間判断待ちで被害拡大、SLI ベース自動判断が必須
デプロイ時刻を業務ピーク時に設定障害時の影響範囲最大化、業務時間外推奨
リリースノート・変更履歴を残さない障害時の原因特定不能、Git と PR に必ず記録
ロールバック訓練を実施しないいざという時に動けない、四半期1回の訓練必須
「大きく稀に」月1回のビッグバンリリースDORA Low レベル、1回の失敗が致命的
デプロイ手順を個人の頭の中担当者休暇で全停止、Runbook + IaC 化必須

2012年8月の Knight Capital事件(8台のうち1台に古いコードが残り、意図しない自動売買が45分で4.4億ドル損失、会社消滅)、2021年6月の Fastly グローバル障害(顧客の設定変更1回で世界中の主要サイトが1時間同時停止)──「デプロイ戦略の甘さ」が企業を消す典型事例です。

デプロイは大きく稀にが最悪。小さく頻繁に + Canary + 自動ロールバックが鉄則です。

AI時代の視点

AI 駆動開発(バイブコーディング)と AI 活用が前提になると、デプロイ戦略はAIが書いたコードを本番に出す仕組みとして重要性を増します。AI 生成コードは量が多く、人間が全件レビューできない前提に立つ必要があります。

AI時代に有利AI時代に不利
小さな変更・高頻度デプロイ大きなバッチデプロイ
Canary + 自動判断人力判断だけ
Feature Flag 前提全公開即時
自動テスト充実手動テストメイン

AI が書く時代は安全に出せる仕組みがより重要になります。AI は時に大胆な変更を提案するため、Feature Flag で守られた状態でリリースするのが新常識です。

AI 時代はFeature Flag + Canaryが標準装備。AI の大胆さを安全に飼いならします。

決めるべきこと — あなたのプロジェクトでの答えは?

以下の項目について、あなたのプロジェクトの答えを1〜2文で言語化してみてください。曖昧なまま着手すると、必ず後から「なぜそう決めたんだっけ」が問われます。

  • デプロイ戦略(Rolling/Blue-Green/Canary)
  • CI/CDツール(GitHub Actions等)
  • Feature Flag採用(LaunchDarkly等 or 自作)
  • 段階リリースの割合(5→20→50→100)
  • 自動ロールバック基準(SLI閾値)
  • DBマイグレーション戦略(Expand/Contract)
  • デプロイ頻度の目標(日次・週次・月次)

筆者メモ — 「たった1回のデプロイ」が会社を消した事例

デプロイ戦略を甘く見て破綻した事例は、業界の歴史に何度も刻まれています。

2012年8月の Knight Capital事件は、その極北の教訓です。米国の大手マーケットメーカーだった Knight Capital は、新しい自動売買機能をリリースする際、8台の取引サーバーのうち1台に古いコードが残ったまま本番に出てしまいました。古いコードは新しいフラグを別の機能と誤認し、意図しない大量の自動売買を発動、わずか45分で約4億4千万ドル(当時の自己資本を上回る額)を失い、会社は事実上倒産しました。「デプロイ手順を1台だけ漏らす」というたった一つのヒューマンエラーが、一つの上場企業を消し去った象徴事例です。

もう一つ、2021年6月の Fastlyグローバル障害も有名です。大手 CDN ベンダーの Fastly で、顧客の設定変更1回が潜在バグを踏み抜き、Reddit・Amazon・英国政府サイト・NYT・CNN など世界中の主要サイトが約1時間同時に落ちました。「自分の本番だけ守っても、上流の設定変更1つで世界中が止まる」という、現代のデプロイリスクの深さを示した事件として語り継がれています。

どちらも「デプロイ戦略の甘さ」が致命傷で、Canary・Feature Flag・自動ロールバックの装備がなければ、ヒューマンエラーはそのまま企業の生死に直結することを突きつけます。

最終的な判断の仕方

デプロイ戦略の核心は頻度を上げて、リスクを下げるという逆説の両立です。大きく稀にデプロイすると1回の被害が巨大で切り戻しも重くなります。小さく頻繁にデプロイすれば、1回の失敗の影響は限定的で、筋肉が鍛えられ自動化が進みます。Google が1日数千回デプロイできるのは「安全に出せる仕組み」を積み上げた結果であり、Canary + Feature Flag + 自動ロールバックはそのための必須装備になりました。DB スキーマ変更も Expand and Contract で複数回に分けて移行するのが現代の定石です。

もう一つの決定的な軸はAIが書いたコードを安全に本番へ出すという要請です。AI 生成コードは量が多く人間が全件レビューできない前提に立つと、Feature Flag で守られた状態で Canary 展開し、SLI ベースで自動ロールバックする仕組みがあってはじめて AI の速度を活かせます。Feature Flag + Canary + 自動判断は、AI 時代の標準装備として必須になっています。

選定の優先順位

  1. 小さく頻繁にデプロイする — 1回の失敗の影響を限定、筋肉を鍛える
  2. Canary + Feature Flagを標準にする — デプロイとリリースを分離、影響最小化
  3. SLIで自動ロールバック — 人間判断を待たず、被害を秒単位で止める
  4. DB変更はExpand and Contract — 1リリースで全部やらず、段階移行で無停止化

頻度を上げて、リスクを下げるFeature Flag + Canary で AI の大胆さを飼いならします。

まとめ

本記事はデプロイ戦略について、Rolling・Blue-Green・Canary・Feature Flag・Progressive Delivery・自動ロールバック・DBマイグレーション無停止化まで含めて解説しました。如何だったでしょうか。

小さく頻繁にデプロイし、Canary+Feature Flagを標準にし、SLIで自動ロールバック、DB変更はExpand and Contractで無停止化する。これが2026年のデプロイ戦略の現実解です。

次回は監視とオブザーバビリティ(メトリクス・トレース・ログ統合)について解説します。

シリーズ目次に戻る → 『生成AI時代のアーキテクチャ超入門』の歩き方

それでは次の記事も閲覧いただけると幸いです。