Redis를 사용하여 컨테이너(서버 간) 세션을 공유하기

Redis를 사용하여 컨테이너(서버 간) 세션을 공유하는 방법은 크게 ① Redis 서버 설치(Docker 사용), ② Gradle 기반 Java(Spring Boot) 프로젝트에 Redis 세션 설정, ③ 서버 실행/테스트 순서로 정리할 수 있습니다.

1. Redis Docker 설치

  • 도커 이미지를 다운받아 Redis 컨테이너를 실행합니다.

bash
docker pull redis:alpine
docker run -d -p 6379:6379 --name redis redis:alpine
  • 컨테이너 이름, 포트(6379), 이미지 등을 수정할 수 있습니다.

  • 필요에 따라 볼륨, config 파일을 마운트하거나 비밀번호 등 보안 옵션을 추가할 수도 있습니다.

2. Gradle(Spring Boot) 프로젝트 설정

build.gradle 의존성 추가

groovy
implementation 'org.springframework.boot:spring-boot-starter-data-redis'
implementation 'org.springframework.session:spring-session-data-redis'
  • 캐시도 함께 사용할 경우 아래 의존성도 추가합니다.

groovy
implementation 'org.springframework.boot:spring-boot-starter-cache'

application.yml 또는 application.properties 설정 예시

text
spring:
session:
store-type: redis
redis:
host: <redis호스트주소>
port: 6379
password: <비밀번호>
  • 로컬, 도커 모두 동일하게 설정하며 비밀번호를 설정하지 않았다면 password 없이 구성.

Redis 세션 Config (Spring 설정)

  • Session 공유를 위해 아래 어노테이션과 설정 클래스를 추가합니다.

java
@Configuration
@EnableRedisHttpSession
public class RedisSessionConfig {
// 별도 커스텀이 필요하면 빈 추가
}

3. 컨테이너 환경에서 주의점

  • 여러 WAS 컨테이너(예: Docker Compose)에서 동일한 Redis를 바라보도록 application.yml 내 Redis 호스트 정보를 맞춥니다.

  • 같은 Redis 서버를 바라보면 각 컨테이너의 세션이 공유됩니다.

4. 서버 실행 및 세션 공유 테스트

Redis를 사용하여 컨테이너(서버 간) 세션을 공유하기

  • 여러 서버 인스턴스를 띄우고 동일한 사용자가 로그인·접속 시 실제로 세션이 공유되는지 확인합니다.

  • Redis CLI를 통해 저장된 세션 데이터를 직접 검사할 수도 있습니다.


이 과정을 따르면 Docker 기반 Redis 서버를 세운 뒤, Java(Spring Boot) Gradle 프로젝트에서 세션을 Redis로 공유할 수 있습니다.