Jwt 토큰 인증 시 불필요한 쿼리 발생 문제 해결

iy·2024년 5월 6일
0

Trouble Shooting

: 인증 객체 생성 시 불필요한 DB 조회

  1. 상황
    • 인증 객체 시 쿼리 발생
    • 원하는 메서드 요청 시 DB 조회

      User 조회 시 발생한 쿼리인데 인증 객체를 생성할 때 User DB를 조회하는 것을 알 수 있었다.
      해당 상황으로 인증을 할 때 항상 DB를 불필요하게 조회한다는 것을 발견했다.

  2. 문제 확인
  • 사용자 정보 로드

    해당 코드에서 DB를 통해 사용자 정보를 로드하는 것을 알 수 있다.

  • 인증 객체 생성

    DB를 통해 사용자 정보 로드한 메서드 loadUserByUsername()을 통해 인증 객체를 생성해주었다.
    따라서 이 상태는 인증 객체 생성 시 필수적으로 DB 조회를 하고 있는 상황이었다.


  1. 해결 방법 고안
    • DB를 조회하지 않고 JWT 토큰에 최소 User의 정보만 담아서 인증하기 위해 JWT에 설정한 Claims에 담아놓은 정보들로 사용자를 load하도록 메서드를 만들었다.

    • 이후 사용자 인증 객체를 생성해주는 곳에서 기존 DB를 조회하는 메서드가 아닌 해당 메서드를 이용해 인증 객체를 만들어줬다.

  2. 해결
    • 이후 메서드 요청 시 필요한 해당 메서드에서 조회하는 쿼리만 조회되고 인증 때 쿼리는 조회되지 않았다.

    이를 통해 불필요한 DB 조회를 줄여 원하는 메서드 호출 시 시간을 줄여 성능을 조금 더 향상 시킬 수 있었다.

0개의 댓글