본문 바로가기

⭐ AWS/Load Balancing & TargetGroup

Sticky Session과 Session Clustering 비교

Sticky Session이 적용되어 있는것과 적용이 안되어 있을때 비교

Sticky Session

Sticky Session은 이름 그대로 서버를 고정하는 방식이다.

웹 서버로의 첫 요청 이후의 모든 요청을 처음 요청을 처리한 서버로 지속적으로 연결하여 세션 문제를 해결한다.

대표적인 방법으로 cookie에 이용 서버를 저장하는 방법이 있다.

 

다만, 결국 사용자가 접속해야하는 서버가 정해져있기 때문에 트래픽 쏠림 현상에서 완전히 자유로울 수는 없고, 서버에 장애가 발생하는 경우 해당 서버를 이용하고 있던 사용자의 세션 정보를 잃게 된다는 위험이 있다.

Session Clustering 

Clustering은 여러 컴퓨터를 연결하여 하나의 시스템처럼 동작하도록 하는 기술을 말한다. Session Clustering은 각 WAS의 세션을 묶어서 관리하는 방식이다.

 

이렇게 하게되면 사용자가 같은 묶음으로만 접속한다면 동일한 세션 데이터를 받을 수 있도록 보장할 수 있다. 한 서버에 고정되지 않아도 되므로 트래픽 쏠림 문제에 대해 보다 자유롭고, 개별 서버에 문제가 발생해도 세션 정보를 유지할 수 있게 된다.

 

다만, 세션 데이터가 저장될 때마다 모든 서버에 해당 데이터가 입력되어야 하므로, 즉 동기화의 과정이 필요하므로 성능 저하가 올 수 있고, 개별 서버 안에서도 각 서버의 세션 정보가 아닌 동일 그룹의 모든 세션 정보를 저장해야 하므로 많은 메모리가 필요하다.

 

이런 세션 클러스터링 방식을 보완하고자, 모든 was가 아닌 하나의 서버에만 세션을 동기화하고, 그 외 서버에는 세션 키만 들고 있도록  하여 값을 백업하는 primary-sendary session 복제 방식과 여러 서버에서 하나의 별도의 세션 저장소(session storage)를 사용하는 세션 스토리지 방식이 존재 한다. 대표적으로 redis가 세션 클러스터링을 구현하는 서비스라고 볼 수 있다.