ROI · P6 · ★★★☆☆ — 임팩트 중간(앱 진입 hot path) / 노력 S~M
4096 풀 전체 IN 조회 → subset 조회 or 충돌 catch-재시도 의존.
왜
UserService.generateUniqueGuestNickname 이 4096개 닉네임 풀 전체를 WHERE nickname IN (...) 로 조회해 앱 메모리에서 차집합을 계산한다. 게스트 생성·소셜 신규가입(앱 진입 hot path)마다, 재시도 루프면 한 요청에 최대 5회 반복된다.
무엇을
- 후보를 랜덤 N개(~20)만 뽑아 그 subset 만
IN 조회하거나, 이미 있는 unique 충돌 catch-재시도 구조(createGuest)에 기대어 사전 조회를 제거.
- 후보 소진 시 실패 신호(
nicknameGenerationFailed) 보존 여부 트레이드오프 고려.
- 위치:
UserService.kt:330 (findNicknamesIn), NICKNAME_POOL = 64×64.
출처: 토너먼트·user 도메인 성능·안정성 전수조사
왜
UserService.generateUniqueGuestNickname이 4096개 닉네임 풀 전체를WHERE nickname IN (...)로 조회해 앱 메모리에서 차집합을 계산한다. 게스트 생성·소셜 신규가입(앱 진입 hot path)마다, 재시도 루프면 한 요청에 최대 5회 반복된다.무엇을
IN조회하거나, 이미 있는 unique 충돌 catch-재시도 구조(createGuest)에 기대어 사전 조회를 제거.nicknameGenerationFailed) 보존 여부 트레이드오프 고려.UserService.kt:330(findNicknamesIn),NICKNAME_POOL= 64×64.출처: 토너먼트·user 도메인 성능·안정성 전수조사