문제
3일 행사 동안 부스 방문객이 QR로 접속해 문자 인증 → 안내 → OX퀴즈 → 설문 → 경품 추첨 → 당첨 문자 → 스태프 수령 확인까지 한 번에 진행해야 했습니다. 실제 인파 속에서.
결정
- 경품 추첨 함수를 advisory lock + 행 잠금 폴백 + 수량 CHECK 제약 3중으로 — 현장 동시 접속에서도 초과 지급 0.
- 스태프가 눈으로 대조하는 코드와 URL 식별 토큰을 분리했습니다.
- 추첨 엔진 교체·쿠폰 같은 큰 변경을 데이터 게이트(값이 비면 구 동작으로 폴백)를 두고 미리 프로덕션에 올렸습니다. 추첨은 잔량 비례 가중 무작위, 전량 소진 시 "당일 이벤트 종료".
부서진 곳과 고친 방법
- 클라이언트 확정 반영분이 프로덕션에 없었는데 코드·커밋·배포 로그는 정상으로 보였습니다. 다른 세션의 main 배포가 이 브랜치 산출물을 덮은 것을 실측으로 찾아 머지·재배포하고 배포 가드를 걸었습니다.
- iOS에서만 판정 팝업 뒤 화면이 옆으로 밀렸습니다. overflow-x:hidden이 숨은 가로 스크롤 컨테이너가 되고 포커스가 화면을 끌고 간 것. overflow-x:clip으로 해결했습니다.
결과
- 참여 961명 · 완주 960명 · 경품 수령 922명
- 설문 응답 961건(100%) · 만족도 4.79/5 · 주제 이해도 4.78/5
- 문자 발송 오류 0, 경품 3일간 전량 소진
- 동시성 시험 200 요청 — 재고 초과 0 · 중복 지급 0 · 멱등 12/12
- 참가자 플로우 8단계 + 수령 화면