Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

DOing

[Spring Boot] 세션저장소 본문

Spring

[Spring Boot] 세션저장소

mangdo 2021. 4. 11. 21:28

세션저장소에 대해 3가지방법 중 하나를 선택할 수 있다.

 

1. 톰캣 세션 사용하기

: 디폴트로 선택되는 방식

내장 톰캣(WAS)에 세션을 저장하게 되면 애플리케이션 실행시 항상 초기화가된다.

또 2대 이상의 WAS에서 서비스하고 있다면 톰캣들 간의 세션 동기화를 위한 추가설정이 필요하다.

 

2. MySQL과 같은 데이터베이스를 세션저장소로 사용하기

: 여러 WAS간의 공용 세션을 사용할 수 있는 가장 쉬운 방법

설정이 간단하지만 결국 로그인 요청마다 DB IO가 발생하여 성능상 이슈가 발생할 수 있다.

보통 로그인 요청이 많이 없는 백오피스, 사내시스템 용도에서 사용한다.

 

 

3. Redis와 같은 메모리 DB를 세션저장소로 사용하기

: B2C 서비스에서 가장 많이 사용하는 방식

실제 서비스가 사용되기 위해서는 내장 Redis와 같은 방식이 아닌 외부 메모리 서버가 필요하다.

(하지만 Redis와 같은 서비스는 유료이다)

 

 

MySQL과 같은 데이터베이스를 세션저장소로 사용하는 방법

[ build.gradle ]

compile('org.springframework.session:spring-session-jdbc')

[ application.properties ]

: 세션저장소를 jdbc로 선택하도록 설정한다.

spring.session.store-type=jdbc

 

[h2-console에서 확인]

: JPA로 인해 세션테이블이 자동생성되었다.

스프링을 재실행하면 H2도 같이 재시작하게된다.

아직은 H2를 쓰고 있어 세션이 풀리지만 이후에 AWS의 RDS를 사용하게되면 세션이 풀리지않게된다.