개인의 기록
  • 소개
  • 프로젝트
  • 글
  • 링크

© 2026 newgirok

← 글 목록

CodePipeline — CI/CD 자동화

2026년 4월 7일
AWSCodePipelineCI/CD자동화

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
서비스 운영 중

Source Stage

소스 코드를 가져오는 단계입니다. GitHub, GitHub Enterprise, Bitbucket, AWS CodeCommit, S3 등을 소스로 연결할 수 있습니다. 특정 브랜치에 푸시가 발생하면 파이프라인이 자동으로 시작됩니다.

Build Stage (CodeBuild 연동)

소스 코드를 컴파일하고, 단위 테스트를 실행하고, 배포 가능한 아티팩트(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

Deploy Stage (CodeDeploy 연동)

빌드된 아티팩트를 실제 운영 환경에 배포하는 단계입니다. 배포 대상에 따라 다양한 액션을 선택할 수 있습니다.

배포 대상액션
EC2 / 온프레미스AWS CodeDeploy
ECSAmazon ECS (Blue/Green 배포 지원)
LambdaAWS CloudFormation 또는 CodeDeploy
S3 (정적 웹사이트)Amazon S3
CloudFormation StackAWS CloudFormation

CodeDeploy를 사용하면 EC2 인스턴스 그룹에 배포 전략(한 번에 모두 교체, 절반씩 교체, 블루/그린 등)을 세밀하게 제어할 수 있으며, 배포 실패 시 자동 롤백도 지원합니다.

Blue/Green 배포: 현재 운영 환경(Blue)과 동일한 새 환경(Green)을 준비한 뒤 트래픽을 전환하는 무중단 배포 전략.

승인(Approval) 액션

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 생태계 안에서 일관성 있게 운영할 수 있습니다.

← 이전 글Secrets Manager — 비밀 값 안전하게 저장
다음 글 →X-Ray — 분산 트레이싱