コンテンツにスキップ

2026-04 production shadow / synthetic verification 要件

位置づけ

production の動作確認を、実ユーザーへの影響を最小化しながら

  1. promotion 前
  2. deploy 後
  3. 定期実行

の 3 面で継続できるようにするための要件。

適用範囲

  • .github/workflows/deploy-prod-preview.yml
  • .github/workflows/prod-preview-smoke-storefront.yml
  • .github/workflows/production-smoke-storefront.yml
  • .github/workflows/promote-main.yml
  • scripts/ops/deploy-targets.sh
  • apps/storefront/tests/e2e/smoke/home.spec.ts
  • scripts/ops/load-storefront-smoke-credentials.sh
  • scripts/ops/storefront-readonly-shadow-probe.sh

合意事項

  1. isolation model
  2. production verification は synthetic-first + shadow-readonly とする。
  3. 主導線確認は synthetic user で行い、shadow は read-only probe の補助レーンに限定する。

  4. synthetic の隔離レベル

  5. production の synthetic は廃止し、production verification は shadow-readonly + prod-safe browser smoke に限定する。
  6. default channel の通常商品・通常顧客・通常決済を production synthetic の前提にしてはいけない。

  7. production で許容する確認深度

  8. default channel での実施対象は以下まで。
    • ログイン
    • ホーム
    • 商品一覧 / 商品詳細
    • カート投入
    • カート表示
    • チェックアウト画面表示
    • safe probe / read-only GraphQL probe
  9. 実決済 gateway への課金・与信・売上確定は production では実施しない。

  10. pre-release hidden lane / pre-deploy gate

  11. production 前ゲートは prod-preview の deploy / smoke 成功を promotion / PR to main 側で要求する。
  12. 正式ルートは Deploy Staging -> Staging Smoke Storefront -> Deploy Prod Preview -> Prod Preview Smoke Storefront -> Promote Main -> Deploy Production とする。

  13. prod-preview

  14. Deploy Prod PreviewStaging Smoke Storefront 成功後に起動し、 未リリースの Storefront / React Dashboard build を production data plane に接続する。
  15. prod-preview は Cloudflare Access 保護を必須とし、Access app と non-bypass policy が確認できない場合は deploy / check を fail させる。
  16. prod-preview の Storefront / React Dashboard は production Vendure / CMS / assets / Secrets を使うが、Worker 名・public host・rate limit namespace・maintenance KV・observability destination は production と 共有しない。
  17. prod-preview は release candidate の短時間確認用 lane とし、追加の Vendure Fly app / machine / DB は作らない。backend は現行 production Vendure を使い、未リリース Vendure backend の production DB 接続検証は 別設計に分離する。
  18. GitHub Actions の deploy target は prod-preview のまま維持するが、AWS Secrets Manager は production secrets を読むため、OIDC に使う GitHub Environment は production に固定する。
  19. Prod Preview Smoke Storefrontprod-preview に対して
    • read-only shadow probe
    • production-safe synthetic smoke(business-canary / KPI proxy lane)を実施する。
  20. read-only shadow probe は /api/health/live /api/health/ready /api/version /auth/login に加え、Shop API の readonly search / products / collections / product(slug) query を含む。
  21. prod-preview の smoke は production-smoke channel / principal を使い、 default channel の通常顧客・通常商品・通常決済を mutation しない。

  22. post-deploy / periodic smoke

  23. Production Smoke Storefront
    • Deploy Production 成功後
    • 定期実行
    • 手動実行で起動する。
  24. current production に対して

    • read-only shadow probe
    • production-safe synthetic smoke(business-canary / KPI proxy lane)
    • 関係者向け Sentry Feedback manual check (?sentry-feedback=1)を必要時のみ実施する。
  25. credentials / cleanup

  26. synthetic smoke の認証情報は AWS Secrets Manager の production (prod) / storefront 配下を正本とする。
  27. E2E_LOGIN_EMAIL / E2E_LOGIN_PASSWORD を明示的に投入し、既定値 fallback は認めない。
  28. smoke channel token / no-op payment secret / synthetic customer credentials は production-smoke 用の secret として通常 customer credential から分離する。
  29. synthetic principal は、対象 smoke が確認したい商品導線の visibility policy を通る顧客を選ぶ。商品詳細 smoke では product(slug) が見えるだけでは不十分で、 validateVisibility を通る principal を secret に登録する。
  30. カート状態は実行前後に cleanup し、shippingMode を含めて初期化する。

  31. failure handling

  32. Playwright artifact、workflow log archive、Slack 通知を残す。
  33. production の observability 導線を個別切り分けしたい場合のみ production-sentry-smoke-storefront.yml を手動実行する。

  34. operator entrypoints

  35. read-only shadow lane の手動再実行は just storefront-shadow-probe production を正本とする。
  36. staging の business-canary / KPI proxy lane は just storefront-business-canary staging で critical flow smoke を再実行する。
  37. staging workflow も production と同様に shadow-readonly probe を先行実行し、 latency budget と data anomaly を先に切り分ける。
  38. production の business-canary / KPI proxy lane は just storefront-business-canary production で shadow-readonly + prod-safe synthetic を再実行する。
  39. prod-preview の business-canary / KPI proxy lane は just storefront-business-canary prod-preview で Cloudflare Access 経由の shadow-readonly + prod-safe synthetic を再実行する。
  40. prod-preview の promotion gate はまず just env-status prod-previewjust storefront-shadow-probe prod-preview を必須にする。business-canary は production-smoke channel の商品在庫・CMS publish 状態にも依存するため、失敗時は Cloudflare / deploy 問題と production-smoke fixture 運用問題を分けて扱う。
  41. prod-preview の環境状態確認は just env-status prod-preview、 canonical URL 確認は just environment-urls prod-preview を正本とする。
  42. just smoke-production を追加する場合は、just env-status productionjust storefront-business-canary production を束ねる薄い alias とし、 実体の正本は既存 recipe に置く。
  43. production で storefront smoke credential が未設定なら、authenticated lane を skip せず fail させる。shadow lane は先行実行してよいが、 workflow 全体は false green を許容しない。

受け入れ観点

  1. Deploy Prod Preview が Storefront / React Dashboard の未リリース build を prod-preview Worker に配信し、production traffic へ route しないこと。
  2. prod-preview host が Cloudflare Access app と non-bypass policy で保護され、 未設定なら deploy / check が fail すること。
  3. Prod Preview Smoke Storefrontprod-preview に対する read-only shadow probe と production-smoke channel / principal の synthetic smoke を実行できること。
  4. Promote MainProd Preview Smoke Storefront 成功後にのみ起動すること。
  5. Production Smoke Storefront が post-deploy / periodic / manual の 3 trigger で実行できること。
  6. default channel の production-safe smoke が order placement / payment confirmation を行わないこと。
  7. synthetic smoke が実行前後に cart cleanup を行うこと。
  8. credentials が production Secrets Manager を正本として解決され、既定値 fallback に依存せず、未設定時は prod-preview / production smoke が fail すること。
  9. root just recipe から shadow lane と business-canary lane を環境別に再実行できること。
  10. shadow-readonly probe が latency budget 超過や minimum data threshold 未達でも fail すること。
  11. production-smoke channel の synthetic 注文は no-op payment、SMOKE-PROD-* customerCode / SKU、smokeRunId 付き artifact を満たすこと。