[AWS] AWS ElastiCache로 Redis 생성하기

꼬마요리사레미·2024년 4월 8일

AWS

목록 보기
9/10

  • AWS ElastiCache 서비스에 접속하여 지금 시작 - Redis 버튼을 차례대로 클릭해준다.

  • RDS와 마찬가지로 private-database-subnet 서브넷에 위치 시켜준다.
  • 레디스는 보통 6379 포트에서 실행되기 때문에, 레디스 보안 그룹을 생성할 때 ECS 컨테이너에서 6379 포트로 들어오는 모든 트래픽을 허용하도록 인바운드 규칙을 설정했다.

마무리 전..

팀 프로젝트에서 로컬 환경에서 쉽게 실행하고 테스트할 수 있도록 환경을 구성하는 것이 중요하다고 생각했다. 즉, 어느 개발자든 개발 및 테스트를 수행할 때 외부 서비스 및 리소스에 영향을 받지 않는 것이 핵심이다.

게다가 로컬 환경에서는 필요한 외부 의존성에 직접 연결하여 테스트를 수행할 수 있지만, CI 도구를 사용하여 테스트를 자동화할 때는 어려움이 발생할 수 있다. 데이터베이스나 레디스나 AWS의 서비스를 이용하고 있고, 모두 Private Subnet에 위치하고 있기 때문에 외부에서의 접근이 불가능하다.

외부 의존성에 구애받지 않는 환경을 제공하고자 내장형 데이터베이스인 H2를 사용했던 것처럼 레디스도 이러한 설정이 필요했다. testcontainers 라이브러리를 사용하여 로컬 환경에서 실행 시 임베디드 레디스 컨테이너를 실행할 수 있도록 아래와 같이 설계하였다.

dependencies {
	implementation 'org.testcontainers:testcontainers:1.19.3'
}
@Configuration
@Profile({"default", "local"})
public class EmbeddedRedisConfig {

    private static final String REDIS_IMAGE = "redis:7.0.8-alpine";
    private static final int REDIS_PORT = 6379;
    private static final GenericContainer REDIS_CONTAINER;

    static {
        REDIS_CONTAINER = new GenericContainer(REDIS_IMAGE)
                .withExposedPorts(REDIS_PORT)
                .withReuse(true);
        REDIS_CONTAINER.start();

        System.setProperty("spring.redis.host", REDIS_CONTAINER.getHost());
        System.setProperty("spring.redis.port", REDIS_CONTAINER.getMappedPort(6379).toString());
    }
}

GitHub Actions에서 Docker를 지원하기 때문에 CI 테스트에서 통과할 수 있다.

0개의 댓글