- 효율적으로 서버에 코드 배포 - 높은 확장성 및 신뢰성 제공 - 애플리케이션에 상관 없으며, Windows, Linux, EC2, On-Premise 등 지원 - S3, CodeCommit, CodePipeline, Git, ELB, Auto-Scaling 등과 통합
프리티어(Free Tier)
- EC2, Lambda에서 사용하는 경우 추가 비용 없음 - On-Premise에 Agent 설치 사용 시 업데이트당 $0.02 비용 지불
CodeDeploy의 특징
자동화된 배포
서비스 가동 중지 시간 최소화
배포 서비스에 대한 모니터링
손쉬운 서비스 확장
CodeDeploy의 In-Place 배포
인플레이스(In-Place) 배포는 배포 그룹 각 인스턴스의 애플리케이션에 대해 중지를 수행하고, 애플리케이션 Revision의 설치를 진행한 후 유효성 검사를 수행하여 이상 유무를 확인한다.
로드 밸런서를 사용하여 배포를 진행하는 경우, 배포 대상인 인스턴스를 로드 밸런스 서비스에서 제외한 후 배포를 수행하며, 테스트를 모두 완료하고 로드밸런스에 대상 인스턴스를 추가하여 서비스를 수행하는 방식이다.
또한 인플레이스 배포는 AWS Lambda에는 적용할 수 없다.
CodeDeploy의 Blue/Green 배포
블루/그린(Blue-Green) 배포는 애플리케이션을 기존 환경에서 대체 환경으로 트래픽을 라우팅하며, 점진적으로 트래픽을 전환한다.
최종적으로 배포된 서버가 이상이 없다면, 모든 트래픽에 대한 라우팅을 전환하고 기존 환경을 제거함으로써 배포를 완료한다.
블루/그린 배포는 On-Premise와 AWS EC2 / ECS / Lambda 모두를 지원한다.
CodeDeploy의 App Spec
AppSpec 파일은 CodeDeploy가 배포를 관리하기 위해 사용하는 YAML 또는 JSON 형식의 파일이다.
EC2/On-Premise에 대한 배포 작업을 수행하는 경우, AppSpec 파일 참조를 통한 배포 Hook 작업을 수행하게 된다.
배포 Hook 작업은 배포 당 한 번 실행되며, 진행 중에 실행될 스크립트를 지정할 수 있다.
AppSpec을 활용한 배포 작업은 아래와 같은 프로세스로 수행된다.
Pre-Install: CodeDeploy에서 새로운 배포에 대해 인스턴스에 통보
ApplicationStop: 애플리케이션의 종료 및 설치된 패키지 제거 작업 수행, 로드밸런스 등록 제거 및 서버 중지 작업 수행
Downloadbundle: CodeDeploy Agent가 App Spec 다운로드 후 OS별 임시 폴더에 저장
BeforeInstall: 파일 암호 해독 및 현재 버전 백업 만들기 등 사전 설치 작업 수행, 기존 버전 제거 및 Dependencies 설치
Install: 임시 폴더에 저장된 App Spec을 최종 폴더에 저장
AfterInstall: 애플리케이션 구성 또는 파일 권한 변경 등의 작업 수행
ApplicationStart: 애플리케이션의 시작 및 로드밸런스 등록 작업 수행, 서버 시작 작업 수행