[AWS] Code 시리즈 (Pipeline, Commit, Build, Deploy)

Code Pipeline 이란?

Continuous Delivery Service(지속적 전달 서비스)

AWS CodePipeline은 소프트웨어를 출시하는 데 필요한 단계를 모델링, 시각화 및 자동화할 수 있게 해주는 지속적 전달 서비스이다.

AWS CodePipeline을 사용하여 코드 빌드, 사전 프로덕션 환경으로의 배포, 애플리케이션 테스트 및 프로덕션으로 릴리스를 비롯한 전체 릴리스 프로세스를 모델링합니다. 그러면 AWS CodePipeline이 정의된 워크플로우에 따라 코드 변경이 있을 때마다 애플리케이션을 빌드, 테스트, 배포합니다. 파트너 도구 및 자체 사용자 지정 도구를 릴리스 프로세스 중 원하는 단계에 통합하여 포괄적이며 지속적 전달 솔루션을 형성할 수 있습니다.

AWS CodePipeline을 사용해야 하는 이유?

AWS CodePipeline을 사용하면 모든 새로운 변경 사항을 일관된 품질 검사 세트를 통해 실행하여 소프트웨어 업데이트의 속도와 품질을 높일 수 있다.


CodePipeline 사용 방법

  1. CodePipeline 서비스로 이동
  2. Create Pipeline 선택
  3. 파이프라인 이름, Service Role, Role Name, Artifcat Store 설정
  4. Source Provider에 github 주소 입력
  5. 로그인 및 레포지토리 선택
  6. 변경 감지 옵션 Github Webhook 과 AWS CodePipeline이 주기적으로 체크하게 하는 방법이 있다.
  7. Build Stage의 경우 스킵이 가능하다.
  8. Deploy Target(배포 대상)을 선택하고 리전, 배포 제공자, 환경 이름을 선택하고 파이프라인을 만든다.

*아티팩트란? 소프트웨어 개발 중에 생산되는 많은 유형의 부산물 중 하나 Ex)WAR 파일

Github 에서 코드 수정 (Push) 가 발생하면 Webhook을 통해서 AWS 에서 CodePipeline을 통해 배포가 된다.


비용

코드파이프라인 사용 비용은 매월 Active 활성된 파이프 라인별로 $1씩 청구된다. 첫 30일동안은 파이프라인이 무료로 제공된다.

활성 파이프라인이란 사용 기간이 30일 이상이며, 1개월간 사용하면서 코드를 1회 이상 변경한 파이프라인을 말합니다. 1개월간 사용하면서 새로운 코드 변경이 없는 파이프라인에 대해서는 요금이 청구되지 않습니다. 활성 파이프라인은 부분 월에 대해 요금이 비례 할당으로 계산되지 않습니다.

설정하는데 비용이 추가적으로 발생하지 않는다.

AWS CodeCommit

간단 요약 : AWS에서 제공하는 프라이빗 Git 레포지토리 기존 깃과 연동된다.

기능

commit, branch, merge, pull request를 지원하며 git을 통해 레포지토리를 사용할 수 있다. HTTPS, SSH를 이용한 파일 송수신이 가능하고, KMS를 이용해 저장 데이터를 자동으로 암호화 한다. IAM을 통해서 데이터 액세스 방법, 접근시기, 위치를 제어할 수 있으며 CloudTrail, CloudWatch를 통해서 모니터링하는데 도움이 된다. 레포지토리를 S3 및 Dynamo DB에 저장 되어 여러 시설에 중복 저장된다. 기본적으로 최대 1,000개의 레포지토리를 지원하고, 요청하면 무제한으로 생성할 수 있다. 당연히 코드와 바이너리 파일도 저장할 수 있다. Console, CLI, SDK를 사용하여 레포지토리 관리를 할 수 있다. 레포지토리에 영향을 주는 이벤트(PUSH, MERGE, PULL REQUEST)에 대해서 SNS 알림을 받을 수 있다. 또한 웹훅을 생성하거나, 레포지토리 이벤트의 응답으로 람다를 호출할 수 있다.

요금

매월 5명의 활성 사용자 까지 무료, 이후에 추가 사용자 1명당 매달 $1 프리티어는 무기한 적용된다.

AWS Code Build

소스 코드를 컴파일하는 단계부터 테스트 실행 후 소프트웨어 패키지를 개발하여 배포하는 단계까지 마칠 수 있는 완전관리형의 지속적 통합 서비스 Code Pipeline과 통합 가능, Github와도 연동이 가능하다.

특징 완전관리형 서비스

빌드서버를 설치, 업데이트 등 관리할 필요가 없다. KMS를 통한 아티팩트 암호화, 빌드 정보 모니터링 및 알림(CloudWatch & SNS)

비용

빌드를 완료할 때까지 걸리는 시간(분)을 기준으로 비용이 청구

AWS Code Deploy

플랫폼과 언어에 구애받지 않고, 소프트웨어 배포를 자동화하는 완전관리형 배포 서비스

특징 완전 자동화 배포, 인스턴스 가동중지 시간 최소화

오토스케일링 그룹과 통합하여 자동확장에 의한 인스턴스 생성시 자동 배포가 가능하다. 롤링 배포, 블루 그린 배포가 가능하다. 하나의 애플리케이션을 여러 배포 그룹에 배포할 수 있다. 중지 및 롤백이 가능하다.