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