EXERCISE 90分

ストーリー

田中VPoE
セルフサービス設計、API駆動、Kubernetes抽象化、GitOps。設計の道具は揃った。実際にCloudOps社のセルフサービスプラットフォームを設計してもらう
あなた
Step 1で分析したCloudOps社のシナリオの続きですね
田中VPoE
そうだ。セルフサービス率を15%から80%に引き上げるための具体的なアーキテクチャを設計してくれ。カタログ設計からAPI設計、GitOpsフローまで一気通貫で
あなた
理論を統合する実践ですね
田中VPoE
開発者が「これは使いたい」と思うプラットフォームにしてくれ。技術的に正しいだけでなく、開発者体験が優れていることが重要だ

ミッション概要

項目内容
演習タイトルセルフサービスプラットフォームの設計
想定時間90分
成果物プラットフォームアーキテクチャ設計書
対象組織CloudOps社(Step 1から継続)

Mission 1: セルフサービスカタログの設計

要件

CloudOps社の25マイクロサービスを支えるセルフサービスカタログを設計してください。

  1. カタログアイテムを最低8種類定義する
  2. 各アイテムのパラメータガードレール所要時間目標を明記する
  3. 優先順位を付け、Phase 1(3ヶ月)でリリースするアイテムを選定する
解答例

カタログ一覧

#カテゴリアイテムPhase所要時間目標
1サービス新規マイクロサービス一式Phase 110分
2データベースPostgreSQLPhase 15分
3データベースRedisPhase 13分
4コンピュートKubernetesネームスペースPhase 11分
5CI/CDGitHub ActionsパイプラインPhase 13分
6ストレージS3バケットPhase 21分
7メッセージングSQSキューPhase 21分
8監視Datadogダッシュボード + アラートPhase 22分
9ネットワーク内部DNSエントリPhase 230秒
10セキュリティVaultシークレットパスPhase 21分

Phase 1アイテム詳細: 新規マイクロサービス一式

パラメータ必須バリデーション
service_namestringはい^[a-z][a-z0-9-]{2,30}$
team_nameenumはい登録チーム一覧から選択
languageenumはいtypescript, python, go
templateenumはいapi-service, worker, bff
sizeenumはいsmall, medium, large
databasebooleanいいえデフォルト: false

ガードレール:

  • production環境は最低2レプリカ
  • ヘルスチェックエンドポイント必須
  • NetworkPolicy自動適用
  • Datadogモニタリング自動設定

Mission 2: Platform APIの設計

要件

カタログを支えるPlatform APIを設計してください。

  1. 主要エンドポイントを最低8つ定義する
  2. 各エンドポイントのリクエスト/レスポンスを記述する
  3. 認証・認可の設計を行う
解答例

API一覧

メソッドパス説明認可
GET/api/v1/catalogカタログ一覧全員
GET/api/v1/catalog/{item_id}カタログ詳細全員
POST/api/v1/resourcesリソース作成Developer以上
GET/api/v1/resourcesリソース一覧(自チーム)Developer以上
GET/api/v1/resources/{id}リソース詳細Developer以上
DELETE/api/v1/resources/{id}リソース削除Team Lead以上
POST/api/v1/resources/{id}/approveリソース承認Team Lead以上
GET/api/v1/teams/{team}/costsチームコストTeam Lead以上
POST/api/v1/templates/renderテンプレートプレビューDeveloper以上
GET/api/v1/healthヘルスチェック認証不要

リソース作成のフロー

POST /api/v1/resources
Authorization: Bearer <jwt_token>
Content-Type: application/json

{
  "catalog_item": "microservice",
  "parameters": {
    "service_name": "notification-service",
    "team_name": "platform-team",
    "language": "typescript",
    "template": "api-service",
    "size": "medium",
    "database": true
  }
}

Response: 202 Accepted
{
  "resource_id": "res-a1b2c3d4",
  "status": "provisioning",
  "steps": [
    { "name": "リポジトリ作成", "status": "completed" },
    { "name": "CI/CDパイプライン設定", "status": "in_progress" },
    { "name": "Kubernetesリソース作成", "status": "pending" },
    { "name": "データベース作成", "status": "pending" },
    { "name": "モニタリング設定", "status": "pending" }
  ],
  "estimated_completion": "2026-03-04T10:10:00Z"
}

認証・認可

方式対象トークン有効期限
OAuth 2.0 + JWTWebポータル1時間
APIキーCI/CD、自動化90日(ローテーション)
ServiceAccount内部サービスKubernetes管理

Mission 3: GitOpsフローの設計

要件

CloudOps社のGitOpsフローを設計してください。

  1. リポジトリ構成を設計する
  2. プロモーションフロー(dev → staging → production)を設計する
  3. ロールバック手順を定義する
解答例

リポジトリ構成

アプリリポジトリ(8チーム × 各3-4リポジトリ):
  {service-name}/
  ├── src/
  ├── Dockerfile
  ├── platform.yaml        # Application CRD
  └── .github/workflows/
      └── ci.yaml          # テスト→ビルド→プッシュ

GitOpsリポジトリ(プラットフォームチーム管理):
  cloudops-gitops/
  ├── base/
  │   ├── platform-defaults.yaml
  │   └── security-policies/
  ├── environments/
  │   ├── dev/
  │   │   ├── payment-service/app.yaml
  │   │   ├── user-service/app.yaml
  │   │   └── ...(25サービス)
  │   ├── staging/
  │   │   └── ...
  │   └── production/
  │       └── ...
  ├── infrastructure/
  │   ├── argocd/
  │   ├── cert-manager/
  │   └── monitoring/
  └── argocd-apps/
      └── applicationsets.yaml

プロモーションフロー

ステージトリガー承認自動テスト
devイメージプッシュ不要(自動)スモークテスト
stagingdevテスト成功不要(自動PR)E2Eテスト、負荷テスト
productionstagingテスト成功Team Lead承認必須カナリーリリース

ロールバック手順

方法手順所要時間
git revertGitOpsリポジトリで前のコミットをrevert3分
Argo CD UIHistoryから前のリビジョンを選択してSync1分
自動ロールバックカナリーリリースのメトリクス悪化で自動発動即座

達成度チェック

観点達成基準
カタログ設計8種類以上のアイテムが定義され、パラメータとガードレールがある
API設計RESTfulなAPI設計で、認証・認可が定義されている
GitOpsフローリポジトリ構成、プロモーション、ロールバックが設計されている
実現可能性CloudOps社の規模と技術スタックに適合した設計になっている
開発者体験開発者の認知負荷が軽減される設計になっている

推定所要時間: 90分