테스트 코드를 작성하던 중, 하나의 Redis로 테스트 코드와 개발을 함께 진행하고 있다는 것을 뒤늦게 발견하였다.
테스트 환경에서는 mysql이 아닌 h2를 이용하기에 redis 또한 분리해야 된다는 것을 잊고 있었고 현재까지 큰 문제는 없었지만, 이후 정확한 테스트를 위해 DB를 분리하기로 하였다.
현재는 아래와 같은 순서로 서버에 배포되기에, 서버와 로컬 환경에서는 내부적으로 redis를 띄워 사용할 수 있으나, gitAction 환경에서는 별도로 처리해주어야했기에 어떤 환경에서든 사용할 수 있도록 스프링부트 내부에서 redis를 띄우기로 하였다.
로컬 → gitAction → server
처음 떠올렸던 방법은 3가지였는데,
- gitAction 환경에서 테스트 전용 redis를 구동
- embedded redis 사용
- docker 을 이용해 redis 구동
1번 방법은 gitAction 이외의 환경에서 별도의 처리를 하기에도, 각기 다른 redis를 사용함으로 발생하는 문제 또한 존재할 것 같아 제외하였다.
3번 방법은 외부의 docker 를 이용해 띄우는 만큼, 이를 키고 끄는 과정에서 생각보다 많은 시간이 소요된다고 한다. 하지만 좋은 테스트코드를 위해서는 빠른 시간 또한 중요하다 판단하였기에 최종적으로 2번 방법을 선택하게 되었다.
2번 방법을 선택하고 찾아보니 embedded redis 는 크게 3가지가 존재했는데, 특별한 이유가 아니라면 마지막 링크인 codemonstur 을 사용하길 추천한다.
https://github.com/kstyrc/embedded-redis
https://github.com/ozimov/embedded-redis
https://github.com/codemonstur/embedded-redis
kstyrc 나 ozimov 의 코드는 6,4년 간 업데이트가 없다는 점도 이유이긴 하지만, 결정적으로 Mac M1 환경에서 사용하려면 별도로 설정 및 다운로드를 해주어야한다.
사용법은 정말 간단하다.
( 해당 저장소에는 2024.11.28 일 기준으로도 주기적인 업데이트가 이루어지고 있기에, 가능하다면 버전을 확인하고 최신 버전을 사용하자
https://mvnrepository.com/artifact/com.github.codemonstur/embedded-redis )
testImplementation 'com.github.codemonstur:embedded-redis:1.4.3'
이후 사용하고 싶은 위치에 new RedisServer(”포트번호”) 로 객체를 생성하고 start,stop 메소드만으로 간단하게 embedded redis를 사용할 수 있다.
추가적인 설정이 필요하다면 RedisServerBuilder 코드를 확인해보자.
private RedisServer redisServer;
public void redis() throws IOException {
redisServer = new RedisServer(6379);
redisServer.start();
redisServer.stop();
}
'Redis' 카테고리의 다른 글
Redis(레디스) 설치, 외부 접속 허용, 비밀번호 설정 (0) | 2024.07.29 |
---|