개발자
안녕하세요, 프로젝트를 진행하던 중에 JWT와 세션 사용에 대한 선택을 결정해야 했는데요. 일단, 클라이언트의 상태를 stateless하게 관리하고 서버의 부하를 줄이기 위한 선택으로 jwt를 도입하게 되었습니다. 근데 문득 궁금점이 생기더라구요. 1. jwt 토큰의 refresh 토큰 관리, logout 등의 기능을 위해 redis를 도입했는데, 세션도 서버의 메모리가 아니라 redis를 사용하게 되면 결국 서버의 부하를 줄여줄 수 있으니, jwt를 굳이 도입하는 이유가 있을까요? 1-1. 스스로 고민해본 결과로는 결국 정보를 jwt 토큰에 저장하느냐, 세션을 사용해서 세션의 정보를 DB에 저장하느냐 그 차이인 것 같은데 맞는지 궁금합니다. 그래서, 결국 redis를 사용하더라도 redis 자체의 부하를 줄여주지 못하는 건가 싶습니다.
답변 3
인기 답변
JWT를 Redis에 저장해서 요청마다 로그아웃여부 등을 확인한다면, 결국 세션 저장소로 Redis를 사용하는 것과 동일합니다. 특히 Redis 장애시 전 시스템에 장애가 발생하도록 구현했다면 JWT의 이점이 없어지고, 또 상대적으로 큰 JWT를 클라이언트와 주고 받게되니 더 비효율적이라고 할 수 있지요. JWT를 사용하면서 로그아웃, 자동 타임아웃, 강제 로그아웃 등을 구현하는 경우에 JWT의 장점이 유지되도록 비동기로 구현하거나 Redis 장애시 영향을 최소화하기 위해 타임아웃이나 서킷 브레이커 등을 적용하는게 좋습니다.
김용욱
삼성 SDS 소프트웨어 아키텍트 • 2월 19일
관련해서 블로그 글을 작성해봤습니다. 부족하나마 도움이 되었으면 좋겠습니다. 클라우드의 세션 - ③ 세션을 토큰으로 대체하기, JWT를 Redis에 넣는다고? https://m.blog.naver.com/wharup/223357659971
익명
작성자
2월 19일
좋은 글 잘봤습니다 ! 감사합니다 :)
지금 가입하면 모든 질문의 답변을 볼 수 있어요!
현직자들의 명쾌한 답변을 얻을 수 있어요.
이미 회원이신가요?
지금 가입하면 모든 질문의 답변을 볼 수 있어요!