2026-04 production shadow / synthetic verification 要件¶
位置づけ¶
production の動作確認を、実ユーザーへの影響を最小化しながら
- promotion 前
- deploy 後
- 定期実行
の 3 面で継続できるようにするための要件。
適用範囲¶
.github/workflows/deploy-prod-preview.yml.github/workflows/prod-preview-smoke-storefront.yml.github/workflows/production-smoke-storefront.yml.github/workflows/promote-main.ymlscripts/ops/deploy-targets.shapps/storefront/tests/e2e/smoke/home.spec.tsscripts/ops/load-storefront-smoke-credentials.shscripts/ops/storefront-readonly-shadow-probe.sh
合意事項¶
- isolation model
- production verification は synthetic-first + shadow-readonly とする。
-
主導線確認は synthetic user で行い、shadow は read-only probe の補助レーンに限定する。
-
synthetic の隔離レベル
- production の synthetic は廃止し、production verification は shadow-readonly + prod-safe browser smoke に限定する。
-
default channel の通常商品・通常顧客・通常決済を production synthetic の前提にしてはいけない。
-
production で許容する確認深度
- default channel での実施対象は以下まで。
- ログイン
- ホーム
- 商品一覧 / 商品詳細
- カート投入
- カート表示
- チェックアウト画面表示
- safe probe / read-only GraphQL probe
-
実決済 gateway への課金・与信・売上確定は production では実施しない。
-
pre-release hidden lane / pre-deploy gate
- production 前ゲートは
prod-previewの deploy / smoke 成功をpromotion / PR to main側で要求する。 -
正式ルートは
Deploy Staging -> Staging Smoke Storefront -> Deploy Prod Preview -> Prod Preview Smoke Storefront -> Promote Main -> Deploy Productionとする。 -
prod-preview
Deploy Prod PreviewはStaging Smoke Storefront成功後に起動し、 未リリースの Storefront / React Dashboard build を production data plane に接続する。prod-previewは Cloudflare Access 保護を必須とし、Access app と non-bypass policy が確認できない場合は deploy / check を fail させる。prod-previewの Storefront / React Dashboard は production Vendure / CMS / assets / Secrets を使うが、Worker 名・public host・rate limit namespace・maintenance KV・observability destination は production と 共有しない。prod-previewは release candidate の短時間確認用 lane とし、追加の Vendure Fly app / machine / DB は作らない。backend は現行 production Vendure を使い、未リリース Vendure backend の production DB 接続検証は 別設計に分離する。- GitHub Actions の deploy target は
prod-previewのまま維持するが、AWS Secrets Manager は production secrets を読むため、OIDC に使う GitHub Environment はproductionに固定する。 Prod Preview Smoke Storefrontはprod-previewに対して- read-only shadow probe
- production-safe synthetic smoke(business-canary / KPI proxy lane)を実施する。
- read-only shadow probe は
/api/health/live/api/health/ready/api/version/auth/loginに加え、Shop API の readonlysearch/products/collections/product(slug)query を含む。 -
prod-previewの smoke は production-smoke channel / principal を使い、 default channel の通常顧客・通常商品・通常決済を mutation しない。 -
post-deploy / periodic smoke
Production Smoke StorefrontはDeploy Production成功後- 定期実行
- 手動実行で起動する。
-
current production に対して
- read-only shadow probe
- production-safe synthetic smoke(business-canary / KPI proxy lane)
- 関係者向け Sentry Feedback manual check
(
?sentry-feedback=1)を必要時のみ実施する。
-
credentials / cleanup
- synthetic smoke の認証情報は AWS Secrets Manager の production (
prod) / storefront 配下を正本とする。 E2E_LOGIN_EMAIL/E2E_LOGIN_PASSWORDを明示的に投入し、既定値 fallback は認めない。- smoke channel token / no-op payment secret / synthetic customer credentials
は
production-smoke用の secret として通常 customer credential から分離する。 - synthetic principal は、対象 smoke が確認したい商品導線の visibility
policy を通る顧客を選ぶ。商品詳細 smoke では
product(slug)が見えるだけでは不十分で、validateVisibilityを通る principal を secret に登録する。 -
カート状態は実行前後に cleanup し、shippingMode を含めて初期化する。
-
failure handling
- Playwright artifact、workflow log archive、Slack 通知を残す。
-
production の observability 導線を個別切り分けしたい場合のみ
production-sentry-smoke-storefront.ymlを手動実行する。 -
operator entrypoints
- read-only shadow lane の手動再実行は
just storefront-shadow-probe productionを正本とする。 - staging の business-canary / KPI proxy lane は
just storefront-business-canary stagingで critical flow smoke を再実行する。 - staging workflow も production と同様に shadow-readonly probe を先行実行し、 latency budget と data anomaly を先に切り分ける。
- production の business-canary / KPI proxy lane は
just storefront-business-canary productionで shadow-readonly + prod-safe synthetic を再実行する。 - prod-preview の business-canary / KPI proxy lane は
just storefront-business-canary prod-previewで Cloudflare Access 経由の shadow-readonly + prod-safe synthetic を再実行する。 - prod-preview の promotion gate はまず
just env-status prod-previewとjust storefront-shadow-probe prod-previewを必須にする。business-canary は production-smoke channel の商品在庫・CMS publish 状態にも依存するため、失敗時は Cloudflare / deploy 問題と production-smoke fixture 運用問題を分けて扱う。 - prod-preview の環境状態確認は
just env-status prod-preview、 canonical URL 確認はjust environment-urls prod-previewを正本とする。 just smoke-productionを追加する場合は、just env-status productionとjust storefront-business-canary productionを束ねる薄い alias とし、 実体の正本は既存 recipe に置く。- production で storefront smoke credential が未設定なら、authenticated lane を skip せず fail させる。shadow lane は先行実行してよいが、 workflow 全体は false green を許容しない。
受け入れ観点¶
Deploy Prod Previewが Storefront / React Dashboard の未リリース build をprod-previewWorker に配信し、production traffic へ route しないこと。prod-previewhost が Cloudflare Access app と non-bypass policy で保護され、 未設定なら deploy / check が fail すること。Prod Preview Smoke Storefrontがprod-previewに対する read-only shadow probe と production-smoke channel / principal の synthetic smoke を実行できること。Promote MainがProd Preview Smoke Storefront成功後にのみ起動すること。Production Smoke Storefrontが post-deploy / periodic / manual の 3 trigger で実行できること。- default channel の production-safe smoke が order placement / payment confirmation を行わないこと。
- synthetic smoke が実行前後に cart cleanup を行うこと。
- credentials が production Secrets Manager を正本として解決され、既定値 fallback に依存せず、未設定時は prod-preview / production smoke が fail すること。
- root
justrecipe から shadow lane と business-canary lane を環境別に再実行できること。 - shadow-readonly probe が latency budget 超過や minimum data threshold 未達でも fail すること。
production-smokechannel の synthetic 注文は no-op payment、SMOKE-PROD-*customerCode / SKU、smokeRunId付き artifact を満たすこと。