-
[AWS] Spring Boot로 ElastiCache 간단한 실습해보기Cloud/AWS 2021. 4. 26. 17:50728x90반응형
AWS ElastiCache 시작하기
이번 글에서는
AWS ElastiCache
를 생성하고 아주 간단한 실습을 하는 것을 정리해보겠습니다.이번 실습에서는
Redis
를 사용해서 할 것이기 때문에Redis
를 체크하겠습니다.위의
노드 유형
을t2.micro(프리티어)
로 해야 합니다! (Default로 되어 있는 거 쓰면 좋은 성능이라 요금 많이 나옵니다..)보안그룹은 따로 생성해서 지정해주어도 되고 기존이 6379 포트가 열려있는 보안그룹이 있다면 그것을 사용해도 됩니다.(저도 열려있는 보안그룹이 있기 때문에 그것을 사용하겠습니다.)
그리고 나머지는
Default
로 놓고 생성하겠습니다. 그러면 위와 같이 생성이 되는데 5분 정도 기다려야 생성이 완료됩니다.EC2 접속 후 redis-cli 설치하기
# make 하기 위핸 gcc 다운 sudo yum install -y gcc # redis-cli 설치 및 make wget http://download.redis.io/redis-stable.tar.gz && tar xvzf redis-stable.tar.gz && cd redis-stable && make # redis-cli를 bin에 추가해 어느 위치서든 사용 가능하게 등록 sudo cp src/redis-cli /usr/bin/
ElastiCache 접속하기
redis-cli -h 본인의엔드포인트 -p 6379 ex) redis-cli -h test-redis.7ab7ab.ab.0001.apn2.cache.amazonaws.com -p 6379
ElastiCache
를 들어가면 위와 같이엔드포인트
가 존재합니다. 여기서primary
의 엔드포인트를 사용하여 접속하겠습니다.위와 같이
Redis-cli
를 사용하여ElastiCache
를 접속해서 간단한 테스트를 해보았습니다. 참고로 ElastiCache는 Local에서 접속이 불가능합니다! 그래서 EC2에서 접속 테스트를 해봐야 합니다.Spring Boot에서 Redis 간단한 실습
간단하게 아키텍쳐로 표현하면 아래와 같습니다.
위의 아키텍쳐와 같이 실습을 진행해보겠습니다. 먼저
Spring Boot Gradle
기반의 프로젝트를 하나 만들겠습니다.build.gradle
dependencies { implementation 'org.springframework.boot:spring-boot-starter-data-redis' }
그리고
Spring-Data-Redis
의존성을 추가하겠습니다. 그리고 Redis 설정 파일을 만들겠습니다.Redis config 생성
@Configuration public class RedisConfig { @Value("${spring.redis.host}") private String redisHost; @Value("${spring.redis.port}") private int redisPort; @Bean public RedisConnectionFactory redisConnectionFactory() { LettuceConnectionFactory lettuceConnectionFactory = new LettuceConnectionFactory(redisHost, redisPort); return lettuceConnectionFactory; } @Bean public RedisTemplate<String, Object> redisTemplate() { RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>(); redisTemplate.setConnectionFactory(redisConnectionFactory()); redisTemplate.setKeySerializer(new StringRedisSerializer()); return redisTemplate; } }
LuttuceConnectionFactory
를 사용해서 Redis 서버와 연결을 하고,RedisTemplate
을 사용해서 데이터를 직렬화해서 저장하고 꺼내오는 역할을 하는 거 같습니다.(아직 입문이라.. 틀릴 수도 있습니다 ㅠ,ㅠ)application.yml
spring: redis: host: 자신의 엔드포인트 port: 6379
위의 AWS ElasiCache의 엔드포인트를 적었다면 Github에 올리기 전에 꼭!!
gitignore
등록을 하셔야 합니다.Controller 코드
@RequiredArgsConstructor @RestController public class RedisController { private final RedisService redisService; @GetMapping("/") public String test() { redisService.redisString(); return "test"; } }
위와 같이 루트 경로의 간단한 API를 하나 만들겠습니다.
Service 코드
@Slf4j @RequiredArgsConstructor @Service public class RedisService { private final RedisTemplate<String, Object> redisTemplate; public void redisString() { ValueOperations<String, Object> operations = redisTemplate.opsForValue(); operations.set("test", "test"); String redis = (String)operations.get("test"); log.info(redis); } }
간단하게 Redis에
key = test, value = test
로 저장을 하는 코드를 작성했습니다. 그리고 해당 프로젝트의 jar 파일을 EC2로 올리겠습니다. (Local에서는 ElastiCache가 접속이 안되어서 EC2에서 테스트를 해야합니다.)./gradlew clean build
Jar를 EC2에 올리는 것은 FileZila를 사용했는데 이 과정은 생략하겠습니다.
현재 EC2에
redis.jar
파일이 존재합니다. 이것을 실행시켜보겠습니다.nohup java -jar redis-0.0.1-SNAPSHOP.jar &
그러면 위와 같이
8080
포트가 잘 실행되는 것을 볼 수 있습니다.그리고 EC2 IP의 8080 포트로 접속해보면 위와 같이 응답이 에러 없이 잘 뜨는 것을 볼 수 있습니다.
EC2에서 다시
Redis-cli
를 사용해서ElasiCache
에 접속해보겠습니다.접속한 후에 아까
key=test, value=test
로 했기 때문에get test
했을 때 value가 test로 잘 반환되는 것을 볼 수 있습니다. 즉, 잘 저장이 된 것입니다.이렇게 이번 글에서는 간단하게
ElastiCache Redis
실습을 해보았습니다.반응형'Cloud > AWS' 카테고리의 다른 글
[AWS] AWS Elastic Container Registry 간단한 실습해보기 (0) 2021.05.06 [AWS] Spring, Nginx, Docker로 무중단 배포하기 - 2탄 (2) 2021.04.28 [AWS] Spring Boot,Travis CI, CodeDeploy, Nginx로 무중단 배포하기 (1) 2021.04.22 [AWS] ELB(Elastic Load Balancer) 개념 정리 (0) 2021.04.20 [AWS] Auto-Scaling, Load-Balancer, CodeDeploy 현재위치 자동화 배포하기 (0) 2021.04.20