스프링에서 제공하는 세션관리 컴포넌트.
기존 스프링부트가 제공하는 session은 내장 톰캣의 jsession을 주로 쓴다.
하지만 jsession은 내장 톰캣, 즉 웹 어플리케이션에 종속 되어 있는 세션이므로 아래와 같이 horizontal scale-out이 필요한 상황에서 세션 불일치 문제가 발생하게 된다.
위와 같이 서버 하나에 세션이 하나 붙어 있는 상황이면 괜찮겠지만, 아래와 같이 로드밸런서를 두고 스케일 아웃을 해야 하는 상황에서는 아래와 같은 문제들이 생길 수 있다.
이런 문제를 해결하기 위해 Spring Session을 사용할 수 있다. 각 웹 어플리케이션은 각각의 메모리 영역에서 세션관리를 따로 하는 게 아니라, 외부 메모리에 따로 세션을 저장해 두고 접근 하게 된다.
여기서 스프링 세션을 저장 하기 위한 저장소로 in-memory 방식으로 캐싱하여 속도가 빠른 Redis와 함께, 필요에 따라 postgresql 등의 RDB 혹은 mongoDB 등을 병행해서 사용할 수 있다.
단순히 외부 저장소를 이용하는 것이기 때문에 세션 데이터를 저장할 수 있는 저장소면 무엇이든 사용할 수 있다.