티스토리 뷰
세션 불일치
세션 불일치란?
세션 불일치 문제란, 여러 대의 서버를 운용 하면서 부하 분산을 할 때, 각 서버에 세션을 저장하다 보니 클라이언트의 요청이 이전과는 다른 서버로 갔을 때, 세션 데이터를 찾을 수 없는 상황을 얘기한다.
예시
예를들어 만약 로그인을 세션으로 구현 했다면, 세션 불일치 문제가 발생했을 때 로그인이 풀릴 수 있다.
- 1번 서버에 Login 을 진행함.
- 3번 서버에 로그인 후 할 수 있는 작업에 대한 API 요청
- 3번 서버에서는 로그인 상태를 확인할 수 있는 세션정보가 없음
- 로그인이 되지 않은 것으로 판단 함.
세션 불일치 문제 해결방법
Sticky Session
내용
클라이언트에 요청을 로드밸런서가 확인(IP tracking or Cookie를 확인한다.)하여 항상 같은 서버로 요청을 보냄.
단점
- 로그인한 서버 로만 요청이 몰린다는 것은 특정 서버에 부하가 집중될 수 있다는 것이다.
- 세션이 저장되어 있는 서버가 죽었을 때, 세션 정보를 잃어 버릴 수 있다
Session Clustering
내용
클러스터링은 여러 노드들을 하나의 시스템 처럼 사용할 수 있게 함을 의미하는데, 세션 클러스터링이란 하나의 서버에 저장된 세션을 모든 노드에 똑같이 복사하는 것을 의미한다.
단점
- 클러스터링 작업을 위한 많은 메모리가 필요하다.
- 서버의 복제를 위해 네트워크 트래픽이 발생하고 성능 저하로 이어진다.
- 복제를 하기까지 시간이 소요되기 때문에, 세션 불일치 위험이 여전히 존재한다.
- 서버의 대수가 늘어 날 때, 기존 서버의 수정이 필요하다.
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 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- OOP
- 컴포짓 패턴
- pool
- 외부 단편화
- 수직 분할
- Sticky Session
- Memory Fragmentation
- pass by value
- ATDD
- RestAssured
- SpringBoot 2.2
- Session
- 동적 디스패치
- 뾰족함
- 동적 타입 언어
- 메모리 단편화
- Object Pool
- 객체 풀
- 장애 해결기
- java
- 수평 분할
- 클린 아키텍처
- 메모리 파편화
- 세션 불일치
- multimap
- 정적 타입 언어
- 내부 단편화
- Clean Architecture
- pass by reference
- 육각형 아키텍처
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
글 보관함