2025-04-03
Flix 프로젝트: 개발 기록 - 7
FlixSpring BootRedisSessionAPI
1. 오늘의 진행 상황 & 구현 내용
Redis 기반 세션 관리 API 구현
Redis를 활용한 세션 관리 API를 구현했습니다. 주요 구현 영역은 다음과 같습니다:
- 세션 생성, 조회, 갱신, 삭제 API 엔드포인트
- 사용자별 세션 관리 기능
- 세션 상태 관리 시스템
주요 API 엔드포인트:
@RestController
@RequestMapping("/api/v1/sessions")
public class SessionController {
@PostMapping
public ResponseEntity<Session> createSession(@RequestBody SessionRequest request) {
// Session creation logic
}
@GetMapping("/{sessionId}")
public ResponseEntity<Session> getSession(@PathVariable String sessionId) {
// Session retrieval logic
}
@PutMapping("/{sessionId}/refresh")
public ResponseEntity<Session> refreshSession(@PathVariable String sessionId) {
// Session refresh logic
}
@DeleteMapping("/{sessionId}")
public ResponseEntity<Void> deleteSession(@PathVariable String sessionId) {
// Session deletion logic
}
}세션 조회 & 상태 관리 기능:
- 사용자별 세션 조회 API
- 활성 세션 목록 조회 기능
- 세션 상태 업데이트 기능
2. 문제 있었던 점 & 해결 과정
Error: Redis 데이터 직렬화 이슈
Caused by: org.springframework.data.redis.serializer.SerializationException:
Cannot serialize object of type [com.zerry.session.model.Session]
해결 방법:
@Configuration
public class RedisConfig {
@Bean
public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory connectionFactory) {
RedisTemplate<String, Object> template = new RedisTemplate<>();
template.setConnectionFactory(connectionFactory);
// JSON serialization configuration
Jackson2JsonRedisSerializer<Object> serializer = new Jackson2JsonRedisSerializer<>(Object.class);
ObjectMapper mapper = new ObjectMapper();
mapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
mapper.activateDefaultTyping(LaissezFaireSubTypeValidator.instance,
ObjectMapper.DefaultTyping.NON_FINAL);
serializer.setObjectMapper(mapper);
template.setValueSerializer(serializer);
template.setHashValueSerializer(serializer);
template.setKeySerializer(new StringRedisSerializer());
template.setHashKeySerializer(new StringRedisSerializer());
return template;
}
}3. 앞으로의 계획
세션 관리 기능 확장
- 동시 접근 제한 구현
- 세션 이벤트 로깅 시스템 구축
- 세션 통계 데이터 수집
성능 최적화
- Redis 캐싱 전략 개선
- 세션 데이터 압축 적용
- 배치 처리 도입
오늘의 교훈
"분산 환경에서의 세션 관리는 데이터 일관성과 성능의 균형을 맞추는 것이 핵심이다."
배운 점:
- Redis 직렬화 설정의 중요성
- 세션 만료 처리의 정밀함
- API 설계의 확장성 고려