-
728x90
Sticky Session, 상태 유지 세션
- 동일한 사용자의 요청을 모두 같은 EC2 인스턴스에 배분하는 기능
- 요청이 항상 상태 정보가 있는 인스턴스에서 처리되기 때문에 해결 가능
Auto Scaling을 병용하는 경우에는 인스턴스를 늘려도 원래 액세스하던 인스턴스에 처리되므로,
효과를 보기가 어렵다.
Session Clustering 세션 클러스터링
- Session의 저장소끼리 Session 객체를 공유
- WAS 간의 Session을 공유
- 별도의 Session Server를 구성
Session Clustering은 사용자 별로 세션을 유지해야 할 때 필요하다.
- 세션 유지
- HTTP는 Stateless이므로, 사용자의 로그인 정보, 장바구니 정보 등을 유지하려면 세션 관리 필요
- 세션은 일반적으로 특정 WAS 인스턴스(WAS-1, WAS-2)에 저장되지만, 서버 장애 시 세션이 사라지는 문제 발생
- Failover 지원
- 사용자 세션이 특정 WAS에 유지된다면, 해당 WAS가 다운될 경우 사용자는 로그아웃되거나 세션이 초기화되는 문제가 발생
- 세션 클러스터링을 통해 여러 WAS가 세션을 공유하면, WAS가 다운되어도 다른 WAS에서 세션 유지 가능
- 로드 밸런싱과 병렬 처리
- 단일 서버에서 모든 세션을 관리하면 부하가 증가하여 성능 저하
- 여러 WAS에서 세션을 분산 처리하면 부하를 줄이고 성능을 향상시킬 수 있음
구현 방법
1) In-Memory Replication
- 각 WAS가 자신의 메모리에 세션을 저장하면서, 다른 WAS 인스턴스와 세션 정보를 동기화
이 방식은 메모리에서 직접 접근이 가능하므로 속도가 빠르지만, WAS 인스턴스 간 네트워크 트래픽이 증가한다.
어느 한 WAS가 다운되어도 다른 WAS에서 세션 유지가 가능하다는 장점이 있다.
- 소규모 트래픽일 때 적용한다
- Tomcat, JBoss, WebLogic 등의 기본 클러스터링 기능
2) Database Persistance
- 세션 데이터를 DB에 저장하고, 모든 WAS가 해당 DB에서 세션을 공유
이 방식은 WAS 간 네트워크 트래픽이 적어 부하가 적게 들지만, DB를 거쳐야 하기 때문에 세션 동기화 속도가 느려질 수 있다.
또한 DB가 단일 장애 지점(SPoF)이 될 수 있다는 점도 존재한다.
- 장기 세션 저장이 필요할 때 사용한다
- WebLogic JDBC Session Persistence
3) External Session Storage
- 별도의 분산 캐시 시스템 등에 세션을 저장하고, 여러 WAS가 공유
이 방식은 빠른 읽기/쓰기 속도로 메모리 기반 저장이 가능하며, 확장성이 뛰어나다.
DB 저장 방식보다 성능이 좋으며, 세션 유지성도 확보할 수 있다.
- 대규모 트래픽과 고가용성 필요시에 사용
- Spring Session + Redis, Nginx + Memcached, WebSphere + Hazelcast
728x90'Cloud' 카테고리의 다른 글
Session Clustering 방식 (0) 2025.02.26 [tomcat] Database 연동 (0) 2025.02.25 [Server] Mount (0) 2025.02.11 grep vs awk (0) 2025.02.11 [HAE Cloud] [DAY 1-2] Database (0) 2024.08.27 - 세션 유지