한이음 프로젝트

[한이음] CI/CD 와 S3

딤섬뮨 2022. 7. 27. 12:54
728x90

S3란?

S3는 AWS에서 제공하는 일종의 파일 서버이다. 이미지 파일을 비롯한 정적 파일들을 관리하거나, 배포 파일들을 관리하는 기능을 지원하는 서버이다. 보통 이미지 업로드를 구현한다면, 이 S3를 이용하여 구현하는 경우가 많고, S3를 비롯한 AWS 서비스와 Travis CI를 연동하게 되면 아키텍처는 아래와 같아진다.

1. Travis CI와 S3를 연동해보자.

굳이 S3의 연동이 필요한 이유는 Jar 파일을 전달하기 위해서이다.

실제 배포는 CodeDeploy로 이뤄지지만, 배포를 하는 CodeDeploy는 저장 기능이 없다.

따라서 Travis CI가 빌드한 결과물을 CodeDeploy가 가져갈 수 있도록 보관할 수 있는 공간이 필요한데, 이때 AWS S3를 주로 사용한다.

CodeDeploy에서도 빌드를 할 수 있다. 그럼에도 빌드와 배포를 분리하는 이유는 단순하다.

빌드와 배포가 분리되어 있으면, 장애가 발생할 때 예전에 빌드되어 만들어진 Jar 파일을 재사용하면 되지만, CodeDeploy가 모든 것을 하게 되면 항상 빌드를 하기 때문에 확장성이 떨어지게 된다.

따라서 배포와 빌드는 분리할 필요가 있다.

일반적으로 AWS 서비스에는 외부 서비스가 접근할 수없다.

따라서 접근 가능한 권한을 가진 Key를 생성해서 사용해야 하는데, AWS에서는 이러한 인증과 관련된 기능을 제공하는 서비스로 IAM(Identify and Access Management)가 있다.

IAM은 AWS에서 제공하는 서비스의 접근 방식과 권한을 관리한다.

따라서 이 IAM을 통해 Travis CI가 AWS의 S3와 CodeDeploy에 접근할 수 있도록 해보자.

 

IAM에서 발급받은 키를 Travis에서 등록해주면 된다.

 

728x90