Skip to content

[Phase 1 Infra] Setup 0-2 + Sprint 0-5 Infra ストリーム横断 tracker #206

Description

@win2cot

: 本トラッカは GitHub Sub-issues 機能で関連 Issue を hierarchy 管理しています。下記のリストは構造的参照(Sprint / Stage / Week 別の整理)、実際の進捗は GitHub UI 上部の Sub-issues セクションで確認してください(2026-05-23 Sub-issues 移行)。


トラッカー構造の補足(2026-06-28)

Sprint 4/5 の Infra 最終盤(runbook=#752 / NIST=#753 / リリース前チェックリスト=#770)は、前倒し再計画で各 Sprint 本体トラッカー #754(Sprint 4)/ #771(Sprint 5) 配下に起票された。これらを本トラッカーの sub-issue として束ね、Infra 完了を #206 から辿れるようにする。

スコープ注意: #754/#771 は Infra 専用ではなく App 作業(ダッシュボード/通知バッチ/監査ログ/漏洩・認可・性能テスト等)も含む。よって本トラッカーのクローズ可否は Infra 単独ではなく #771(Sprint 5 全体)の完了に依存する。現状 open は #771 のみ(#754 は closed)。#771 が close したら本 #206 もクローズ可。

クローズ判定:

Terraform CI 系(#382 ほか)は別建ての tracker で #206 スコープ外(「確定前提」末尾の別途起票分)。

概要

Phase 1 Sprint 0(#121scaffold ↔ 設計書整合実装」、2026-06-14 〜 2026-06-27、2 週間)着手前に必要な 基盤整備フェーズ(Phase 1 Setup 0-2、3 週間) + 実装フェーズの Infra ストリーム(Phase 1 Sprint 0-5 Infra、10 週間) を集約するトラッカ Issue。

役割分担(v5、2026-05-23 構造再編)

  • 基盤整備フェーズ(Phase 1 Setup 0-2、2026-05-23 〜 2026-06-13、3 週間): Phase 1 Sprint 0 着手のクリティカルパス。monorepo 構造整理 + ローカル開発環境 + Keycloak SPI 設計 ADR
  • 実装フェーズ Infra ストリーム(Phase 1 Sprint 0-5 Infra、2026-06-14 〜 2026-08-22、10 週間): 各 Sprint で App と並行で AWS 基盤を整備(Phase 1 Sprint 0 Infra で Terraform 基盤、Phase 1 Sprint 1 Infra で AWS dev リソース、Phase 1 Sprint 2 Infra で deploy CI/CD、Phase 1 Sprint 3 Infra で dev E2E + ログ基盤、Phase 1 Sprint 4 Infra で runbook + NIST、Phase 1 Sprint 5 Infra で最終調整)
  • Sprint X App ストリーム: 各 Sprint 本体トラッカ([Phase 1 Sprint 0] scaffold ↔ 設計書 v1.4.x 整合実装(2 週間、2026-06-14 〜 06-27) #121 = Phase 1 Sprint 0、以降 Phase 1 Sprint 1-5 トラッカは別途起票)が管理。本トラッカからは参照のみ

詳細仕様は docs/architecture/infrastructure-plan.md(v5)を正本とする。本 Issue 本文はチェックリストと運用情報のみ保持。

2026-06-04 更新(ADR-0004 / ADR-0006 改訂反映): Sprint 0/1 Infra を platform stack(共有: VPC / NAT / ALB / SES / Keycloak runtime + 専用 DB)/ tasks stack(専用: ECS / RDS / Frontend / PHZ / SG-ECS・RDS / users データ) の 2 stack に再編(SSM 疎結合、ADR-0004)。Keycloak runtime は platform 共有 IdP、user データ(users)と per-realm SPI は tasks 所有・SPI は read-only federate + email のみ writable(ADR-0006 改訂、PR #386 merged)。state backend は use_lockfile(DynamoDB 不採用)。別途 Terraform CI(tracker #382 / fmt+validate #383 / IaC scan #384)+ infra-plan §3 同期 #385 を起票済み。

確定前提(2026-05-23 議論で確定した 19 項目、抜粋)

項目 内容
環境階層 local / gha / dev / stg / prd(MVP は local + gha + dev)
ALB 1 つ、Host-based Listener Rule で振り分け
Frontend Bootstrap 5 + 素 JS 軽量 SPA → S3 + CloudFront
ドメイン tasks.dgz48.xyz 系(dgz48.xyz は同 AWS アカウントの Route53 で管理済)
Spring プロファイル 不使用(Native Image 対応の伏線、env vars 注入)
コンテナイメージ 全環境共通、環境別ファイル同梱せず
Terraform 実行 GitHub Actions(OIDC 経由 AWS 認証)
CI/CD トリガ GitHub tag 作成(vX.Y.Z-dev / vX.Y.Z-stg / vX.Y.Z for prd)
シークレット Parameter Store SecureString(Secrets Manager 不使用、コスト)
RDS 認証 tasks-webapi: IAM 認証 / Keycloak: パスワード認証 / master: PS(K-A 案)
リポジトリ構成 1 リポ monorepo(tasks-webapi)、webapi/ web/ keycloak/ infra/ の subdir 構造
Keycloak Custom keycloak/ 配下に独立 Gradle project + Custom Docker Image(SPI で外部 users 参照)
認証基盤 Keycloak セルフホスト(Custom Image)
MySQL 8.4

詳細は計画書 §2 を参照。

サブ Issue チェックリスト

詳細仕様は計画書 §5 / §6 を参照。本リストはチェックリストとして進捗管理する。Milestone は Phase 1 Setup 0 / Phase 1 Setup 1 / Phase 1 Setup 2 / Phase 1 Sprint 0Phase 1 Sprint 5

基盤整備フェーズ(2026-05-23 〜 2026-06-13、3 週間)

Phase 1 Setup 0: monorepo 構造整理(W0、2026-05-23 〜 2026-05-30、3 件)

Milestone: Phase 1 Setup 0

Phase 1 Setup 1: ローカル開発環境(W1-W2、2026-05-31 〜 2026-06-13、7 件)

Milestone: Phase 1 Setup 1

Phase 1 Setup 2: Phase 1 Sprint 0 着手前の設計 ADR 群(W1-W2 並行、2026-05-31 〜 2026-06-13、4 件)

Milestone: Phase 1 Setup 2

実装フェーズ Infra ストリーム(2026-06-14 〜 2026-08-22、10 週間)

Phase 1 Sprint 0 Infra: Terraform 基盤 + Private DNS(W3-W4、2026-06-14 〜 2026-06-27、9 件)

Milestone: Phase 1 Sprint 0(Phase 1 Sprint 0 App との統合 milestone)

Phase 1 Sprint 1 Infra: AWS dev リソース + Keycloak Custom(W5-W6、2026-06-28 〜 2026-07-11、9 件)

Milestone: Phase 1 Sprint 1

Phase 1 Sprint 2 Infra: deploy CI/CD(W7-W8、2026-07-12 〜 2026-07-25、9 件)

Milestone: Phase 1 Sprint 2

Phase 1 Sprint 3 Infra: dev E2E + ログ基盤 + コスト圧縮(W9-W10、2026-07-26 〜 2026-08-08、4 件)

Milestone: Phase 1 Sprint 3

  • (S3Infra-1) infra(dev-e2e): dev E2E 動作確認 + クロステナント先行テスト
  • (S3Infra-2) infra(dev-e2e): パフォーマンス簡易計測(latency / connection pool / メモリ)
  • (S3Infra-3) infra(observability): ログ基盤実装(別議論 ADR 結果反映)
  • (S3Infra-4) infra(scheduling): EventBridge Scheduler で dev ECS 稼働時間切替(平日 19:00-02:00 + 土日 10:00-02:00、Lambda + IAM 経由 ecs:UpdateService)

Phase 1 Sprint 4 Infra: runbook + NIST(W11、2026-08-09 〜 2026-08-15、2 件)

Milestone: Phase 1 Sprint 4

  • (S4Infra-1) docs(ops): 運用 runbook 初版
  • (S4Infra-2) security(nist): MVP 最小 control セット最終確認(現状ギャップ分析含む)

Phase 1 Sprint 5 Infra: 最終調整(W12、2026-08-16 〜 2026-08-22、2 件)

Milestone: Phase 1 Sprint 5

  • (S5Infra-1) infra(release): リリース前チェックリスト + MVP 仕上げ
  • (S5Infra-2) docs(sprint5): MVP リリース引き継ぎメモ + Post-Sprint-0 残課題明文化

並行ストリーム(常時、1 件)

Post-Sprint-0 に延期(本フェーズでは起票しない、参考)

  • (S3B-1) infra(terraform): stg / prd environments + variables 設計
  • (S3B-2) infra(terraform): stg / prd 差分 ADR
  • (S3B-3) infra(terraform): stg / prd terraform plan 確認

受入条件(本トラッカ全体)

  • Phase 1 Setup 0-2 サブ Issue がすべてクローズ(Phase 1 Setup 0/1/2 100%)
  • Phase 1 Sprint 0-5 Infra サブ Issue がすべてクローズ(Phase 1 Sprint 0..5 の Infra 部分 100%)
  • dev で tasks-webapi が動作し、API 28 endpoints が応答(Phase 1 Sprint 2 Infra 完了時)
  • tasks-webapi の v0.1.0-dev tag push で ECR push + ECS update が自動実行
  • keycloak custom の v0.1.0-dev tag push で ECR push + ECS update が自動実行
  • infra の v0.1.0-dev tag push で terraform apply が自動実行
  • dev Keycloak(Custom Image)でログイン → JWT 取得 → tasks-webapi API call が成功
  • tasks-webapi の RDS 接続が IAM 認証 で成功(パスワード未使用)
  • tasks-dev.dgz48.xyz でフロントエンドが表示される
  • secrets は Parameter Store SecureString 経由、平文値が Git や Terraform state に出ない
  • runbook が読みやすく追従可能
  • リリース前チェックリスト(S5Infra-1)が完了

Milestone / GitHub Project 運用

  • Milestone: Setup 単位 + Sprint 単位で 9 つ(Phase 1 Setup 0 / Phase 1 Setup 1 / Phase 1 Setup 2 / Phase 1 Sprint 0Phase 1 Sprint 5)
  • GitHub Project: 既存 Project(#1 タスク管理ツール、id PVT_kwHOAPUzHM4BVC3b)を使用、カスタムフィールド Phase / Iteration / Stream / claude-automation を追加
  • View 構成: By Status / By Setup-or-Sprint / By Stream / Roadmap / Blocked Only の 5 view
  • 運用ルール:
    1. Issue 起票時に必ず Milestone + Phase + Iteration + Stream を設定
    2. 進捗確認は週 1 回(原則金曜)、ズレが 1 週間以上なら計画見直し起票
    3. claude-automation 経由の Issue も Milestone を継承
    4. Project View はカスタマイズせず固定構成
    5. Sprint X Infra Issue は本トラッカと Sprint X 本体トラッカの両方からチェックリスト参照

詳細は計画書 §11 を参照。

システム構成(MVP リリース時、概観)

[local: Developer WSL]
  docker-compose.local.yml(MySQL 8.4 + Keycloak)+ tasks-webapi 直起動 + web/ 静的配信

[gha: GitHub Actions]
  tasks-webapi / keycloak custom / web / infra: build / test / deploy(tag 駆動、OIDC)

[dev @ AWS ap-northeast-1]
  Route53(dgz48.xyz) ─┬─ tasks-dev.dgz48.xyz       → CloudFront → S3 (frontend)
                       ├─ api-dev.tasks.dgz48.xyz  → ALB → tasks-webapi (ECS Fargate, IAM 認証で RDS)
                       └─ auth-dev.dgz48.xyz → ALB → Keycloak Custom (platform 共有 IdP, 専用 DB; SPI で tasks users federate)
  RDS MySQL 8.4(db.t4g.micro、IAM 認証有効化)
  Parameter Store SecureString(master / keycloak / admin / SPI 設定)
  ECR(tasks-webapi + keycloak-custom)
  ログ基盤(別議論)/ S3 + use_lockfile(Terraform state, platform/dev + tasks/dev)

詳細は計画書 §3 を参照。

リポジトリ構成(1 リポ monorepo)

tasks-webapi/
├─ webapi/        # Spring Boot バックエンド(既存 src/ 等を移動)
├─ web/           # Frontend(Bootstrap 5 + 素 JS)
├─ keycloak/      # Keycloak custom(独立 Gradle project + Custom Image + Realm export)
├─ infra/         # Terraform IaC(environments + modules + docs/adr/)
├─ docs/          # 横断ドキュメント(specs / adr / architecture / reviews / dev)
├─ api/           # OpenAPI(横断契約)
├─ docker-compose.local.yml
├─ .github/workflows/
└─ renovate.json  # 多 path packageRules でコンポーネント別ラベル

詳細は計画書 §3.3 を参照。

リスクと前提崩れ時の対応

リスク 対応
Phase 1 Setup 0(構造整理)が想定より広範 / 副作用大 Phase 1 Setup 1 開始を 3〜5 日遅らせて吸収。Phase 1 Sprint 5 Infra subtask 削減
Phase 1 Setup 1 が時間超過(Keycloak Realm 設計が複雑) Phase 1 Setup 2 と Phase 1 Sprint 0 開始を 1 週間ずらす
Phase 1 Setup 2 ADR(SPI 設計)が結論出ず Phase 1 Sprint 1 Infra で「初期は Keycloak ローカル user store のみ」とし、SPI 実装は Phase 1 Sprint 4 以降に延期
App + Infra 並行が 1 人で回らない App 優先、Infra を当該 Sprint 末 + 翌 Sprint 頭に滑らせる(各 Sprint 最大 0.5 週間スライド)
AWS リソースコスト想定超 dev を平日昼間のみ稼働、夜間停止(EventBridge スケジュール)
Keycloak Custom SPI 実装が難航 Phase 1 Sprint 1 Infra で公式 Keycloak Image 採用、Custom Image は Phase 1 Sprint 3-4 へ延期
ログ基盤の選定が長引く Phase 1 Sprint 3 Infra で「CloudWatch Logs 暫定採用」、本格選定は MVP 後

詳細は計画書 §10 を参照。

関連

備考

  • task-type: task-type:design(トラッカ Issue は計画統括、実装は配下の各 Issue)
  • 優先度: priority/p0(Phase 1 Sprint 0 着手の前提)
  • area: area/infra 相当(該当ラベル無ければ作成、または area/ci + area/docs を兼用)

Metadata

Metadata

Assignees

No one assigned

    Labels

    area/infraAWS インフラ(ECS Fargate / RDS / Keycloak / IAM)変更priority/p0Critical / Blocker。本番影響あり、または他作業がブロックされるtask-type:design規約・ADR・設計書の追加/変更タスクtracking親 / トラッキング Issue。複数の子 Issue を集約(例: #120, #121)

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions