EXERCISE 90分

ストーリー

田中VPoE
設計原則からデプロイ戦略まで一通り学んだ。ここからは、実際に組織の標準パイプラインを設計してもらう
田中VPoE
以下の要件を満たす標準パイプラインを設計してくれ。ただし、すべての要件を完璧に満たすのは現実的ではない。トレードオフを明示しつつ、優先順位をつけて設計することが重要だ
あなた
わかりました。完璧を目指すのではなく、現実的な落とし所を見つけるんですね
田中VPoE
そうだ。それがL4の設計者に求められる判断力だ

ミッション概要

ミッションテーマ目安時間
Mission 1パイプラインステージ設計20分
Mission 2Reusable 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 → DevPR作成ビルド成功自動
Dev → StagingPR→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分

ロールバック手順:

  1. 自動検知 → Slackアラート + PagerDuty通知
  2. カナリアの場合: トラフィックを前バージョンに即時切り替え
  3. 全面展開済みの場合: 前バージョンのイメージを再デプロイ
  4. ポストモーテム実施(24時間以内)

Mission 6: 設計ドキュメント統合(10分)

要件

Mission 1-5の成果を統合した「標準パイプライン設計書」の目次を作成してください。

解答例
# 組織標準パイプライン設計書

## 1. 概要
- 目的と適用範囲
- 設計原則

## 2. パイプラインステージ
- ステージ構成図
- 各ステージの詳細
- 実行時間と品質ゲート

## 3. Reusable Workflow
- 共有ワークフロー一覧
- 言語別カスタマイズ方法
- バージョニングとアップデート方針

## 4. 環境管理
- 環境構成
- プロモーション戦略
- SOC2コンプライアンス対応

## 5. アーティファクト管理
- レジストリ構成
- 命名規則とメタデータ
- 保持ポリシー

## 6. ロールバック戦略
- 自動ロールバック基準
- 手動ロールバック手順
- ポストモーテムプロセス

## 付録
- チーム別オンボーディングガイド
- FAQ

達成度チェック

ミッションテーマ完了
Mission 1パイプラインステージ設計
Mission 2Reusable Workflow設計
Mission 3環境プロモーション設計
Mission 4アーティファクト管理設計
Mission 5ロールバック戦略設計
Mission 6設計ドキュメント統合

まとめ

ポイント内容
パイプライン設計並列化と品質ゲートのバランスで30分以内を実現
共有ワークフロー言語非依存の共通部分と言語固有部分を分離
環境管理コンプライアンス要件を満たす承認プロセス
トレードオフ速度・セキュリティ・コストの3軸で判断

チェックリスト

  • 矛盾する要件の中でトレードオフを明示して設計できた
  • Reusable Workflowで共通化の設計ができた
  • SOC2対応を考慮した環境プロモーションを設計できた
  • アーティファクトの管理戦略を体系的に設計できた

次のステップへ

次はチェックポイントクイズです。標準パイプライン設計の理解度を確認しましょう。


推定読了時間: 90分