scale-out에서의 세션 관리

Feb 14, 2024
scale-out에서의 세션 관리

 

scale-out

트래픽 증가 등의 이유로 서버 장비를 여러 대 추가하여 시스템을 확장하는 방법
같은 일을 하는 서버를 추가하기에 수평적으로 확장
데이터변화가 적은 웹 서버에 적합
 

세션을 관리하는 몇 가지 방법

  1. sticky session
    1. 말 그대로 고정된 세션 IP 또는 JsessionId를 기억하고 있다가 요청이 다시 오면 그 해당 IP로 보내줌
    2. 단점: 느릴 수 있다
  1. JsessionId 복사
    1. 서버에서 프로세스 하나 만들어서 다른 서버로 요청 (동기화된다) → JsessionId 복사
    2. 단점: 타이밍적으로 동기화 하기 직전에 다른 곳으로 갈 수도 있어서 튕겨져나갈 수 있다
  1. DB에 저장 (session을 안 씀)
    1. 서버에서 JsessionId를 DB로 넘겨 각 서버가 DB를 공유
    2. 단점: I/O발생
 
세 가지 방법 다 단점이 명확
그래서 나온 방법
 
  1. 메모리데이터베이스
    1. 하드디스크를 안 쓰고 메모리에서 처리하기 때문에 영구히 기록되지 않는다
    2. I/O가 일어나지 않는다
    3. session은 어차피 영구히 기록될 필요가 없으니 괜찮다
    4. Redis, Memcached가 있는데
      1. Redis는 싱글스레드
      2. Memcached는 멀티스레드
 
 
 
Share article

stwin755