[2] AWS CI/CD 파이프라인
이번 절에서는 AWS에서 제공하는 CI/CD 서비스들에 대해서 알아보겠습니다.
CodePipeline
CodePipeline은 AWS에서 제공하는 CI/CD를 위한 서비스로 여러 개의 단계Stage로 구성되어 있습니다. 또한, AWS에서 제공하는 CI/CD 관련 도구들과 외부 서비스로 하나의 전체 파이프라인을 구성합니다.
- 소스(Source) 단계 : Github, Gitlab과 같은 AWS 외부의 소스 저장소를 사용할 수 있지만 AWS 자체 서비스인 CodeCommit을 사용할 수도 있습니다. 해당 단계에서는 원하는 브랜치 또는 커밋의 소스 코드를 가져옵니다.
- 빌드(Build) 및 테스트(Test) 단계 : 소스 단계에서 가져온 소스 코드를 Codebuild 서비스를 사용해 빌드하고 테스트합니다. 이때, 빌드는 바이너리 파일을 만드는 것뿐만 아니라 Docker 이미지를 만드는 것도 가능합니다.
- 배포(Deploy) 단계 : 빌드 단계에서 만들어진 바이너리 파일이나 Docker 이미지를 배포합니다. 배포할 수 있는 대상은 다양한데 S3, Lambda, Elastic Beanstalk, ECS, EKS 등 다양한 AWS 서비스를 사용할 수 있습니다.
Codebuild
Codebuild는 AWS에서 제공하는 빌드와 테스트를 위한 서비스입니다. 자바, 파이썬 등 프로그래밍 언어를 설치해 사용할 수도 있지만 일반적으로는 도커 컨테이너를 사용해 테스트부터 빌드를 모두 진행합니다. 빌드 환경을 도커 로 구성할 때는 도커 이미지를 미리 준비해 두어야 합니다.
CodeDeploy
CodeDeploy는 빌드 결과물을 다양한 환경에 자동으로 배포하고, 배포 전략을 통해 안전하고 효율적인 배포를 지원하는 AWS 서비스입니다. CodeBuild에서 빌드된 결과물을 CodeDeploy에 연결하여 자동으로 배포할 수 있으며, Blue/Green 배포, Canary 배포 등 다양한 배포 전략을 통해 새로운 버전의 애플리케이션을 점진적으로 배포하고 문제 발생 시 빠르게 롤백할 수 있습니다. 또한, EC2 인스턴스, ECS, Lambda 등 다양한 환경에 배포를 지원하며, 배포 상태를 실시간으로 모니터링하여 문제 발생 시 빠르게 대응할 수 있습니다.