Code Series
- AWS에서 Developer Tools로 분류되어 있는 CodeCommit, CodeBuild, CodeDeploy, Codepipeline을 통칭하는 단어
- CI/CD를 단계적으로 수행할 수 있도록 적용 가능
CodeCommit
- repository를 담당하고 있는 서비스
- AWS에서 제공하는 완전 관리형 개발자 도구로, 안전하고 확장 가능한 git 리포지토리 호스팅 서비스
- 개발팀은 CodeCommit을 사용하여 소스 코드, 문서, 구성 파일 등의 버전 관리를 수행하고 협업 가능
CodeBuild
- Build를 담당하는 서비스
- Codecommit, S3, Github 등의 Repository로 부터 resource를 가져와서 buildspec(yml)으로 정의된 절차대로 build를 진행
- build는 별도로 구성된 docker에서 실행되며 docker에 대한 구성은 어느 정도 커스텀이 가능
- 이 docker가 실행될 VPC와 Subnet, Security group에 대해서도 지정이 가능
- CodeBuild를 사용하면 소스 코드를 컴파일하고 테스트하며, 배포 가능한 애플리케이션 빌드를 자동화 가능
CodeDeploy
- 애플리케이션의 배포를 자동화하기 위한 서비스
- 소프트웨어 배포 프로세스를 자동화하여 빠르고 안정적인 애플리케이션 업데이트를 가능
- Application과 Deployment groups으로 구성
- Application은 배포하고자 하는 대상을 의미하고 다수의 Deployment group을 가질 수 있음.
- Deployment group은 Deploy 대상이 되어 EC2/On-premises, AWS Lambda, AWS ECS로 총 3가지 유형이며 유형별로 필요한 IAM policy와 config 파일이 달라질 수 있음.
CodeDeploy 작동 방식
1. S3의 특정 revision 아카이브 파일을 EC2인스턴스로 가져온다.
2. 아카이브 파일의 압축을 푼다.
3. Deploy Agent는 압축을 푼 소스에서 AppSpec.yml에 명세된 지시사항을 처리한다.
3-1. WAS를 정지 시킨다.
3-2 소스의 내용을 WAS의 폴더로 복사
3-3 WAS를 시작