📚 GCP PCA 学習: 2026-05-21
セクション: 4.3 信頼性を確保するための手順開発 前回からの繋がり: ビジネスプロセスで「何を・いつ・確実にデプロイするか」を計画した次は、デプロイ後に「実際にどれだけ信頼できるか」を定量化・管理する仕組みが必要。その仕組みが SLO・SLI・エラーバジェットとインシデント管理。
① 一言サマリー
信頼性を確保するための手順開発とは、「目標稼働率(SLO)を達成するために、実績値(SLI)を毎日測定し、予算枠(エラーバジェット)内で安全に変更・運用する仕組み」です。
② たとえ話
銀行の ATM サービス をイメージしてください:
- SLO(目標):「月間 99.9% の稼働率を保つ」← 経営層が決めるビジネス要件
- SLI(実績):「今月は 99.92% 稼働している」← 毎日計測する実績値
- エラーバジェット:「月間の計画停止時間 = (1 - 99.9%) × 43200 分 = 43.2 分」← この枠内なら新機能デプロイ・保守作業を実行してもいい
- インシデント管理:「ATM が突然止まった → すぐに復旧 → 『なぜ止まった?』を調査 → 同じ原因で二度と止まらないようにコード修正」
目標達成のために「測定 → 判定 → アクション」を毎日回すのが信頼性運用の本質。
③ 図解
graph LR
A["SLO
目標稼働率
99.9%"] -->|測定| B["SLI
実績値
毎日集計"]
B -->|判定| C{エラーバジェット
枠内か?}
C -->|Yes| D["デプロイ・変更OK"]
C -->|No| E["リスク管理
変更延期"]
D --> F["インシデント
発生"]
F --> G["復旧
RTO < 1時間"]
G --> H["事後分析
ポストモーテム"]
H --> I["改善実装
コード修正"]
I --> B
style A fill:#e1f5ff
style B fill:#fff3e0
style C fill:#f3e5f5
style D fill:#c8e6c9
style E fill:#ffccbc
style G fill:#fce4ec
style H fill:#f1f8e9
④ 仕組みの深掘り
(1)SLO / SLI / エラーバジェットの関係
SLO(Service Level Objective)= ビジネス目標
目標稼働率 99.9%(= 月間ダウンタイム 43 分)を設定する際の判定軸:
| 要件 | SLO | 理由 |
|---|---|---|
| スタートアップ・社内 App | 99%(月 7h) | 変更・成長スピード > 完璧さ。ユーザー損失は許容。コスト最小化。 |
| B2B SaaS | 99.5%(月 3.5h) | 顧客に SLA 保証できるレベル。高可用性で信頼構築。 |
| 決済・金融・医療 | 99.9-99.99%(月 43 分~4 分) | 規制対応・ブランド毀損回避必須。多地域・多インスタンス並列実行。 |
SLI(Service Level Indicator)= 実績値
毎日の実績を測定し、SLO に向けて進捗を可視化:
SLI = 成功トランザクション数 / 全トランザクション数
例:
- 今日のリクエスト 1000万件
- うち成功 9,990万件(失敗 1万件)
- SLI = 99.9% ✓ 目標達成
Cloud Monitoring で SLI を定義:
- レイテンシ SLI:「ユーザーリクエストに 200ms 以内で応答した割合」
- エラー率 SLI:「5xx エラーなく完了した割合」
- 利用可能性 SLI:「エンドポイントが応答を返した割合」
エラーバジェット(Error Budget)= 変更実行権
エラーバジェット = 1 年間のダウンタイム = (1 - SLO) × 年間秒数
例:99.9% SLO の場合
= 0.1% × 31,536,000 秒(1 年)
= 31,536 秒
= 約 8.76 時間 / 年
= 約 43 分 / 月
この枠を超えないように変更(デプロイ・保守)を管理:
- SLI が 99.9% を大きく上回る月 → エラーバジェット余裕あり → 大型デプロイ・リファクタリング OK
- SLI が 99.85% 付近 → エラーバジェット残少 → 小さい変更のみ、リスク高い変更は延期
- SLI が 99.8% 以下 → エラーバジェット枯渇 → 変更凍結、修正と調査に集中
PCA 試験での判定軸:「SLO 99.9% なら月 43 分、99% なら月 7 時間のエラーを許容する組織設計」
(2)インシデント管理と事後分析
インシデント の定義
- Sev 1(Critical):サービス全体停止、3 時間以上のダウンタイム、顧客への金銭損失 → 即座に CEO / CTO 通知・全社停止
- Sev 2(High):機能部分停止、1-3 時間ダウンタイム、顧客影響あり → 30 分以内に対応チーム招集
- Sev 3(Medium):一部ユーザーのみ影響、30 分-2 時間ダウンタイム → 営業時間内に対応
- Sev 4(Low):機能低下・警告ログ、ユーザー不便だが使える → バックログに積む、マージしてから対応
復旧の 2 つの指標
- RTO(Recovery Time Objective):「目標復旧時間」← 事前に SLO から決めておく
- 99.99% SLA → RTO < 15 分(年間 52 分ダウンタイム)
- 99.9% SLA → RTO < 1 時間(年間 8.76 時間ダウンタイム)
- RPO(Recovery Point Objective):「目標復旧時点データ」← データ損失許容量
- RPO < 1 分 = 1 分ごとにバックアップ(コスト 10 倍)
- RPO < 1 時間 = 1 時間ごとで十分(標準的)
インシデント対応の 4 段階
| 段階 | アクション | 責任者 | 時間軸 |
|---|---|---|---|
| 1. 検出 | アラート発火 → Slack / PagerDuty に通知 | On-call engineer | 検出時 |
| 2. 応急対応 | ロールバック or 手動切り替え or 瞬時スケーリング | On-call lead | 1-15 分 |
| 3. 復旧 | 本来のトラフィック復帰 + パフォーマンス正常化確認 | SRE team | 15 分~1h |
| 4. 事後分析 | 「何が・いつ・なぜ起きたか」を調査し、再発防止策を実装 | Engineering team | 翌営業日 |
GCP での実装例:
Cloud Monitoring → Alert Policy(99.5% 以下なら発火)
→ Cloud Logging で原因特定(「2026-05-21 15:30 に memory spike」)
→ Cloud Trace で遅いエンドポイント特定
→ Cloud Profiler で「CPU 90% 消費する関数」を特定
→ コード修正 → Cloud Build で CI 実行 → Cloud Deploy で Canary 5% → Blue 100%
→ 24 時間後、ポストモーテム会議で「なぜ memory spike したか」を議論
(3)キャパシティプランニング
キャパシティ = 「最大負荷を安全に処理できるリソース量」
必要キャパシティ = ピーク負荷 × 安全マージン(1.2-1.5 倍)
例:
- 通常 QPS: 10,000
- ピーク QPS: 20,000(イベント時・昼12時)
- 安全マージン: 1.3 倍
→ 必要キャパシティ: 20,000 × 1.3 = 26,000 QPS で設計
3 つのプランニング軸
- 計算(CPU / Memory):Compute Engine / GKE の vCPU・メモリ枚数
- ネットワーク(Bandwidth):Cloud NAT / Cloud CDN の帯域幅、Interconnect 本数
- ストレージ(I/O):Cloud SQL / Bigtable の iops・スループット
予測の 3 段階
| 期間 | 精度 | アプローチ |
|---|---|---|
| 今後 1-2 ヶ月 | ±10% | 直線外挿、既知のイベント予定を加味 |
| 3-6 ヶ月 | ±30% | 過去 1 年のトレンド分析 + 市場成長率 |
| 6-12 ヶ月 | ±50% 以上 | ビジネスロードマップ + 保守マージン(30-50%)加算 |
GCP での実装:
Cloud Monitoring で「過去 1 年の QPS 推移」を可視化
→ Trend Anomaly Detection で「異常検知」
→ キャパシティ足りなくなる 2-4 週間前に通知
→ MIG(Managed Instance Group)の max_replicas を増加
→ 自動スケーリング設定を事前更新
⑤ 他サービスとの使い分け
SLO 定義・管理
| サービス | 用途 | 選定基準 |
|---|---|---|
| Cloud Monitoring + SLO API | SLI 定義・追跡・アラート | 標準的。99% 以上の SLO を管理 → これを選ぶ |
| Datadog / New Relic | マルチクラウド観測 | GCP + AWS + オンプレ混在 → これを選ぶ |
| Prometheus + Grafana(自構築) | Open Source 派 | 小規模スタートアップ・本社リソース充実 |
インシデント管理
| サービス | 用途 | 選定基準 |
|---|---|---|
| Cloud Monitoring Alert + Cloud Logging | GCP ネイティブ管理 | GCP のみ → これを選ぶ |
| PagerDuty / Opsgenie | On-call 管理・エスカレーション | 複数チーム・多サービス・24/7 対応 → これを選ぶ |
| Incident.io | ポストモーテム管理(新興) | コラボレーティブな事後分析重視 |
⑥ 実務への応用
ケース 1:Web スタートアップ(初期段階)
SLO: 99%(月 7 時間のダウンタイム許容)
理由: 成長スピード > 完璧さ
エラーバジェット使用戦略:
- 毎日大型デプロイ(複数フィーチャー同時)
- 月間 2-3 回のインシデント許容
- ポストモーテムは「何が起きたか」のみ、再発防止は後付け
RTO: 4 時間(人手で対応、自動化なし)
RPO: 1 日(毎日バックアップ)
インシデント対応:
- Slack での通知のみ
- 手動ロールバック可能なコード設計
ケース 2:B2B SaaS(安定期)
SLO: 99.5%(月 3.5 時間)
理由: 顧客に「SLA 保証 99.5%」としてセール
エラーバジェット使用戦略:
- 週 1 回デプロイ(金曜は禁止)
- Canary 5% → Green 50% → Blue 100% で段階的リリース
- エラーバジェット消費量を毎日ダッシュボードで監視
RTO: 1 時間(自動フェイルオーバー + 手動復旧)
RPO: 15 分(リージョン間レプリケーション)
インシデント対応:
- PagerDuty で On-call スケジュール管理
- Sev 2 以上は 30 分以内に事後分析会議開催
- 3 ヶ月ごと「エラーバジェット消費パターン分析」
ケース 3:金融・決済(高信頼性)
SLO: 99.99%(年 52 分)
理由: 規制要件 + 顧客信頼 + ブランド損失回避必須
エラーバジェット使用戦略:
- 月 1 回デプロイ(計画済み変更ウィンドウ)
- エラーバジェット枯渇時は変更凍結
- 本番デプロイ前に Staging 環境で 1 週間 soak test
RTO: 5 分(複数地域・複数インスタンス同時実行)
RPO: 30 秒(同期レプリケーション)
インシデント対応:
- 15 分ごとに CEO・CFO に通知
- Sev 1 は全社で対応
- 48 時間以内に詳細なポストモーテム + 監査報告書
⑦ よくある誤解・落とし穴
誤解 1:「SLO = 実装の複雑さ」
❌ 誤り:99.99% SLO だから 5 つの地域、20 インスタンスで設計
✅ 正解:「ビジネス価値 = SLO 達成に必要な最小リソース」 - 99% SLO なら Compute Engine 1 インスタンス + 定期バックアップで十分 - 99.9% なら 2 インスタンス + 自動フェイルオーバー - 99.99% なら 3+ リージョン + Cloud Spanner(同期レプ)
PCA 試験:「SLO から逆算してアーキテクチャを選ぶ」思考が採点軸
誤解 2:「エラーバジェット = 浪費していい」
❌ 誤り:「月 43 分の枠があるから、テストなしで毎日デプロイ」
✅ 正解:「枠を超えないエリアで、可能な限り高速イテレーション」 - エラーバジェット残がある = 「変更してもいい」ではなく「変更してもいい枠」 - 10 人チームが全員変更実行したら 10 倍リスク増大 - Canary 5% ではじめて、99.95% 以上なら 100% へ段階的に
誤解 3:「ポストモーテムは『誰が悪いか』を決める会」
❌ 誤り:「エンジニア A が手動デプロイを間違えた → 減給」
✅ 正解:「システムの弱点を見つけ、自動化・ガード で二度と起きないようにする」 - ポストモーテムは「No Blame」原則(誰の責任も追求しない) - 焦点:「なぜ人間の手動作業が必要だった?」→ 「CI-CD パイプラインで自動化」 - 例:手動デプロイミス → Cloud Deploy の Canary で自動検証に
誤解 4:「キャパシティプランニング = リザーバーション購入」
❌ 誤り:「1 年分の Compute Engine インスタンスを定価で購入」
✅ 正解:「Commitment Discount(年間契約 25% 割引)+ Spot VM(70% 割引)の混在」 - 必要キャパシティ 26,000 QPS = 基本: Committed 20,000(価格固定)+ Spot 6,000(浮動価格) - Commitment 超過分は Spot で補い、コスト最適化
⑧ 理解度チェック
シナリオ 1:B2B SaaS の信頼性設計
ある B2B SaaS 企業が以下の要件でアーキテクチャを検討しています:
「顧客に SLA 保証 99.9% を提供し、ダウンタイムの影響を最小化したい。現在の SLI は 99.85%。月間エラーバジェット = 43 分。今月はすでに 35 分消費した。CTO は大型フィーチャー(API スキーマ変更)のデプロイを月末に計画。どうすべきか?」
答え(クリック)
**判定**: **デプロイ延期、または極めて限定的なテストのみ** **根拠**: エラーバジェット残が **8 分しかない**(43 - 35 = 8)。API スキーマ変更は以下のリスク: - 既存クライアント 200 社の互換性破壊の可能性 - Staging 環境でのテストでは、本番 200 社全部の組み合わせは再現できない - 破損時の復旧に 30-60 分(RTO)必要 8 分のバジェットでは **RTO 超過リスク大**。 **対応策**(優先順): 1. **月末までデプロイ延期**(安全な選択肢) 2. **どうしても月中に実施なら**: - Canary 0.1%(ユーザー 1-2 社のみ)で 1 週間 soak test - 異常なし確認後、残 8 分を使い Canary 5% → Green 25% で 2 段階リリース - 25% で異常検知したら即ロールバック - Blue 100% は翌月に延期 **逆選択(❌ 不適切)**: - ❌「100% デプロイしてしまえば、バグも一気に出て復旧できる」:バジェット枯渇で SLA 違反 → 顧客に賠償 - ❌「別チームが並行デプロイしても大丈夫」:複数変更でリスク倍増、復旧さらに遅延 **PCA 試験のポイント**:「SLO から逆算してリスク管理」が本質。数字が出てたら必ず計算。シナリオ 2:インシデント対応とポストモーテム
ある決済システムで以下のインシデント発生:
「2026-05-21 14:30 に Cloud SQL Primary が Disk Full(ストレージ枯渇)で停止。Failover に 8 分かかり、その間トランザクション全て失敗。決済 50 万件が未確定ステータスで並ぶ。RTO 目標は 5 分。ポストモーテムで、エンジニア X が『Disk Monitoring アラートを見落とした』と指摘されている。会社は X を処分すべき?」
答え(クリック)
**判定**: **処分すべきでない。むしろシステムの弱点を改善すること** **ポストモーテムの目的**(No Blame 原則): 「誰が悪いか」ではなく「システムの人間依存を減らす」が本質。 **改善策**(優先順): 1. **自動化(最優先)**: - Cloud Monitoring Alert Policy「Disk > 80%」を **Sev 2(高優先度)** に設定 - PagerDuty で On-call に 15 分ごと通知(2 回目で自動ページング) - Cloud SQL の自動ストレージ拡張を有効化(10GB 超過分を自動購入) 2. **ガード(次優先)**: - RTO 5 分目標 → Cloud SQL 読み取り同期レプリカを別リージョンに配置 - Failover 自動化(8 分 → 1 分に短縮) - トランザクション未確定ステータス → 自動リトライロジック実装 3. **プロセス改善**: - ポストモーテム報告書は「Disk Monitoring を目視できない → 自動アラート + 自動拡張」 - エンジニア X への feedback:「アラート見落とし」ではなく「なぜ自動化がなかったか」を一緒に議論 **逆選択(❌ 不適切)**: - ❌「エンジニア X を処分」:根本原因(自動化欠如)が残ったまま、別のエンジニアも同じミス繰り返す - ❌「Disk Monitoring アラート改善だけ」:RTO 5 分には足りない(Failover は数分必須)。自動レプリカフェイルオーバーも必須 - ❌「ポストモーテム報告書で「X のせい」と結論」:組織の改善文化が失われる **PCA 試験のポイント**:「ポストモーテムは根本原因分析。人間ミスを責めない」が採点軸。インシデント→改善の PDC を高速化する設計が重要。⑨ 深掘り補足(実務の応用知識)
最新 GA 機能の活用
1. Cloud Monitoring の SLO API(GA)
GCP ネイティブな SLI 定義・追跡:
# SLO 定義例:成功率 99.9%
SLO:
target: 0.999
window: 30 days
indicator:
type: request_based
query: |
resource.type = "api"
metric.response_code_class = "2xx" OR "3xx"
alert:
threshold: 0.99 # 99% 下回ったら通知
duration: 5m
Benefits: - Cloud Console で SLI 進捗を日次ダッシュボード表示 - エラーバジェット消費速度を可視化 - Threshold ベース アラートで変更リスク判定(自動化可)
2. Cloud Logging API MCP Server(GA)と Cloud Monitoring MCP Server(GA)
⚠️ 2026-05 最新 GA リリース
AI agent・Gemini Enterprise と統合して、インシデント分析を自動化:
インシデント検出
→ Cloud Monitoring MCP(メトリクス取得)
→ Cloud Logging MCP(ログ分析)
→ Gemini Agent(「CPU spike の原因は?」を自動質問応答)
→ ポストモーテムドラフト自動生成
実務への効果: - 手動ログ検索 30 分 → AI による分析 3 分 - ポストモーテムの初期ドラフト自動作成(レビュー修正のみ) - 深夜のインシデント対応時に AI が根本原因を提示
3. Ops Agent での OpenTelemetry Telemetry API(Preview)
⚠️ Preview
従来の Cloud Logging API / Cloud Monitoring API に加えて、OpenTelemetry 標準で メトリクス・トレース・ログを統合:
Application Code
→ OpenTelemetry Instrumentation
→ Ops Agent v2.66.0+
→ Telemetry API(新・標準化)
→ Cloud Monitoring / Cloud Logging
Benefits: - クラウドベンダーロックインが軽減(他クラウドへの移行が容易) - トレース・メトリクス・ログの相関分析が自動化
次回: 5.1 開発/運用チームへのアドバイス(IaC・Terraform・構成管理)