AWS, Travis 배포
SSAFY에서 프로젝트를 진행하면서 항상 배포는 다른 팀원이 담당했기 때문에, 정확하게 어떤 과정으로 배포하는지 알 기회가 없었다. 이번에 리팩토링을 하면서 AWS EC2, S3, RDS, CodeDeploy 등을 활용하여 배포를 진행하였고, SSAFY에서는 jenkins서버를 따로 제공해줬기 때문에 그것을 사용했지만, 개인적으로 jenkins를 사용하려면 EC2 인스턴스가 추가로 필요하기 때문에 Travis로 진행하게 되었다.
80번 만에 배포 성공
서적과 구글링을 하면서 80번만에 제대로 배포에 성공할 수 있었다.
배포를 80번이나 하게된 가장 큰 이유는, RDS로 배포 테스트를 진행하려고 했기 때문이었다. 로컬 환경, EC2 환경에서는 문제없이 실행되었지만 Spring Boot Test 코드에서 RDS를 접근만 하면 오류를 내뱉어 냈다. 처음에는 RDS와 SpringBoot의 방언 불일치에서 발생하는 줄 알고, 몇 시간 동안 방언 설정을 바꿔가며 배포를 진행했지만, 결과는 항상 fail이었다.
심지어 변경할 때 마다 오류 로그가 변경돼서 잘 짚었다고 생각했다...
MariaDB 버전
rds : 10.4 / spring 기본설정
TestDBInit > 유저 데이터 생성 FAILED
java.lang.IllegalStateException at DefaultCacheAwareContextLoaderDelegate.java:132
Caused by: org.springframework.beans.factory.BeanCreationException at AbstractAutowireCapableBeanFactory.java:1786
Caused by: org.hibernate.service.spi.ServiceException at AbstractServiceRegistryImpl.java:275
Caused by: org.hibernate.HibernateException at DialectFactoryImpl.java:100
2021-04-26 11:32:57.766 INFO 4758 --- [extShutdownHook] o.s.s.concurrent.ThreadPoolTaskExecutor : Shutting down ExecutorService 'applicationTaskExecutor'
MariaDB 버전
rds : 10.4 / spring 10.3 명시 (spring.jpa.hibernate.dialect: org.hibernate.dialect.MariaDB103Dialect)
TestDBInit > 유저 데이터 생성 FAILED
org.springframework.transaction.CannotCreateTransactionException at TestDBInit.java:86
Caused by: org.hibernate.exception.JDBCConnectionException at TestDBInit.java:86
Caused by: java.sql.SQLNonTransientConnectionException at TestDBInit.java:86
Caused by: java.sql.SQLNonTransientConnectionException at TestDBInit.java:86
Caused by: java.net.SocketTimeoutException at TestDBInit.java:86
아무튼! 지금까지 결론은 RDS에 접근권한을 줘야 하는데 Travis서버가 어떤 ip로 실행하는지 알 수 없었고, 3306 포트를 전부 열어두기엔 문제가 생길 가능성이 크다고 판단했다. 배포 테스트 관련해서 여러 자료를 찾던 중, 테스트만 h2 DB의 인메모리 설정으로 실행하고, 실 서버는 RDS를 이용하는 방법으로 해결할 수 있었다.
[참고서적] : 스프링 부트와 AWS로 혼자 구현하는 웹 서비스
'[IT] > AWS' 카테고리의 다른 글
[AWS] EC2, S3, RDS (0) | 2021.05.19 |
---|---|
[AWS EC2] Nginx SSL 적용 (Certbot) (0) | 2021.04.18 |
[AWS EC2] 원격 서버에 Docker, MariaDB설치 (0) | 2021.04.18 |
Hostinger, 가비아 & Route 53 도메인 설정후기 (0) | 2021.04.17 |
[ AWS EC2 ] 인스턴스 생성 / putty 원격 서버 접속 (0) | 2020.12.06 |