본문 바로가기

프로그래밍

Spring-Session-JDBC로 클러스터링을 해결하자-2

반응형

상황

 

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