AWS CodePipeline은 소프트웨어 릴리즈 파이프라인을 자동화하는 완전 관리형 CI/CD 서비스입니다. 코드 변경이 감지되면 소스 가져오기 → 빌드 → 테스트 → 배포까지의 전 과정을 정의된 단계(Stage)에 따라 자동으로 실행합니다. GitHub, CodeCommit 등 소스 저장소와 연동하여 코드 푸시만으로 전체 배포 과정을 자동화할 수 있습니다.
CI/CD(Continuous Integration / Continuous Delivery): 코드 변경을 자동으로 빌드·테스트·배포하여 릴리즈 주기를 단축하는 개발 방법론.
CodePipeline은 여러 Stage로 구성되며, 각 Stage는 하나 이상의 Action을 포함합니다. Stage는 순서대로 실행되며, 이전 Stage가 성공해야 다음 Stage로 진행됩니다.
코드 저장소 (GitHub / CodeCommit)
|
| 코드 푸시 감지
v
+-------------------+
| Stage 1: Source | 소스 코드 가져오기
+-------------------+
|
v
+-------------------+
| Stage 2: Build | 컴파일, 테스트, 패키징 (CodeBuild)
+-------------------+
|
v
+-------------------+
| Stage 3: Deploy | 대상 환경에 배포 (CodeDeploy / ECS / S3 / ...)
+-------------------+
|
v
서비스 운영 중
소스 코드를 가져오는 단계입니다. GitHub, GitHub Enterprise, Bitbucket, AWS CodeCommit, S3 등을 소스로 연결할 수 있습니다. 특정 브랜치에 푸시가 발생하면 파이프라인이 자동으로 시작됩니다.
소스 코드를 컴파일하고, 단위 테스트를 실행하고, 배포 가능한 아티팩트(JAR, ZIP, Docker 이미지 등)를 생성하는 단계입니다. AWS CodeBuild를 액션으로 연결하여 처리합니다.
코드빌드(CodeBuild): 소스 코드를 컴파일·테스트·패키징하는 완전 관리형 빌드 서비스. buildspec.yml 파일로 빌드 명령을 정의합니다.
buildspec.yml 파일에 빌드 단계별 명령을 정의합니다.
# buildspec.yml
version: 0.2
phases:
install:
runtime-versions:
nodejs: 20
pre_build:
commands:
- npm install
build:
commands:
- npm run test
- npm run build
artifacts:
files:
- '**/*'
base-directory: dist
빌드된 아티팩트를 실제 운영 환경에 배포하는 단계입니다. 배포 대상에 따라 다양한 액션을 선택할 수 있습니다.
| 배포 대상 | 액션 |
|---|---|
| EC2 / 온프레미스 | AWS CodeDeploy |
| ECS | Amazon ECS (Blue/Green 배포 지원) |
| Lambda | AWS CloudFormation 또는 CodeDeploy |
| S3 (정적 웹사이트) | Amazon S3 |
| CloudFormation Stack | AWS CloudFormation |
CodeDeploy를 사용하면 EC2 인스턴스 그룹에 배포 전략(한 번에 모두 교체, 절반씩 교체, 블루/그린 등)을 세밀하게 제어할 수 있으며, 배포 실패 시 자동 롤백도 지원합니다.
Blue/Green 배포: 현재 운영 환경(Blue)과 동일한 새 환경(Green)을 준비한 뒤 트래픽을 전환하는 무중단 배포 전략.
Stage 사이에 수동 승인 단계를 삽입할 수 있습니다. 예를 들어 스테이징 배포 후 QA 담당자가 승인하면 프로덕션 배포가 시작되는 흐름을 구성할 수 있습니다.
Source → Build → Deploy(Staging) → [수동 승인] → Deploy(Production)
각 Stage 간에 파일을 전달할 때 S3 버킷을 아티팩트 저장소로 사용합니다. Source Stage가 코드를 S3에 저장하면 Build Stage가 이를 가져다 빌드하고, 결과물을 다시 S3에 저장하면 Deploy Stage가 이를 배포합니다.
CodePipeline은 GitHub Actions, Jenkins 같은 외부 CI/CD 도구와 비교했을 때 AWS 서비스와의 네이티브 통합이 강점입니다. IAM 기반 권한 관리, CloudWatch 기반 모니터링, CloudTrail 감사 이력 등 AWS 생태계 안에서 일관성 있게 운영할 수 있습니다.