1 AWS CodePipeline 개요
- AWS CodePipeline은 소프트웨어 릴리스 프로세스를 자동화하는 완전관리형 지속적 통합 및 지속적 배포(CI/CD) 서비스입니다.
- 이 강력한 도구를 사용하면 애플리케이션과 인프라 업데이트를 빠르고 안정적으로 배포할 수 있습니다.
- 이 글에서는 AWS CodePipeline의 주요 특징, 작동 방식, 그리고 이를 효과적으로 활용하는 방법에 대해 알아보겠습니다.
- CodePipeline은 코드 변경이 발생할 때마다 빌드, 테스트, 배포 단계를 자동으로 실행합니다.
- 이를 통 해 개발자는 새로운 기능이나 버그 수정을 신속하게 프로덕션 환경에 반영할 수 있습니다.
2 CodePipeline의 주요 특징
2.1 완전관리형 서비스
- AWS가 인프라를 관리하므로, 사용자는 파이프라인 로직에만 집중할 수 있습니다.
- 확장성과 고가용성이 보장됩니다.
2.2 유연한 워크플로우
- 다양한 소스 제공자, 빌드 도구, 배포 대상을 지원합니다.
- 사용자 정의 작업을 통해 파이프라인을 확장할 수 있습니다.
2.3 시각화 및 모니터링
- 파이프라인의 각 단계를 시각적으로 확인할 수 있습니다.
- 실시간으로 파이프라인 상태를 모니터링할 수 있습니다.
2.4 통합 및 확장성
- 다른 AWS 서비스와 쉽게 통합됩니다.
- 서드파티 도구와의 연동도 지원합니다.
3 CodePipeline 작동 방식
- CodePipeline은 CI/CD 워크플로우를 시각적으로 구성하고 관리할 수 있는 도구입니다.
- 다양한 AWS 서비스 및 서드파티 도구와 통합되어 유연한 파이프라인을 구성할 수 있습니다.
3.1 파이프라인 구성 요소
- CodePipeline은 다음과 같은 주요 구성 요소로 이루어집니다
- 소스 단계:
- 지원 서비스: CodeCommit, ECR, S3, Bitbucket, GitHub
- 역할: 코드 변경을 감지합니다.
- 빌드 단계:
- 지원 서비스: CodeBuild, Jenkins, CloudBees, TeamCity
- 역할: 코드를 컴파일하고 패키징합니다.
- 테스트 단계:
- 지원 서비스: CodeBuild, AWS Device Farm, 기타 서드파티 도구
- 역할: 자동화된 테스트를 실행합니다.
- 배포 단계:
- 지원 서비스: CodeDeploy, Elastic Beanstalk, CloudFormation, ECS, S3
- 역할: 애플리케이션을 프 로덕션 환경에 배포합니다.
- 호출 단계:
- 지원 서비스: Lambda, Step Functions
- 역할: 추가적인 로직이나 워크플로우를 실행합니다.
3.2 파이프라인 구조
- 파이프라인은 여러 단계(stage)로 구성됩니다.
- 각 단계는 순차적 작업 및/또는 병렬 작업을 포함할 수 있습니다.
- 일반적인 파이프라인 구조 예: 빌드 → 테스트 → 배포 → 부하 테스트 → ...
- 필요한 경우 특정 단계에서 수동 승인 과정을 정의할 수 있습니다.
3.3 파이프라인 실행 흐름
- 소스 단계에서 코드 변경을 감지하면 파이프라인이 시작됩니다.
- 각 단계는 정의된 순서대로 실행되며, 이전 단계의 출력을 다음 단계의 입력으로 사용합니다.
- 병렬 작업이 정의된 경우 동시에 실행됩니다.
- 수동 승인이 필요한 단계에서는 승인될 때까지 파이프라인이 대기합니다.
- 모든 단계가 성공적으로 완료되면 파이프라인 실행이 종료됩니다.
4 CodePipeline 구성 예시
pipeline:
name: MyAppPipeline
stages:
- name: Source
actions:
- name: SourceAction
actionType: Source
provider: GitHub
outputArtifacts:
- name: SourceOutput
- name: Build
actions:
- name: BuildAction
actionType: Build
provider: CodeBuild
inputArtifacts:
- name: SourceOutput
outputArtifacts:
- name: BuildOutput
- name: Deploy
actions:
- name: DeployAction
actionType: Deploy
provider: ECS
inputArtifacts:
- name: BuildOutput
- 이 예시에서는 GitHub에서 소스 코드를 가져와 CodeBuild로 빌드한 후, ECS에 배포하는 파이프라인을 정의하고 있습니다.
5 CodePipeline 모니터링 및 알림 설정
5.1 이벤트 기반 모니터링
CodePipeline은 다양한 이벤트를 생성하며, 이를 모니터링하고 대응하는 방법이 있습니다:
- Amazon EventBridge (CloudWatch Events)
- 파이프라인 상태 변경을 실시간으로 감지
- 세밀한 이벤트 필터링 지원
- 다양한 대상 서비스로 이벤트 라우팅 가능
- AWS CloudTrail
- API 수준의 활동 로깅
- 감사 및 규정 준수용
- 장기 보관이 필요한 이벤트 추적
- Amazon CloudWatch
- 메트릭스 기반 모니터링
- 대시보드 생성
- 알림 설정
5.2 실시간 알림 구성
파이프라인 상태 변경에 대한 실시간 알림을 설정하는 아키텍처:
- EventBridge 규칙 생성
- 소스: CodePipeline
- 이벤트 패턴: Pipeline Execution State Change
- 대상: SNS 토픽
- SNS 토픽 설정
- 메시지 형식 정의
- 구독자 설정
- 접근 정책 구성
- Lambda 함수 통합
- SNS 구독 설정
- 외부 웹훅 호출 로직 구현
- 오류 처리 및 재시도 로직
정보
EventBridge → SNS → Lambda 패턴은 확장성이 높고 안정적인 이벤트 처리를 제공합니다.