EXERCISE 60分

佐藤CTOからの指令:「エンジニア50名規模の組織でアーキテクチャガバナンスの仕組みを設計してほしい。ADR運用、レビュープロセス、テクニカルスタンダード、フィットネス関数の4つの柱で設計してくれ。」

#ミッション難易度目安時間
1ADRテンプレートとプロセス設計★★☆15分
2アーキテクチャレビューチェックリスト★★★15分
3テクニカルスタンダードの策定★★☆15分
4フィットネス関数の実装計画★★★15分

Mission 1: ADRテンプレートとプロセス設計

50名のエンジニア組織でADRを運用するプロセスを設計せよ。

解答例
# ADR-XXXX: [タイトル]

## ステータス
提案中 / 承認済み / 廃止 / 置換(ADR-YYYY)

## コンテキスト
- 何を決定する必要があるか
- どのような制約や要件があるか

## 検討した選択肢
### 選択肢A: [名前]
- メリット: ...
- デメリット: ...

### 選択肢B: [名前]
- メリット: ...
- デメリット: ...

## 決定
選択肢Aを採用する。

## 根拠
なぜこの選択肢を選んだか。

## 影響
- この決定が影響するチーム・コンポーネント
- 移行が必要な場合のタイムライン
■ ADR運用プロセス
1. 起票: 任意のエンジニアがPRでADRを提出
2. レビュー: 影響を受けるチームのTech Leadが72時間以内にレビュー
3. 議論: コメントで議論、週次アーキテクチャ会議で対面議論も可
4. 承認: 2名以上のTech Leadの承認で採択
5. 共有: 全エンジニアにSlack通知、月次ニュースレターに掲載
6. 見直し: 四半期ごとに既存ADRの妥当性をレビュー

■ ADRが必要なケース(ガイドライン)
- 新しい言語/フレームワークの導入
- データベースの変更
- 認証/認可方式の変更
- API設計方針の変更
- インフラアーキテクチャの大きな変更

Mission 2: アーキテクチャレビューチェックリスト

新しいサービスや大きな変更に対するアーキテクチャレビューのチェックリストを作成せよ。

解答例
カテゴリチェック項目
設計既存のADRとテクニカルスタンダードに準拠しているか
設計適切な設計パターンを使用しているか
設計サービス間の依存関係は適切か(循環依存なし)
データデータモデルは正規化/非正規化の判断が適切か
データ個人情報の取り扱いが適切か
セキュリティ認証・認可が適切に設計されているか
セキュリティ入力バリデーションが実装されているか
パフォーマンスSLOが定義されているか
パフォーマンスキャッシュ戦略は適切か
運用監視・アラートが設計されているか
運用ロールバック手順が明確か
コストコスト見積もりが妥当か
テストテスト戦略が定義されているか

Mission 3: テクニカルスタンダードの策定

組織のテクニカルスタンダード(技術標準)のドキュメント構成を設計せよ。

解答例
■ テクニカルスタンダード構成

1. 言語・フレームワーク
   - 推奨: TypeScript (Node.js), Python (FastAPI)
   - 許可: Go (パフォーマンスクリティカル)
   - 非推奨: Java (レガシーのみ), Ruby
   - 新規採用には ADR が必要

2. データベース
   - OLTP: PostgreSQL (デフォルト)
   - キャッシュ: Redis
   - 検索: OpenSearch
   - 新DB導入には ADR + PoC が必要

3. API設計
   - 同期: REST (OpenAPI 3.0)
   - 非同期: SQS + SNS
   - 内部通信: gRPC (検討中)
   - 命名規則: kebab-case, バージョニング: URI path (/v1/)

4. インフラ
   - コンテナ: ECS Fargate
   - IaC: Terraform (モジュール化)
   - CI/CD: GitHub Actions
   - 監視: CloudWatch + Datadog

5. セキュリティ
   - 認証: OAuth 2.0 / OIDC
   - シークレット: AWS Secrets Manager
   - 脆弱性スキャン: Snyk (CI統合)

Mission 4: フィットネス関数の実装計画

5つのフィットネス関数を定義し、CI/CDへの統合計画を策定せよ。

解答例
#フィットネス関数閾値実行タイミングツール
1レイヤー間依存ルール違反0件PRdependency-cruiser
2バンドルサイズ< 300KB gzipPRsize-limit
3API レイテンシ p95< 500msmain マージ後k6
4セキュリティ脆弱性Critical 0件日次Snyk
5テストカバレッジ> 80%PRJest + Istanbul
■ 導入ロードマップ
Month 1: #1, #2 (静的チェック、導入容易)
Month 2: #5 (テストカバレッジ)
Month 3: #3, #4 (動的テスト、セキュリティ)

■ 違反時の対応
- PR時: マージブロック(error)or コメント通知(warning)
- 日次: Slackチャンネルに通知、チケット自動作成
- 四半期: フィットネススコアレポートを経営会議で報告