퀴즈 진행 방식 설계 결정 문서
💭 논의 사항
Q: 왜 선착순 처리를 풀이 시간으로 하지 않고, 사용자들이 다른 참가자를 기다리게 하는 방식을 선택했는가?
현재 설계에서는 모든 참가자가 문제 풀이를 완료하거나 제한 시간이 종료된 후에 다음 문제로 진행하는 동기화된 진행 방식을 채택했습니다. 이에 대한 대안으로 개별 진행 방식(풀이 시간 기준 선착순, 즉시 다음 문제 진행)이 제안되었습니다.
🎯 결정 사항
동기화된 진행 방식(모든 참가자 대기 후 일괄 진행) 채택
📝 결정 이유
1. 공정성 확보
- 문제 유출 방지
- 먼저 푼 참가자가 다른 참가자에게 답을 유출하는 것을 원천 차단
- 실시간 경쟁의 공정성 보장
- 동일한 조건 제공
- 모든 참가자가 동일 시점에 문제를 접하게 되어 공정한 경쟁 환경 조성
- 네트워크 지연으로 인한 불공정성 최소화
2. 기술적 이점
- 서버 부하 관리
- 문제 진행을 동기화함으로써 서버 리소스의 효율적 관리 가능
- 피크 부하 예측 및 제어 용이
- 상태 관리 단순화
- 모든 참가자의 동일한 문제 진행 상태 유지
- 시스템 복잡도 감소
- 안정적인 에러 처리
- 문제 전환 시점의 명확한 상태 관리
- 동기화된 상태에서의 예외 처리 용이
3. 사용자 경험
- 퀴즈쇼 분위기 조성
- 실제 퀴즈쇼와 유사한 긴장감 제공
- 참가자들의 몰입도 향상
- 참가자 간 유대감
- 동시에 같은 문제를 풀며 경쟁하는 공동 경험 제공
- 실시간 대규모 참여형 퀴즈의 특성 강화
🔄 대안 분석
개별 진행 방식(즉시 다음 문제 진행)
- 장점
- 개인별 진행 속도에 따른 유연한 참여 가능
- 대기 시간 최소화