1. Embedded Redis란?
- Embedded Redis는 애플리케이션 개발 시 외부 Redis 서버 없이 애플리케이션 내부에서 실행되는 인메모리 Redis 서버입니다. 다양한 프로그래밍 언어와 프레임워크에서 지원되며, 주로 테스트 환경에서 실제 Redis 서버를 대체하기 위해 사용됩니다.
- 이 글에서는 Kotlin(Java)과 Spring Boot 환경에서의 구현 예시를 다루지만, Python(redis-server-py), Node.js(redis-memory-server) 등 다른 환경에서도 유사한 솔루션들이 존재합니다.
1.1 사용 목적
- 독립적인 테스트 환경 구성
- 외부 의존성 없는 테스트 실행
- CI/CD 파이프라인에서의 간편한 테스트
- 로컬 개발 환경 설정 간소화
2. Embedded Redis vs Container Redis
2.1 Embedded Redis
장점:
- JVM 내부에서 실행되어 추가 프로세스 불필요
- 빠른 시작과 종료
- 테스트 코드와 함께 시작/종료되는 라이프사이클
- 별도의 설치나 설정 불필요
단점:
- 메모리 사용량이 JVM에 포함
- 실제 Redis 버전과 완벽한 동일성 보장 어려움
- OS 의존적인 바이너리 필요
2.2 Container Redis (Docker)
장점:
- 실제 Redis와 동일한 환경
- 독립적인 프로세스로 실행
- 다양한 Redis 버전 선택 가능
- 운영 환경과 유사한 설정 가능
단점:
- Docker 설치 필요
- 상대적으로 느린 시작 시간
- 리소스 사용량이 더 많음
- 네트워크 설정 필요
3. 사용 가능한 라이브러리
3.1 레거시 라이브러리
<!-- 더 이상 업데이트되지 않는 라이브러리 -->
<dependency>
<groupId>it.ozimov</groupId>
<artifactId>embedded-redis</artifactId>
<version>0.7.3</version>
</dependency>