Session

김형진·2023년 6월 22일

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

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

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

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

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

  1. 세션 어피니티

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

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

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

  1. 세션 복제

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

profile
히히

0개의 댓글