⬅️ 이전 페이지로 이동

Casa Verde 프로젝트 아키텍쳐

casa verde architecture.png

Casa Verde 프로젝트 ERD

casaverde erd.png

Casa Verde 프로젝트 화면

275150479-9c5612db-cec1-4998-8141-7e1220b97eac.png

275152237-0e1f0f28-7261-412f-8948-da54c094b53d.png

275152215-199eae72-97f9-437c-b193-9de302710d0e.png

275152391-4a05f744-98ea-40ec-8671-f7547acfe05d.png

경험 : BlackList 활용 JWT 관리 설계

문제

프로젝트 마감이 임박한 상황에서, 사용자의 인증이 필요한 요청마다 폐기된 토큰 여부를 확인하기 위해 DB에 불필요한 쿼리를 실행하는 문제가 있었습니다. 이를 해결하여 DB 부하를 줄이고 효율적인 토큰 검증 방식을 도입해야 했습니다.

진행 과정

  1. 로그아웃 등의 요청으로 JWT가 폐기될 경우, JWT의 ID를 Express 전역 변수 blackList에 저장하도록 구현하였습니다.
  2. 인증이 필요한 요청이 들어오면, 토큰의 유효성 검사 및 blackList 조회를 거쳐 검증하는 미들웨어를 설계하였습니다.

결과

blackList를 활용하여 토큰 ID를 메모리에서 조회함으로써 불필요한 DB 부하를 줄이고, 만료되거나 무효화된 토큰을 효과적으로 관리하여 보안을 강화할 수 있었습니다. 또한, Set 자료구조를 활용하여 일반 배열 대비 blackList 조회 속도를 기존 O(n)에서 O(1)로 개선하여, 90% 이상 향상 시켰습니다.