Session

김형진·2023년 6월 22일
0

서버에서는 Session을 통해 client를 판별한다.

서버는 요청이 어느 client의 것인지 알기 위해서 session 정보를 확인하는데, 처음 요청이 들어온 client에게 응답으로 session정보(session id)가 담긴 cookie를 함께 내어주고, 이후의 요청에는 이 cookie를 함께 보내도록 하여 서버측에서 cookie를 보고 session을 확인하여 어느 client의 요청인지 판단하게 된다.

각 세션에는 유효기간이 정해져있으며, 유효기간 내에 client로부터 요청이 들어오지 않으면 세션은 폐기된다.

세션은 주로 서버측 메모리에 저장된다.
디비에 저장하는 방법도 있는데, 이는 서버를 여러 대 운영하는 경우 여러 서버가 하나의 데이터베이스에 저장된 세션을 공유하거나 서버가 다운되어도 세션정보는 유지된다는 장점이 있다. 그러나 메모리에 저장하는 것보단 당연히 성능이 떨어질 수밖에 없다.

여러 서버가 운용되어 로드밸런싱되는 경우 세 가지 방법을 통해 세션을 확인하고 유지할 수 있다.

  1. 세션 어피니티

한 세션에 대해선 하나의 서버에서 고정하여 처리하는 방법이다. 각각의 서버가 중복되지 않는 세션을 유지할 수 있다는 점은 괜찮지만 그로 인해 한 서버에 부하가 생겨도 분산이 제대로 이뤄지기 힘들다는 단점이 있다.

  1. 중앙 집중식 세션 스토어

세션을 한 곳에서 관리하며 운용서버는 이를 공유한다. 세션에 상관없이 로드밸런싱이 가능하다는 장점이 있는 반면 어플리케이션 성능이 세션스토어의 성능에 영향을 받을 수 있다는 단점이 있다.

  1. 세션 복제

서버 간 세션을 공유하고 동기화하는 방법이다. 세션관련 처리 성능이 좋고 세션이 서버의존적이지 않다는 장점이 있으나 각 서버의 메모리 사용량이 증가한다는 단점이 있다.

profile
히히

0개의 댓글

Powered by GraphCDN, the GraphQL CDN