로컬에서는 Spring Session, 배포에서는 Redis: 세션 저장소 분리 전략

2023. 9. 20. 15:15·개발중/Spring Boot & Redis
728x90
반응형

이슈

개발자들이 로컬 환경에서 각각 Redis를 설정하는 것은 번거로운 작업입니다. (아마도 ? web 팀에서는 이러한 결론이 나왔습니다!) 이러한 문제를 해결하기 위해, 로컬 개발 환경에서는 Spring Session Storage를 사용하고, 실제 배포 환경에서는 Redis Session Storage를 사용하는 방법을 채택했습니다. 이렇게 하면 개발자는 로컬에서 별도의 Redis 설정 없이도 작업을 진행할 수 있고, 실제 운영 환경에서는 Redis의 뛰어난 성능과 안정성을 활용할 수 있습니다.

 

 

해결 방안

Spring의 Profile 기능을 이용해 로컬과 배포 환경에서 세션 저장소를 분리하는 방법을 구현했습니다.

 

/**
 * dev / prod 환경에서는 Redis Session Storage 를 사용합니다.
 * @author sbjung
 */
@Profile("!local")
@Configuration
@EnableRedisHttpSession
public class RedisSessionConfiguration {

    @Bean
    public SessionRegistry springSessionBackedSessionRegistry(RedisIndexedSessionRepository redisIndexedSessionRepository) {
        return new SpringSessionBackedSessionRegistry<>(redisIndexedSessionRepository);
    }
}

 

로컬 환경에서는 SessionRegistryImpl을 사용하였습니다.

 

/**
 * dev / prod 환경에서는 Spring Session Storage 를 사용합니다.
 * @author sbjung
 */
@Profile("local")
@Configuration
public class SessionConfiguration {

    @Bean
    public SessionRegistry springSessionBackedSessionRegistry( ) {
        return new SessionRegistryImpl();
    }
}

 

배포 환경에서는 Redis를 사용하기 위해 RedisIndexedSessionRepository와 SpringSessionBackedSessionRegistry를 활용했습니다.

 

local 프로필에서 Redis 자동 구성을 비활성화하려면, application-local.properties 또는 application-local.yml 파일에 다음 설정을 추가합니다.

spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration
728x90
반응형
저작자표시 (새창열림)

'개발중 > Spring Boot & Redis' 카테고리의 다른 글

Spring boot 3.2.2 & Redis & GenericJackson2JsonRedisSerializer  (0) 2024.04.15
클래스 변경과 직렬화: Spring Redis 환경에서의 serialVersionUID 관리  (0) 2023.11.17
Spring Security에서 Redis를 사용하면서 겪은 SessionRegistry 문제  (0) 2023.09.20
[Spring - Redis] RedisReadOnlyException: READONLY You can't write against a read only replica. Master kill 시 에러 ( master / slave 구조임 )  (0) 2023.09.15
[Spring - Redis] READONLY You can't write against a read only replica.  (0) 2023.09.15
'개발중/Spring Boot & Redis' 카테고리의 다른 글
  • Spring boot 3.2.2 & Redis & GenericJackson2JsonRedisSerializer
  • 클래스 변경과 직렬화: Spring Redis 환경에서의 serialVersionUID 관리
  • Spring Security에서 Redis를 사용하면서 겪은 SessionRegistry 문제
  • [Spring - Redis] RedisReadOnlyException: READONLY You can't write against a read only replica. Master kill 시 에러 ( master / slave 구조임 )
Binsoo
Binsoo
내 트러블 슈팅
  • Binsoo
    정수빈 기술블로그임.
    Binsoo
  • 전체
    오늘
    어제
    • 빈수 개발자 개발 일기 (932)
      • 개발중 (634)
        • Spring Boot (95)
        • Spring Security (2)
        • Spring Batch (6)
        • Spring Boot & Redis (13)
        • Java Persistence API (JPA) (28)
        • Web (42)
        • Rest Api (7)
        • Spring Concurrency Control (3)
        • Redis (8)
        • Kubernetes (k8s) (4)
        • MYSQL (35)
        • AirFlow (15)
        • Docker (2)
        • Git (22)
        • Linux (9)
        • JSON Web Tokens (JWT) (4)
        • Troubleshooting (87)
        • Swagger (0)
        • Vue.js (52)
        • Java (74)
        • html (12)
        • C (5)
        • jQuery (15)
        • JavaServer Pages (JSP) (17)
        • Arduino (1)
        • JavaScript (35)
        • Amazon Web Services (AWS) (11)
        • Algorithm (9)
        • 참고 기능 (18)
        • mongo (2)
      • PROJECT (27)
        • 스프링부트+JPA+몽고 API 개발 (3)
        • MINI (2)
        • 게시판 (3)
        • vue 프로젝트 (1)
        • JPA 사이드 프로젝트 기록 (17)
      • TEAM STUDY (156)
        • 가상 면접 사례로 배우는 대규모 시스템 설계 기초 (8)
        • 한 권으로 읽는 컴퓨터 구조와 프로그래밍 (12)
        • NAVER DEVELOPER (4)
        • LINUX (23)
        • PYTHON (19)
        • SERVER (8)
        • 알고리즘 코딩 테스트 스터디 (31)
        • 쿠버네티스 (40)
        • 대세는 쿠버네티스 [초급~중급] (11)
      • BOOK (0)
      • 자격증 (61)
        • 리눅스 1급 - 필기 기록 (19)
        • 네트워크 관리사 (2)
        • 네트워크 관리사 2급 - 실기 기록 (21)
        • 네트워크 관리사 2급 - 필기 기록 (16)
        • 정보처리 (2)
      • 직장인 대학원 (17)
        • 기록 (1)
        • 캐글 스터디 (3)
        • R (12)
  • 블로그 메뉴

    • 홈
    • 태그
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    리눅스 1급 요약
    git
    스프링
    리눅스 마스터
    파이썬 알고리즘
    네트워크 관리사 자격증
    docker
    쿠버네티스
    알고리즘
    REST API
    네트워크 관리사
    VUE
    쿠버네티스 스터디
    redis
    Spring
    BackendDevelopment
    java
    springboot
    리눅스 마스터 요약
    네트워크 관리사 2급
    jpa
    리눅스 마스터 1급 요약
    리눅스 마스터 1급
    네트워크 관리사 학점
    네트워크 관리사 요약
    네트워크 관리사 실기
    Git 저장소
    파이썬
    리눅스 마스터 1급 정리
    네트워크 관리사 2급 실기
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
Binsoo
로컬에서는 Spring Session, 배포에서는 Redis: 세션 저장소 분리 전략
상단으로

티스토리툴바