2.2 KiB
KBX UX Experiment & Controlled Rollout v17
목적
UX 변경을 전 사용자에게 즉시 배포하지 않고, 되돌릴 수 있는 범위에서 제한적으로 노출한 뒤 v16 UX Metric과 Guardrail로 판단한다.
허용 범위
- layout
- information emphasis
- default filter
- navigation
- copy
금지 범위
- Permission / Authorization
- Sensitive data exposure
- Domain business rule
- Validation
- Idempotency
- Workflow safety
- WMS scan success/validation rule
- Inventory truth
배정
Server가 Tenant + User + Experiment를 기준으로 안정적인 Bucket을 계산하고, 실제 Experiment에 편입된 사용자만 assignment를 영속화한다. Browser가 Variant를 임의 선택하지 않는다.
Exposure
Assignment API 호출만으로 노출로 세지 않는다. Variant가 실제 렌더링된 뒤 experiment.exposed를 기록한다. 이후 같은 Screen의 semantic telemetry에는 experimentId/variant context가 붙는다.
판단
Reference 정책은 최소 Variant별 200 exposure 이후에만 판정한다. Guardrail 위반은 즉시 롤백 후보이며, candidate는 승격 검토 대상일 뿐 자동 정답이 아니다. 현재 정책은 운영 Threshold이며 통계적 유의성을 주장하지 않는다.
롤백
kill_switch=true, state=rolled-back, rollout_percent=0으로 원자 전환하고 audit을 남긴다. 기존 assignment 이력은 삭제하지 않아 재현성을 유지한다.
열린 화면의 롤백 전파
Runtime 변경 후 /hubs/kbx-experiments SignalR 이벤트로 열린 Browser에 invalidation을 전달한다. Browser는 이벤트 값을 그대로 신뢰하지 않고 Assignment API를 다시 조회한다. SignalR 연결이 끊겨도 다음 화면진입/새로고침의 API 평가가 Source of Truth다.
Telemetry attribution integrity
Browser가 보낸 experimentId/variant를 그대로 신뢰하지 않는다. Ingest 시 현재 사용자 assignment, runtime running 상태, kill switch, rollout bucket을 Server에서 다시 확인한다. 유효하지 않은 context는 일반 업무 event에서는 제거하고, experiment.exposed 자체가 유효하지 않으면 저장하지 않는다.