AWS CodeDeploy는 여러 장점이 있지만, 크게 4가지 설명을 할 수 있을 것 같습니다.
1. 배포 진행 상황을 모니터링 할 수 있습니다.저는 인프라 초보이기 때문에 수행하는 과정에서 발생하는 많은 오류에 대한 로그가 필요했고, CodeDeploy에서 제공하는 console 이 큰 도움이 됐습니다. 이와 관련해 본문에서 설명하도록 하겠습니다.
2. (거의) 무료다!!우리는 EC2에서 CodeDeploy를 사용할 것이므로 배포를 하는데 추가 비용이 들지 않습니다. 다만 저희의 배포 과정에서는 하나의 파일을 S3에 업로드 하고 이에 따른 비용을 지불해야 하는데, 이와 관련한 약간의 비용이 나갈 수는 있겠네요 :)
3. 가동 중지 시간을 최소화 시킬 수 있습니다.공식 문서에 따르면blue / green 배포과정에서 거의 즉시 트래픽을 리다이렉션 시켜준다고 합니다. 즉, 새 애플리케이션 버전 변경으로 인한 중단을 최소화합니다. 자동 배포 과정에서 잠깐이나마 서비스가 죽는 것을 원하지 않는다면, CodeDeploy에서 blue / green 배포 설정을 해줄 수 있습니다.
4. 동시 배포를 할 수 있습니다. 하나 이상의 EC2 컴퓨팅 플랫폼을 사용하는 애플리케이션에 배포가 필요할 경우, CodeDeploy를 사용하면 큰 효과를 보실 것으로 예상됩니다!
Blue-Green?
Blue-Green deployment는 배포 전략 중 하나입니다. 라이브 환경을Blue 라고 지칭하며 새로운 환경은Green이라고 지칭합니다. 새로운 배포는 Green 환경에서 수행되며, 에러 검출이 되지 않을 경우 traffic을 Green 으로 옮깁니다.
가장 큰 장점은 downtime이 없다는 것입니다!! 배포 중에도 애플리케이션이 실행중이므로 사용자는 배포가 진행되었다는 사실을 거의 알 수 없습니다.
설명은 여기까지하고, 자동 배포를 위해 작업했던 순서에 대해 설명하겠습니다 :)
작업 순서
수행할 작업의 순서는 아래와 같습니다.
1. CodeDeploy 사용을 위한 EC2 IAM 인스턴스 프로파일 생성
2.EC2에CodeDeploy agent 설치
3. CodeDeploy 애플리케이션 생성
4. Github Action workflow 를 위한 yml 파일 생성
5. CodeDeploy Action을 위한 appspec.yml, script 파일 추가
1. CodeDeploy 사용을 위한 EC2 IAM 인스턴스 프로파일 생성
우리는 배포 대상이 될 EC2 인스턴스가 CodeDeploy를 사용할 수 있도록 권한을 부여해야 합니다!!
우선, AWS IAM에 들어오셔서 역할 만들기를 클릭합니다.
EC2를 클릭하시고 S3, CodeDeploy 모든 권한을 넣어주고, 네이밍을 붙여 역할을 만들어줍니다.
우리는 배포 코드를 압축해서 s3에 업로드하고, 해당 빌드 파일을 CodeDeploy를 통해 EC2로 배포할 것이기 때문에 두 권한을 부여하는 것입니다. 자세한 설명은 아래에서 하도록 할게요!
이제 만든 IAM Role을 우리의 인스턴스에 붙여줘야 합니다. 인스턴스 목록에서 체크하시고 작업, 보안 탭을 들어가시면 IAM 역할을 수정해주시면 우리의 EC2는 S3, CodeDeploy 에 대한 접근 권한을 부여받게 됩니다.
2. EC2 에 CodeDeploy agent 설치
배포를 원하는 인스턴스에 CodeDeploy agent를 설치하여 해당 인스턴스를 배포에서 사용할 수 있도록 설정해야 합니다!!
해당 명령어를 입력해주세요.
**Codedeploy agent 설치
**1. ruby 설치:** Codedeploy agent는 ruby로 작성되었으므로 이를 설치한다.
$ sudo apt-get install ruby // (ubuntu 16.04)
**2. wget 설치** (agent 설치파일을 들고오기 위해 쓰인다)
$ sudo apt-get install wget
**3. Codedeploy Agent 설치**
*#* ubuntu 계정을 사용한다면 /home/ubuntu로 가면 된다.*
$ cd /home/jane
***#* 설치파일 **다운로드 *(Seoul region)***
$ wget [<https://aws-codedeploy-ap-northeast-2.s3.ap-northeast-2.amazonaws.com/latest/install>](<https://aws-codedeploy-ap-northeast-2.s3.ap-northeast-2.amazonaws.com/latest/install>)**
wget <https://aws=codedeploy-ap-northeast-2.s3.ap-northeast-2.amazonaws.com/latest/install>
****# 실행권한 추가 및 설치**
$ chmod +x ./install
$ sudo ./install auto
하다가 막힌다면 아래 aws docs를 참고한다.
[<https://docs.aws.amazon.com/ko_kr/codedeploy/latest/userguide/codedeploy-agent-operations-install-ubuntu.html>](<https://docs.aws.amazon.com/ko_kr/codedeploy/latest/userguide/codedeploy-agent-operations-install-ubuntu.html>)**