1. AWS CodeDeploy 란?

Amazon EC2, AWS Fargate, AWS Lambda 및 온프레미스 서버와 같은 다양한 컴퓨팅 서비스에 대한 소프트웨어 배포를 자동화하는 완전관리형 배포 서비스

배포가 자동화되기때문에 안정적이고 빠르게 배포할 수 있으며, 배포하는 동안에 어플리케이션 중지시간을 최소화 시킬 수 있다는 장점이있다. AWS 콘솔이나 CLI 을 통해서 배포할 수 있으며 배포상태도 확인이 가능하다.

 

2. CodeDepoly 를 이용한 EC2 배포

 1. 배포를 위한 새로운 애플리케이션을 만들고 고유 이름과 애플리케이션에 사용할 컴퓨팅 플랫폼을 지정한다. 배포하고자 하는 애플리케이션이 고유 이름을 이용해 배포 그룹, 배포 구성 및 애플리케이션 개정 등을 참조하도록 설정한다.

 2. 애플리케이션 개정을 배포하려는 인스턴스 및 배포 유형을 지정하여 deployment group 을 설정한다.

   - in-place 배포 : 배포 그룹의 각 인스턴스에 있는 애플리케이션이 중지되고 최신 애플리케이션 수정 버전이 설치 및 시작된다.

   - blue/green 배포 : 애플리케이션의 원래 환경에서 대체 환경으로 트래픽을 다시 라우팅된다.

배포방법 in-place blue/green
EC2 Y Y
On-premises Y Y
Lambda N Y
ECS N Y
 
 

 3. Codedeploy 콘솔이나 CLI 를 이용하여 배포 구성 이름, 각 배포 구성의 기준, 인스턴스 수, 배포 성공 및 실패 조건 등을 설정하고 확인한다.

 4. 애플리케이션 개정을 Amazon S3 또는 GitHub로 업로드한다.  배포를 위해서는 application specification file(AppSpec file)을 포함되어 있어야한다.

  AppSpec file은 appspec.yml 이라는 파일명이며, 해당 파일에는 배포스크립트 실행 시점, 파일을 복사할 위치 등 배포와 관련된 자세한 내용이 포함되어있다.

 5. 배포 그룹의 각 인스턴스에 CodeDeploy agent 가 설치되어있어야한다. agent를 이용해서 애플리케이션 개정을 Amazon S3 또는 GitHub에서 인스턴스로 복사한다. CodeDeploy agent는 개정의 번들을 해제하고, AppSpec file을 사용하여 지정한 위치로 파일을 복사하고, 배포 스크립트를 실행한다.

 6. CodeDeploy 모니터링을 이용해서 배포결과를 확인한다.

 7. 만약 배포가 잘못됐거나 수정사항이 있다면 개정된 소스 콘텐츠, 배포 스크립트, AppSpec file를 새 개정으로 다시 번들링한 다음 해당 개정을 Amazon S3 버킷 또는 GitHub 리포지토리로 업로드한다. 그런 다음 새 개정을 사용하여 동일한 배포 그룹으로 새로 배포를 실행하면 된다.