티스토리 뷰

세션 불일치

세션 불일치란?

세션 불일치 문제란, 여러 대의 서버를 운용 하면서 부하 분산을 할 때, 각 서버에 세션을 저장하다 보니 클라이언트의 요청이 이전과는 다른 서버로 갔을 때, 세션 데이터를 찾을 수 없는 상황을 얘기한다.

 

예시

예를들어 만약 로그인을 세션으로 구현 했다면, 세션 불일치 문제가 발생했을 때 로그인이 풀릴 수 있다.

  1. 1번 서버에 Login 을 진행함.
  2. 3번 서버에 로그인 후 할 수 있는 작업에 대한 API 요청
  3. 3번 서버에서는 로그인 상태를 확인할 수 있는 세션정보가 없음
  4. 로그인이 되지 않은 것으로 판단 함.

 

 

세션 불일치 문제 해결방법

Sticky Session

 

내용

클라이언트에 요청을 로드밸런서가 확인(IP tracking or Cookie를 확인한다.)하여 항상 같은 서버로 요청을 보냄.

 

단점
  1. 로그인한 서버 로만 요청이 몰린다는 것은 특정 서버에 부하가 집중될 수 있다는 것이다.
  2. 세션이 저장되어 있는 서버가 죽었을 때, 세션 정보를 잃어 버릴 수 있다

Session Clustering

 

내용

클러스터링은 여러 노드들을 하나의 시스템 처럼 사용할 수 있게 함을 의미하는데, 세션 클러스터링이란 하나의 서버에 저장된 세션을 모든 노드에 똑같이 복사하는 것을 의미한다.

단점
  1. 클러스터링 작업을 위한 많은 메모리가 필요하다.
  2. 서버의 복제를 위해 네트워크 트래픽이 발생하고 성능 저하로 이어진다.
  3. 복제를 하기까지 시간이 소요되기 때문에, 세션 불일치 위험이 여전히 존재한다.
  4. 서버의 대수가 늘어 날 때, 기존 서버의 수정이 필요하다.

Session Storage

 

내용

독립된 세션 저장소를 준비하고, 다 수의 서버들이 해당 세션 저장소를 공유한다.

예시
  • Redis 등의 공용의 캐싱 서버에 세션 정보를 저장해 두고 다 수의 서버들이 모두 해당 Session Storage를 통해 세션을 관리한다.
단점
  • 세션 저장소가 다운 되면 모든 서버의 세션정보를 잃어버릴 수 있다.

 

 

 

 

Reference
- 세션 불일치 문제 해결방법

 

'Infrastructure' 카테고리의 다른 글

HTTP 1.x 과 HTTP 2.0  (0) 2022.08.04
가상화 (Virtualization)  (0) 2022.07.28
쿠키(Cookie)와 세션(Session)  (0) 2022.07.24
메모리 풀 (Memory Pool)  (0) 2022.07.22
오브젝트 풀 (Object Pool)  (1) 2022.07.20
댓글