프로젝트의 세션클러스터링을 Redis를 활용하고자 합니다.
이에 대한 가이드 요청 드립니다.
Redis로 세션클러스터링을 구성하기 위해서는 프로젝트 팀에서 충분한 검토가 선행되어져야 합니다
Redis를 활용한 가이드 드립니다.
1. 의존성 설정 추가 프로젝트의 pom.xml에 아래 의존성 라이브러리를 추가한다.
<!-- https://mvnrepository.com/artifact/org.springframework.session/spring-session-data-redis --> <dependency> <groupId>org.springframework.session</groupId> <artifactId>spring-session-data-redis</artifactId> <version>1.3.5.RELEASE</version> </dependency>
2. 웹 필터 설정 web.xml 파일에 아래 filter를 추가한다.
(우선순위가 제일 높아야 합니다.)
<filter> <filter-name>springSessionRepositoryFilter</filter-name> <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class> </filter> <filter-mapping> <filter-name>springSessionRepositoryFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
3. Spring Session 설정
context-redis.xml 파일(혹은 별도 파일)에 아래 bean을 추가합니다.
<!-- Spring Session Data Redis --> <bean class="org.springframework.session.data.redis.config.annotation.web.http.RedisHttpSessionConfiguration"/>
프로덕션 환경에서 Redis를 세션클러스터링으로 사용할 때 고려사항은 아래와 같습니다.
– 최소 Master/Slave 구조를 가져갈 것 (3중화 구성을 권장합니다.)
– 클러스터를 사용하는 경우 Pool을 설정
– Redis 엔터프라이즈 버전을 통한 모니터링
– 세션 적재 대상 및 적재 사이즈 검토 세션에 적재되는 대상은 java.io.Serializable을 구현하여야 합니다.
– 세션 만료 처리로 인한 부하 검토 기본적으로 분단위 세션 만료 처리 위 항목 외에도 반드시 프로덕션 환경에서의 성능테스트를 수행하여 잠재적인 문제들을 확인해야 합니다.
참고
– http://redisgate.kr/redis/configuration/redis_overview.php
– https://hyperconnect.github.io/2018/10/21/spring-session-migration.html