JWT 와 세션의 확장성

Sammy·2024년 4월 18일
0

Authorization

목록 보기
7/9

세션의 확장성 문제

애플리케이션의 규모가 커지고 트래픽이 증가할 때 세션 관리에 어려움이 발생할 수 있다.

원인해결 방법
- 서버 부하 증가
세션은 일반적으로 서버의 메모리에 저장하게 되는데, 사용자 수가 증가할수록 서버 부하가 증가하고 성능 저하가 발생할 수 있다.
- 자주 사용되는 세션 정보를 캐싱하여 서버 부하를 줄일 수 있다.
- 세션 유효기간을 설정함으로서 서버 부하를 감소시키고, 메모리 사용량을 줄일 수 있다.
- 세션 대신 토큰을 사용하여 서버 부하를 줄일 수 있다. (단, refresh 토큰을 사용하지 않았을 경우)
-----
- 세션 불일치
여러 서버에서 사용자 요청을 처리하는 경우, 세션 정보가 서버 간에 동기화가 되지 않아 세션 불일치 문제가 발생할 수 있다.
- 세션 클러스터링을 통해 모든 서버에 동일한 세션 정보를 복제하여 세션 불일치 문제를 해결한다. 단, 메모리 사용량이 증가한다.
- 세션 대신 토큰을 사용하면, 서버는 토큰의 정보를 가지고 있지 않기 때문에 애초에 동기화와 불일치 문제가 발생하지 않는다.
-----
- 데이터 손실
서버 장애 발생 시 메모리에 저장된 세션 정보가 손실될 수 있다.
- 세션 정보를 DB에 저장하여 서버에 장애가 발생하여도 데이터가 손실되지 않도록 한다.
- 정기적으로 세션 데이터를 백업한다.
- 세션 대신 토큰을 사용하면, 서버는 토큰의 정보를 가지고 있지 않기 때문에 서버 장애가 발생하여도 다시 기존 토큰으로 요청할 수 있다.
- refresh 토큰의 경우에도 DB 에 저장하기 때문에 서버 장애가 발생하여도 데이터가 손실되지 않는다.

결론적으로 세션의 확장성 문제 3가지 원인 모두 세션을 관리하는 주체가 서버이기 때문에 발생하는 문제이므로, JWT 토큰을 사용하면 해결될 것으로 보인다.

profile
Web Developer

0개의 댓글