ストーリー
ミッション概要
| ミッション | テーマ | 目安時間 |
|---|---|---|
| Mission 1 | パイプラインステージ設計 | 20分 |
| Mission 2 | Reusable Workflow設計 | 20分 |
| Mission 3 | 環境プロモーション設計 | 15分 |
| Mission 4 | アーティファクト管理設計 | 15分 |
| Mission 5 | ロールバック戦略設計 | 10分 |
| Mission 6 | 設計ドキュメント統合 | 10分 |
前提条件
以下の組織要件が与えられています:
組織要件:
- 20チーム、主要言語: TypeScript, Python, Go
- CI/CDツール: GitHub Actions に統一予定
- コンテナレジストリ: GitHub Container Registry (GHCR)
- Kubernetes (EKS) 上でデプロイ
- 全チームがmainブランチへのマージでステージングデプロイ
- 本番デプロイは承認制
制約:
- GitHub Actions の無料枠を超えないコスト管理
- 全パイプラインの実行時間: 30分以内
- セキュリティスキャンは必須
- SOC2コンプライアンス対応が必要
矛盾する要件(ノイズ):
- チームAは「デプロイ速度を最優先」と主張
- チームBは「セキュリティチェックを増やしたい」と主張
- 経営層は「コスト削減」を求めている
Mission 1: パイプラインステージ設計(20分)
要件
上記の組織要件を満たす標準パイプラインのステージ構成を設計してください。各ステージの実行順序、並列化可能なステージ、全体の実行時間の見積もりを含めること。
解答例
標準パイプラインステージ設計:
Phase 1: 検証(並列実行、目標: 10分以内)
├── Lint & Format Check
├── Unit Test (with coverage)
└── Security: SAST + SCA
Phase 2: ビルド(Phase 1完了後、目標: 5分以内)
├── Build Application
├── Build Container Image
└── Sign Artifact (Cosign)
Phase 3: 統合テスト(Phase 2完了後、目標: 10分以内)
├── Integration Test
└── Container Security Scan (Trivy)
Phase 4: デプロイ(Phase 3完了後)
├── Staging Deploy(自動、目標: 5分以内)
└── Production Deploy(承認後、カナリア)
合計目標: ~30分
トレードオフの判断:
- チームAの「速度優先」→ Phase 1を並列化して10分以内に
- チームBの「セキュリティ強化」→ SASTとSCAをPhase 1に統合、コンテナスキャンはPhase 3で
- 経営層の「コスト削減」→ 並列化で実行時間を短縮しランナーコストを最適化
Mission 2: Reusable Workflow設計(20分)
要件
3言語(TypeScript, Python, Go)に対応するReusable Workflowの構成を設計してください。共通部分と言語固有部分の分離を明確にすること。
解答例
# 共有ワークフローの構成
org/shared-workflows/
├── .github/workflows/
│ ├── ci.yml # メインCI(オーケストレーター)
│ ├── build-typescript.yml # TypeScript用ビルド
│ ├── build-python.yml # Python用ビルド
│ ├── build-go.yml # Go用ビルド
│ ├── test.yml # テスト実行(言語自動判定)
│ ├── security-scan.yml # セキュリティスキャン
│ ├── deploy-staging.yml # ステージングデプロイ
│ └── deploy-production.yml # 本番デプロイ
└── actions/
├── setup-runtime/ # ランタイムセットアップ
├── lint/ # Lint実行
└── coverage-check/ # カバレッジチェック
# 呼び出し側(各チームのリポジトリ)
name: CI/CD
on: [push, pull_request]
jobs:
pipeline:
uses: org/shared-workflows/.github/workflows/ci.yml@v2
with:
language: "typescript"
deploy-staging: ${{ github.ref == 'refs/heads/main' }}
secrets: inherit
Mission 3: 環境プロモーション設計(15分)
要件
アーティファクトの環境間プロモーション(Dev → Staging → Production)のフローと、各昇格の条件を設計してください。
解答例
| 昇格 | トリガー | 条件 | 自動/手動 |
|---|---|---|---|
| Code → Dev | PR作成 | ビルド成功 | 自動 |
| Dev → Staging | PR→mainマージ | Unit Test + SAST + SCA パス | 自動 |
| Staging → Production | 手動承認 | 統合テスト + E2E + コンテナスキャン パス、QAサインオフ | 手動(Tech Lead + SRE) |
SOC2対応:
- 本番デプロイは2名以上の承認が必要
- 承認者は変更の実施者と異なる必要がある
- すべてのデプロイログは90日間保持
Mission 4: アーティファクト管理設計(15分)
要件
組織全体のアーティファクト管理戦略を設計してください。レジストリ構成、命名規則、保持ポリシー、メタデータ標準を含めること。
解答例
レジストリ構成:
ghcr.io/org/
├── <team>/<service>:<version> # コンテナイメージ
├── <team>/<service>:sha-<hash> # コミットハッシュタグ
└── <team>/<service>:latest # 開発用(本番使用禁止)
命名規則:
- イメージ名:
ghcr.io/org/{team}/{service}:{semver} - タグ:
v{major}.{minor}.{patch},sha-{short-hash},pr-{number} - 本番では
latestタグの使用を禁止
保持ポリシー:
| タグパターン | 保持期間 |
|---|---|
v* (リリース) | 90日 |
sha-* (コミット) | 30日 |
pr-* (PR) | PR クローズ後7日 |
Mission 5: ロールバック戦略設計(10分)
要件
本番デプロイ後に問題が検出された場合のロールバック戦略を設計してください。
解答例
自動ロールバック基準:
| メトリクス | 閾値 | 監視期間 |
|---|---|---|
| エラー率(5xx) | 前バージョン比2倍 | デプロイ後15分 |
| レイテンシ(p99) | 前バージョン比1.5倍 | デプロイ後15分 |
| Pod再起動回数 | 3回以上 | デプロイ後10分 |
ロールバック手順:
- 自動検知 → Slackアラート + PagerDuty通知
- カナリアの場合: トラフィックを前バージョンに即時切り替え
- 全面展開済みの場合: 前バージョンのイメージを再デプロイ
- ポストモーテム実施(24時間以内)
Mission 6: 設計ドキュメント統合(10分)
要件
Mission 1-5の成果を統合した「標準パイプライン設計書」の目次を作成してください。
解答例
# 組織標準パイプライン設計書
## 1. 概要
- 目的と適用範囲
- 設計原則
## 2. パイプラインステージ
- ステージ構成図
- 各ステージの詳細
- 実行時間と品質ゲート
## 3. Reusable Workflow
- 共有ワークフロー一覧
- 言語別カスタマイズ方法
- バージョニングとアップデート方針
## 4. 環境管理
- 環境構成
- プロモーション戦略
- SOC2コンプライアンス対応
## 5. アーティファクト管理
- レジストリ構成
- 命名規則とメタデータ
- 保持ポリシー
## 6. ロールバック戦略
- 自動ロールバック基準
- 手動ロールバック手順
- ポストモーテムプロセス
## 付録
- チーム別オンボーディングガイド
- FAQ
達成度チェック
| ミッション | テーマ | 完了 |
|---|---|---|
| Mission 1 | パイプラインステージ設計 | |
| Mission 2 | Reusable Workflow設計 | |
| Mission 3 | 環境プロモーション設計 | |
| Mission 4 | アーティファクト管理設計 | |
| Mission 5 | ロールバック戦略設計 | |
| Mission 6 | 設計ドキュメント統合 |
まとめ
| ポイント | 内容 |
|---|---|
| パイプライン設計 | 並列化と品質ゲートのバランスで30分以内を実現 |
| 共有ワークフロー | 言語非依存の共通部分と言語固有部分を分離 |
| 環境管理 | コンプライアンス要件を満たす承認プロセス |
| トレードオフ | 速度・セキュリティ・コストの3軸で判断 |
チェックリスト
- 矛盾する要件の中でトレードオフを明示して設計できた
- Reusable Workflowで共通化の設計ができた
- SOC2対応を考慮した環境プロモーションを設計できた
- アーティファクトの管理戦略を体系的に設計できた
次のステップへ
次はチェックポイントクイズです。標準パイプライン設計の理解度を確認しましょう。
推定読了時間: 90分