IT STUDY LOG

[지속적 배포] 01. 배포 자동화 본문

devops bootcamp 4/클라우드 서비스 운영

[지속적 배포] 01. 배포 자동화

roheerumi 2023. 4. 24. 06:43

# 학습 목표

  • 배포 자동화의 정의와 이점에 대해 설명할 수 있다.
  • 배포 파이프라인이 무엇인지 정의할 수 있다.
  • 파이프라인을 구성하는 단계(Stages)와 작업(Actions)에 대해 설명할 수 있다.
  • AWS 개발자 도구를 활용하여 파이프라인을 구축할 수 있다.
  • 배포 자동화 파이프라인 구축 과정에서 문제가 발생할 경우, log 파일과 공식 문서를 통해 해결할 수 있다.
  • 다양한 배포 전략 (롤링, 블루/그린, 카나리)을 이해할 수 있다.

 


# 학습 내용

1.  배포 자동화

배포 자동화란?

- 배포 자동화란 한 번의 클릭 혹은 명령어 입력을 통해 전체 배포 과정을 자동으로 진행하는 것

 

배포 자동화가 필요한 이유

시간 단축

- 수동적이고 반복적인 배포 과정을 자동화함으로써 시간이 절약됨

 

휴먼 에러(Human Error) 방지

 - 휴먼 에러란 사람이 수동적으로 배포 과정을 진행하는 중에 생기는 실수 (ex. 휴먼 에러의 예 : 그전에 했던 배포 과정과 비교하여 특정 과정을 생략하거나 다르게 진행하여 오류가 발생하는 것)

- 배포 자동화를 통해 전체 배포 과정을 매번 일관되게 진행하는 구조를 설계하여 휴먼 에러 발생 가능성 감소

 

배포 자동화 파이프라인

출처 : 코드스테이츠 데브옵스 부트캠프 과정

- 배포에서 파이프라인(Pipeline)이란 용어는 소스 코드의 관리부터 실제 서비스로의 배포 과정을 연결하는 구조

- 파이프라인은 전체 배포 과정을 여러 단계(Stages)로 분리 각 단계는 파이프라인 안에서 순차적으로 실행되며, 단계마다 주어진 작업(Actions)을 수행

 

파이프라인 분리 시 대표적으로 쓰이는 세 가지 단계와 수행하는 작업

Source 단계

- Source 단계에서는 원격 저장소에 관리되고 있는 소스 코드에 변경 사항이 일어날 경우, 이를 감지하고 다음 단계로 전달하는 작업을 수행

Build 단계

- Build 단계에서는 Source 단계에서 전달받은 코드를 컴파일, 빌드, 테스트하여 가공 또한 Build 단계를 거쳐 생성된 결과물을 다음 단계로 전달하는 작업을 수행

Deploy 단계

- Deploy 단계에서는 Build 단계로부터 전달받은 결과물을 실제 서비스에 반영하는 작업을 수행

※ 주의 : 파이프라인의 단계는 상황과 필요에 따라 더 세분화되거나 간소화될 수 있음. (ex. build 단계를 미포함하는 등, 배포 자동화 파이프라인의 단계를 간소화한 예시로 볼 수 있음)

 

AWS 개발자 도구

- AWS에는 개발자 도구 섹션이 존재하며 개발자 도구 섹션에서 제공하는 서비스를 활용하여 배포 자동화 파이프라인을 구축할 수 있음

출처 : 코드스테이츠 데브옵스 부트캠프 과정

CodeCommit

- CodeCommit는 Source 단계를 구성할 때 이용하는 AWS 

- CodeCommit은 GitHub과 유사한 서비스를 제공하는 버전 관리 도구

 

CodeCommit과 GitHub의 차이점

- GitHub과 비교했을 때 CodeCommit 서비스는 보안과 관련된 기능에 강점 (소스 코드의 유출이 크게 작용하는 기업에서는 매우 중요한 요소)

- 다만 CodeCommit을 사용할 때는 과금 가능성을 고려해야 프리티어 한계 이상으로 사용할 시 사용 요금이 부과될 수도 있음

- 사이드 프로젝트나 가볍게 작성한 소스 코드를 저장해야 할 경우에는 GitHub을 이용하는 것이 효과적이라고 볼 수 있음

 

CodeBuild

- Build 단계에서는 CodeBuild 서비스를 이용

- CodeBuild 서비스를 통해 유닛 테스트, 컴파일, 빌드와 같은 빌드 단계에서 필수적으로 실행되어야 할 작업을 명령어를 통해 실행할 수 있음

 

CodeDeploy

- Deploy 단계를 구성할 때는 기본적으로 다양한 서비스를 이용할 수 있음 (ex. 이번 실습에서는 CodeDeploy와 S3 서비스를 이용할 예정)

- CodeDeploy 서비스를 이용하면 실행되고 있는 서버 애플리케이션에 실시간으로 변경 사항을 전달할 수 있음

- S3 서비스를 통해 S3 버킷을 통해 업로드된 정적 웹 사이트에 변경 사항을 실시간으로 전달하고 반영할 수 있음

 

CodePipeline

- 각 단계를 연결하는 파이프라인을 구축할 때 CodePipeline 서비스를 이용

 

Question

AWS 개발자 도구 섹션에 존재하는 각 서비스의 프리티어 정책과 과금 정책

 

개발자 도구 - AWS에서의 구축을 위한 SDK 및 프로그래밍 도구 키트

닫기 피드백을 제공해 주셔서 감사합니다. 피드백은 AWS 경험을 개선하는 데 도움이 됩니다. 피드백에 대한 자세한 정보를 제공하려면 아래의 피드백 단추를 클릭하세요.

aws.amazon.com

 

buildspec.yml 파일

- CodeBuild 서비스는 사용자가 작성한 buildspec.yml 파일을 참조하여 작업을 수행

- 관련 내용을 다루고 있는 AWS 공식 문서를 참조하여 buildspec.yml 파일 구조와 생명 주기에 대해 학습

 

에 대한 빌드 사양 참조 CodeBuild - AWS CodeBuild

buildspec 선언은 올바른 YAML이어야 하므로 buildspec 선언의 공백 설정이 중요합니다. buildspec 선언의 공백 수가 잘못되면 빌드가 즉시 실패할 수 있습니다. YAML 유효성 검사기를 사용하여 buildspec 선

docs.aws.amazon.com

 

appspec.yml

- CodeDeploy 서비스는 사용자가 작성한 appspec.yml 파일을 참조하여 작업을 수행

- 관련 내용을 다루고 있는 AWS 공식 문서를 참조하며 appspec.yml 파일의 구조와 생명 주기에 대해서 학습 

 

CodeDeploy AppSpec 파일 참조 - AWS CodeDeploy

tar 및 압축된 tar 아카이브 파일 형식(.tar 및 .tar.gz)은 Windows Server 인스턴스에서 지원되지 않습니다.

docs.aws.amazon.com

 

Comments