조인 코드 시스템 설계 시 초기 단순 접근 방식에서 여러 난관에 직면합니다. ### 1. 초기 숫자 코드의 한계
- 6자리 숫자 코드는 1백만 가지 조합으로, 시스템 확장 시 코드 고갈 및 높은 충돌 확률(활성 50만 개 시 50% 충돌)을 야기하며, 재활용 불가 시 무한 루프 위험이 있습니다.
2. 영숫자 코드의 대안과 UX 난관
- 영숫자 6자리 코드는 약 21억 가지 조합으로 고갈 문제는 완화하나, ‘0’↔’O’ 같은 시각적 유사성, 비속어 포함 가능성, 대소문자 정규화 등 UX 문제가 발생합니다.
3. 최적의 해결책: 유효 범위 제한 및 Ruby on Rails 구현
-
active불리언 컬럼과join_code를 결합한 고유 인덱스를 통해 ‘활성’ 게임 내에서만 고유성을 보장하여 코드 재활용을 가능하게 합니다. -
이 접근 방식은 전체 시스템의 충돌 확률을 효과적으로 관리하며, 초기 숫자 기반 코드의 뛰어난 UX(쉬운 입력, 가독성)를 유지하면서 확장성을 확보하는 핵심 전략입니다.
-
Ruby on Rails에서는
Game모델에 6자리 숫자 정규식 적용,active상태에 따른 유효성 검사,before_validation콜백에서SecureRandom.random_number를 활용한 고유 코드 생성 로직을 구현하여 효율성을 높입니다.