상황
Spring-Session-JDBC로 클러스터링을 해결하자-1
상황 fream 프로젝트의 인증과 인가는 세션방식으로 구현된다. 세션클러스터링 방식은 Redis,Memcached등의 별도의 세션정보를 저장하는 데이터 스토어를 사용한다. Spring-Session Spring Session provides an AP
hpotter1993.tistory.com
Spring-Session-JDBC를 프로젝트에 적용해보자.
우선 fream프로젝트는 Gradle을 사용하고 있으므로, build.gradle파일에 의존성을 선언해주자.
dependencies {
compile 'org.springframework.session:spring-session-jdbc'
}
Spring-Session-JDBC는 Tomcat의 세션이아닌, 자체적인 세션을 사용한다. 이는 필터를 통해서 기존 Tomcat의 세션이 아닌, Spring-Session으로 바꿔준다. 이를 위해 @EnableJdbcHttpSession를 직접 붙여 필터를 생성해야한다. 그러나, 아래의 예시와 같이 session.store-type : jdbc를 선언시 Springboot가 자동으로 생성해준다.
Spring-Session-JDBC는 RDBMS를 세션저장소로 사용한다. 즉 fream 프로젝트에서는 MySQL이 되겠다. application.properties나 yml 파일에 간단히 선언한것만으로 Spring-Session-JDBC가 자동으로 해당 RDMS에 접속, 세션과 세션정보를 저장할수있는 테이블을 생성해준다.
session: store-type: jdbc jdbc: initialize-schema: always table-name: SPRING_SESSION
자, 그럼 TalendAPI-Test를 통해 로그인 API를 날려보고, 실제 스프링 세션이 생겼는지 확인해보자.
로그인 API 결과 spring-session 정보 spring-session이 가지고있는 정보
spring-session에 저장되는 정보는 byte화 되어 저장되는걸 볼수 있다.
이로서 RDBMS를 사용해 세션 저장소로 활용하는데 성공했다!
성과
- 특정 WAS에 의존적이지 않은 세션클러스터링
- 기존RDBMS를 활용한 세션저장소, 추가적인 관리소요 X
- Redis,MongoDB등 Spring-session에서 지원하는 저장소로 변경시 라이브러리만 추가해주면 된다.
References:
https://docs.spring.io/spring-session/reference/guides/java-jdbc.html
Spring Session - HttpSession (Quick Start) :: Spring Session
Spring Session provides the @SpringSessionDataSource qualifier, allowing you to explicitly declare which DataSource bean should be injected in JdbcIndexedSessionRepository. This is particularly useful in scenarios with multiple DataSource beans present in
docs.spring.io
https://docs.spring.io/spring-session/reference/guides/boot-jdbc.html
Spring Session - Spring Boot :: Spring Session
Before you use Spring Session, you must update your dependencies. We assume you are working with a working Spring Boot web application. If you use Maven, you must add the following dependencies: pom.xml org.springframework.session spring-session-jdbc Sprin
docs.spring.io
'프로그래밍' 카테고리의 다른 글
REST API 란? (0) | 2022.06.26 |
---|---|
Spring-Session-JDBC로 클러스터링을 해결하자-1 (0) | 2022.02.15 |