[Section 4] 배포 자동화 - AWS Pipeline

Kim·2022년 12월 7일
0

Boot Camp

목록 보기
62/64

배포 자동화

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

🤔 배포 자동화가 필요한 이유?

  • 시간 절약
  • 휴먼 에러(Human Error) 방지
    • 사람이 수동적으로 배포 과정을 진행하는 중에 생기는 실수

배포 자동화 파이프라인

⚙️ 파이프라인

  • 소스 코드의 관리부터 실제 서비스로의 배포 과정을 연결하는 구조
  • 전체 배포 과정을 여러 단계(Stages)로 분리
    • 각 단계는 파이프라인 안에서 순차적으로 실행
    • 단계마다 주어진 작업(Actions)들을 수행
  1. Source 단계
  • 원격 저장소에 관리되고 있는 소스 코드에 변경 사항이 일어날 경우, 이를 감지하고 다음 단계로 전달하는 작업을 수행
  1. Build 단계
  • Source 단계에서 전달받은 코드를 컴파일, 빌드, 테스트하여 가공
  • Build 단계를 거쳐 생성된 결과물을 다음 단계로 전달하는 작업을 수행
  1. Deploy 단계
  • Build 단계로부터 전달받은 결과물을 실제 서비스에 반영하는 작업을 수행

⚠️ 파이프라인의 단계는 상황과 필요에 따라 더 세분화되거나 간소화될 수 있다.


AWS 개발자 도구

  • 개발자 도구 섹션에서 제공하는 서비스를 활용하여 배포 자동화 파이프라인을 구축 가능

CodeCommit

  • Source 단계를 구성할 때 CodeCommit 서비스를 이용
  • GitHub과 유사한 서비스를 제공하는 버전 관리 도구

💡 CodeCommit과 GitHub의 차이점
☑️ CodeCommit

  • 보안 관련 기능에 강점
    • 소스 코드의 유출이 크게 작용하는 기업에서는 매우 중요한 요소
  • 과금 가능성
    • 프리티어 한계 이상 사용할 경우, 요금이 부과될 수 있음

☑️ GitHub

  • 사이드 프로젝트나 가볍게 작성한 소스 코드를 저장하는 경우에 효과적
    • CodeCommit 서비스는 과금 가능성이 존재

CodeBuild

  • Build 단계에서는 CodeBuild 서비스를 이용
  • 유닛 테스트, 컴파일, 빌드와 같은 빌드 단계에서 필수적으로 실행되어야 할 작업들을 명령어를 통해 실행 가능

CodeDeploy

  • Deploy 단계를 구성할 때는 기본적으로 다양한 서비스 이용 가능
  • 실행되고 있는 서버 애플리케이션에 실시간으로 변경 사항 전달 가능
  • S3 서비스를 통해 S3 버킷을 통해 업로드된 정적 웹 사이트에 변경 사항을 실시간으로 전달하고 반영 가능

CodePipeline

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

⚠️ AWS 프리티어 계정 사용 시 한 계정에 두 개 이상의 파이프라인을 생성하면 추가 요금이 부여될 수 있다!


AWS Pipeline

[이미지 출처] urbanbase

  1. CodePipeline을 이용하여 각 단계를 연결하는 파이프라인 구축

  2. Source 단계
    ➡️ 소스 코드가 저장된 GitHub 리포지토리를 연결
    코드 수정 후, push 하면 build 자동 실행

  3. Build 단계
    ➡️ CodeBuild 서비스를 이용하여 빌드 후, EC2 인스턴스로 빌드된 파일 전달
    빌드된 결과물은 객체 스토리지인 S3 버킷에 저장됨

  4. Deploy 단계
    ➡️ CodeDeploy 서비스를 이용하여 EC2 인스턴스에 변경 사항을 실시간으로 반영
    AWS IAM 계정을 key로 사용

💡 GitHub Repository에 push ➜ AWS 변경 감지 ➜ pull ➜ build ➜ ec2 delivery ➜ sh로 스크립트 실행 ➜ ec2에서 서버 실행

0개의 댓글