AWS codeDeploy
CodeDeploy
AWS codeDeploy는 Amazon EC2,Amazon ECS,AWS lambda 및 On-Premise 서버와 같은 다양한 컴퓨팅 서비스에 대해 소프트웨어 배포를 자동화하여 제공하는 완전 관리형 배포 서비스입니다.
AWS codeDeploy 는 지속적인 배포 Continuous Deploy를 지원하는 대표적인 CD 도구로써, AWS CodeDeploy를 사용하게 되면 새로운 기능 및 문제가 되는 코드에 대해 빠르고 신속하게 배포할 수 있습니다.
AWS CodeDeploy의 주요 기능과 기대 효과
첫 번째
AWS codeDeploy를 사용하면 AWS console 또는 AWS cli를 통해 배포를 시작하고, 배포 상태에 대한 추적을 수행할 수 있으며, 상세한 보고서를 통해 애플리케이션의 수정 버전이 언제 어디에 배포되었는지 확인할 수 있고, 푸시 알람을 통해 배포에 대한 라이브 업데이트를 받을 수 있습니다.
두 번째
AWS CodeDeploy를 사용하면 소프트웨어 배포 프로세스 진행 시 애플리케이션의 가용성을 최대화하면서, 다양한 배포 방식을 통해 가동 중지 시간을 최소화할 수 있습니다. 이는 변경 사항을 점진적으로 배포하고 구성 가능한 규칙에 따라 애플리케이션의 상태를 구성할 수 있으며, 진행 과정에서 오류를 발생하게 되면 손쉽게 소프트웨어의 배포를 중단하고 롤백을 실행할 수 있습니다
세 번째
배포 서비스에 대한 모니터링이 된다
(1.배포 기록의 추적 및 저장, 배포 그룹별 현재 배포된 버전, 변경된 기록 배포의 성공률 조회)
(2.애플리케이션을 여러 그룹으로 배포 가능, 배포 그룹은 서로 다른 구성 환경 사용)
네 번째
손쉬운 서비스의 확장이다. AWS CodeDeploy는 플랫폼, 아키텍처 및 언어의 구애받지 않고 모든 종류의 애플리케이션과 연동 가능합니다
(1.command-line 기반 또는 설치 기반 모델을 사용하여 배포 가능, 애플리케이션 배포를 위해 App.yaml 사용)
AWS codeDeploy를 사용하기 위한 주요 성분 요소
구분 | 내용 |
애플리케이션 | 배포할 응용 프로그램을 고유하게 식별하는 이름으로 AWS Deploy가 배포를 수행하며, 수정, 배포 구성, 배포 그룹의 올바른 참조를 위한 컨테이너 역할 수행 |
컴퓨팅 플랫폼 | AWS CodeDeploy가 애플리케이션을 배포하는 대상 플랫폼으로 EC2/On-premise 인스턴스나 AWS Lambda,AWS ECS를 말한다 |
애플리케이션 사양 파일 | 배포할 애플리케이션에 대한 정보를 지정하는 YAML 형식 또는 JSON 형식의 파일이거나, EC2/On-premise용 소스코드, 웹 페이지, 실행 파일 및 배포 스크립트 등과 같은 소스 콘텐츠 및 application specification file을 포함하는 아카이브 파일 |
배포 구성 | 배포 중 AWS CodeDeploy에서 사용하는 배포 규칙과 배포 성공 및 실패 조건 세트로 EC2/On-Premise 인스턴스의 최소 개수를 지정하거나, Lambda 함수 버전으로 특정 트래픽이 라우팅되는 방식(Canary,Linear,All-at-Once)지정 가능 |
배포 그룹 | 개별 인스턴스들의 세트로 배포 그룹에는 개별적으로 태그가 지정된 인스턴스 또는 Auto Scaling 그룹에 포함된 Amazon EC2 포함 |
배포 방식 | 배포를 수행한느 방식으로 실행 중 배포를 수행하는 인플레이스 배포와 대체 환경을 만들어 점진적인 배포를 수행하는 blue/green 배포 방식이 있다 |
서비스 역할 | AWS 리소스에 엑세스할 수 있는 권한을 지정하는 IAM 역할로 인스턴스,Auto Scaling, 로드밸런서의 작업 등을 수행하기 위한 권한 부여 |
IAM 프로파일 | Amazon EC2인스턴스에 연결하는 IAM 역할로 IAM 프로파일에는 애플리케이션이 저장되는 Amazon S3 버킷 또는 GitHub 리포지토리에 엑세스할 때 필요한 권한 포함 |
배포 방식에 대해 (인플레이스 배포)
인플레이스 배포입니다. 배포 그룹 각 인스턴스의 애플리케이션에 대해 중지를 수행하고 애플리케이션 수정 버전의 설치를 진행한 후 검사를 수행하여 이상 유무를 확인합니다. 로드 밸런서를 사용하여 배포를 진행하는 경우 배포 대상인 인스턴스를 로드 밸런스 서비스에서 제외한 후 배포를 수행하며, 테스트를 모두 완료하고 로드 밸런스에 대상 인스턴스를 추가하여 서비스를 수행하는 방식입니다.
1단계, 로컬 개발 머신에서 배포할 Revision을 만든 다음 AppSpecfile 을 추가합니다. Appspecfile은 CodeDeploy에 고유하며, CodeDeploy가 실행하려는 배포 작업을 정의합니다. 배포할 수 있는 컨텐츠 및 AppSpec file을 아카이브 파일로 번들링한 다음 Amazon S3 버킷 또는 Git 리포지토리로 업로드합니다. 이러한 아카이브 파일을 애플리케이션 개정이라고 합니다.
2단계, CodeDeploy에 배포에 관한 정보를 제공합니다. CodeDeploy에서는 Amazon EC2 인스턴스 세트를 배포 그룹이라고 합니다. 배포 그룹에서는 개별적으로 태그가 지정된 다른 서비스들도 포함이 됩니다
3단계, 각 인스턴스의 CodeDeploy에이전트가 버킷이나 리포지토리에서 대상 개정을 풀링하고 AppSpec file 지침을 따르면 콘텐츠가 인스턴스에 배포됩니다.