반응형
상황
- fream 프로젝트의 인증과 인가는 세션방식으로 구현된다.
- 세션클러스터링 방식은 Redis,Memcached등의 별도의 세션정보를 저장하는 데이터 스토어를 사용한다.
Spring-Session
Spring Session provides an API and implementations for managing a user’s session information while also making it trivial to support clustered sessions without being tied to an application container-specific solution. It also provides transparent integration with:
- HttpSession: Allows replacing the HttpSession in an application container-neutral way, with support for providing session IDs in headers to work with RESTful APIs.
Spring Session은 사용자의 세션정보를 관리하는 API를 제공하며, 특정 WAS가 제공하는 클러스터링에 의존하지 않는 세션 클러스터링을 지원한다.
Spring Session은 아래와 같은 데이터스토어를 지원한다.
- Spring Session Data Redis
- Spring Session JDBC
- Spring Session Hazelcast
- Spring Session MongoDB
- Spring Session for Apache Geode
Redis와 같은 데이터스토어를 쉽게 사용할수 있게해주며, 추후에 데이터 스토어를 바꾼다 해도, 어느정도 유연성있게 대처 가능하기에 Spring-Session 라이브러리를 통해 클러스터링을 해결하고자 한다.
그중 Data Redis가 아닌 JDBC를 선택한 이유가 몇가지 있다.
프로젝트의 목적은 세션클러스터링을 해결하는것이 목적이지 Redis자체를 쓰는것이 목적은 아니다.
- Data Redis를 선택하면 Redis라는 추가적인 관리요소가 늘어난다. 그러나 당장은 NoSQL의 성능적인 퍼포먼스는 필요하지 않다. 즉, RDBMS를 재활용해 관리비용을 줄이며 세션클러스터링은 해결 할 수 있다.
- 부하테스트를 하며 직접 측정된 자료를 통해 JDBC -> Data Redis로 넘어가는 과정이 더 타당하다고 생각한다.
References:
https://docs.spring.io/spring-session/reference/index.html
반응형
'프로그래밍' 카테고리의 다른 글
REST API 란? (0) | 2022.06.26 |
---|---|
Spring-Session-JDBC로 클러스터링을 해결하자-2 (0) | 2022.02.25 |