1. 문제 정의

  2. 사실 수집

    image.png

  1. 원인 추론

  2. 해결 방안

    1. Queue ⇒ 회원가입 로직에 Queue 를 적용해 요청을 순차적으로 처리
    2. Transaction ⇒ ID 조회 과정과 등록 과정을 하나의 트랜잭션으로 구성
    3. Redis 의 Lock key ⇒ 가입 시도중인 ID에 대해 LOCK KEY를 적용
  3. 해결 시도

  4. 해결

      // 동시성 제어
      const lockAcquired = await redis.createLockKey('register', value.loginId);
      if (!lockAcquired) {
        logger.info(`[ AUTH: registerRequestHandler ]  ALREADY_EXIST_ID  ===>>> 동시 접근, 탈락`);
        return config.FAIL_CODE.ALREADY_EXIST_ID;
      }
    
      // 중복 로그인 검사 KEY
      const loginKey = await redis.createUserLogin(loginId.nickname);
      if (!loginKey) {
        logger.info(`[ AUTH: loginRequestHandler ]  ALREADY_LOGGED_IN_ID  ===>>> 이미 접속중인 ID`);
        return config.FAIL_CODE.ALREADY_LOGGED_IN_ID;
      }