본문 바로가기

Spring_SpringBoot/이론

[ 세션 클러스터링(Session Clustering) ]

세션 클러스터링은 WAS가 두 대 이상 설치되어 있을을 경우 동일한 세션으로 세션관리를 하는 것을 의미한다.

동일한 세션으로 여러 곳에서 사용할 수 있게 관리하는 것.

 

동시 접속자가 많은 경우 하나의 WAS만으로는 모든 처리가 불가능하기 때문에 WAS를 묶어 분산처리 한다.
이 때 WAS는 한 곳에 세션을 몰아주거나 세션 서버를 따로 두어 관리하게 된다.

 

방식

1. WAS가 두 대 이상일 때

동시 접속자가 많은 경우 하나의 WAS만으로는 모든 처리가 불가능하기 때문에 WAS를 묶어

분산처리 한다. 이 때 WAS는 한 곳에 세션을 몰아주거나 세션 서버를 따로 두어 관리하게 된다.

 

2. 서버 단계에서 볼 때

 

아파치 서버를 두고 톰캣 서버를 연통시켜서 사용하는 방법이다. 아파치를 통해 세션을 공유한다.

 

2-1) Horizontal Clustering

장점

● 확장성 : 서버를 물리적으로 추가하기 쉽기 때문에 확장성이 뛰어나다.

● 장애 대응 : 하나의 서버에 장애가 발생해도 다른 서버가 계속해서 서비스를 제공할 수 있습니다.

● 부하 분산 : 여러 서버가 동시에 요청을 처리하기 때문에 부하가 분산됩니다.

 

단점

● 관리 복잡성 : 여러 서버를 관리해야 하기 때문에 복잡성이 증가한다.

● 비용 :  물리적 서버를 추가해야 하므로 비용이 증가할 수 있다.

● 네트워크 오버헤드 : 서버 간의 세션 데이터 동기화 때문에 네트워크 오버헤드가 발생할 수 있다.

 

 

2-2) Vertical Clustering

 

장점

● 비용 절감 : 추가적인 물리적 서버 없이 기존 서버의 자원을 최대로 활용할 수 있다.

● 관리 용이성 : 하나의 물리적 서버 내에서 관리하기 때문에 관리가 비교적 용이하다.

● 빠른 설정 : 하나의 서버 내에서 여러 인스턴스를 실행하는 것이므로 설정이 비교적 빠르다.

 

단점

● 확장성 제한 : 하나의 물리적 서버의 자원에 한계가 있기 때문에 수평 확장에 비해 한계가 있다.

● 단일 장애점 : 물리적 서버에 문제가 발생하면 해당 서버의 모든 인스턴스가 영향을 받을 수 있다.

● 자원 경쟁 : 여러 인스턴스가 하나의 물리적 서버 자원을 공유하므로 자원 경쟁이 발생할 수 있다.

 

 

서버가 하나가 아닐 때 세션 저장 방식

1) Sticky Session

로드밸런서가 세션 기간 동안 동일한 클라이언트의 request를 항상 동일한 서버로 라우팅 해주는 기능

 

장점

1) 여러 서버들은 세션 데이터를 교환할 필요가 없다.

2) 정합성 이슈에서 자유로워진다.

 

단점

1) 특정 사용자의 세션은 한 서버에 의존하기 때문에 특정 서버에 트래픽이 집중된다면 장애가 발생할 수 있다.

 

 

2) Session Clustering, Tomcat 지원

was가 두 대 이상 설치되어 있을 경우 모든 세션 정보를 여러 대의 서버에 다 가지고 있는 것

세션이 변경될 때마다 세션정보를 모든 서버에 저장해야 한다.

 

장점

1) 여러 대의 was가 있어도 동일한 세션으로 관리해 Stickey 세션의 단점을 극복

 

단점

1) 모든 서버에 세션 정보를 다 저장해야하기 때문에 서버 메모리의 비효율이 생긴다.

 

 

 

3) 레디스(Redis) 세션 서버를 레디스에 따로 두어 세션 스토리지를 관리하는 것

레디스는 InmemoryDB이며 Session Storage로 사용될 수 있다
서버에 세션 정보를 저장하는 것이 아니라 외부에 레디스 서버를 띄우고 이 서버에 모든

세션정보를 저장하는 것이다.