1. 개요
Spring Boot 애플리케이션을 여러 서버에서 운영할 때, 사용자의 세션을 공유하는 것이 중요합니다. 이 글에서는 Redis를 활용한 Spring Boot 세션 공유 방법을 설명합니다.
2. 왜 Redis를 사용할까?
- 속도: 메모리 기반 저장소라서 빠름
- 확장성: 여러 서버 간 세션 동기화 가능
- 편리한 데이터 구조: Key-Value 형태로 저장
3. 프로젝트 설정
3.1. Redis 의존성 추가
Spring Boot 프로젝트의 build.gradle에 Redis 관련 의존성을 추가합니다.
implementation 'org.springframework.boot:spring-boot-starter-data-redis'
implementation 'org.springframework.session:spring-session-data-redis'
3.2. Redis 설정 파일 (application.yml)
spring:
redis:
host: localhost
port: 6379
session:
store-type: redis
3.3. Redis 세션 설정
Spring Boot에서 Redis 기반 세션 관리를 활성화하기 위해 @EnableRedisHttpSession 어노테이션을 추가합니다.
@Configuration
@EnableRedisHttpSession
public class RedisSessionConfig {
}
4. 세션 공유 테스트
4.1. 컨트롤러 생성
@RestController
@RequestMapping("/session")
public class SessionController {
@GetMapping("/set")
public String setSession(HttpSession session) {
session.setAttribute("username", "user123");
return "Session set successfully!";
}
@GetMapping("/get")
public String getSession(HttpSession session) {
return "Stored username: " + session.getAttribute("username");
}
}
4.2. 실행 및 테스트
- localhost:8080/session/set을 호출하여 세션을 저장합니다.
- localhost:8080/session/get을 호출하여 저장된 세션 값을 확인합니다.
5. 성능 최적화 및 추가 설정
- TTL(Time To Live) 설정: 세션 만료 시간을 조정하려면 spring.session.timeout 값을 설정합니다.
- Redis 클러스터 활용: 여러 Redis 노드를 구성하여 가용성을 높일 수 있습니다.
spring:
session:
timeout: 1800 # 30분
6. 결론
여러 개의 Spring Boot 서버에서 Redis를 이용한 세션 공유가 가능합니다. 이를 통해 부하 분산 및 확장성을 확보할 수 있습니다.
Redis를 활용한 세션 관리는 고속성과 안정성을 갖춘 솔루션으로, 실무에서도 널리 사용됩니다. 추가적인 보안 및 성능 최적화 방법을 적용하여 더욱 효율적인 시스템을 구축할 수 있습니다.
'기술 학습' 카테고리의 다른 글
JAVA 컬렉션 프레임워크 (Collection Framework) (1) | 2025.02.10 |
---|---|
JAVA 기초 개념과 실습 예제 (0) | 2025.02.09 |
AI 코딩 비서, 어디까지 써봤니? 개발자의 AI 활용 일기 (1) | 2025.02.08 |
Spring Boot에서 REST API 설계 및 구현 (1) | 2025.02.07 |
Spring Boot에서 JWT를 활용한 인증 구현 (1) | 2025.02.05 |