November 25, 2021
AWS 배포에 이어 배포 자동화를 할 때 사용한 기능인 CodePipeline에 대해 알아보겠습니다.
일부분 제가 이해한 대로 작성하였습니다. 정확하지 않을 수 있습니다.
배포 자동화
란 한 번의 클릭 혹은 명령어 입력을 통해 전체 배포 과정을 자동으로 진행하는 것
을 뜻합니다.
제 프로젝트의 경우를 예시로 들어 보겠습니다.
배포 자동화를 하지 않는다면 새로운 변경 사항으로 인해 배포를 다시 진행하고 싶을 때마다
프론트엔드 배포 시에는 매번 npm run build 명령어를 통해 빌드 파일을 생성하고, 그것을 S3 버킷에 업로드해야 할 것입니다.
백엔드 배포 시에는 매번 터미널에서 ssh로 EC2 인스턴스에 접속하고, 실행하고 있던 서버를 중단하고, 변경된 파일을 github에서 다시 내려받은 다음 다시 실행시켜야 할 것입니다.
이 과정을 배포 테스트 과정 중 또는 작은 변경 사항으로 인해 배포를 다시 해야 할 때 수행하기에는 너무나 귀찮습니다. 그리고 그 과정 중 실수가 발생할 수도 있습니다. 그렇기 때문에 배포 자동화가 필요합니다.
배포에서 파이프라인
이란 용어는 소스 코드의 관리부터 실제 서비스로의 배포 과정을 연결하는 구조
를 뜻합니다. 파이프라인은 전체 배포 과정을 여러 단계로 분리합니다. 각 단계는 파이프라인 안에서 순차적으로 실행되며, 단계마다 주어진 작업을 수행
합니다.
파이프라인을 여러 단계로 분리할 때, 대표적으로 세 가지 단계가 존재합니다.
파이프라인의 단계는 상황과 필요에 따라 더 세분화되거나 간소화될 수 있습니다. 그 예로 제 프로젝트의 백엔드 배포 시에는 Build 단계를 포함하지 않습니다.
Source 단계
를 구성할 때 CodeCommit 서비스를 이용
할 수 있습니다.
CodeCommit은 Github
과 유사한 서비스를 제공하는 버전 관리 도구입니다. Github에 비해 보안과 관련된 기능에 강점을 가집니다.
제 프로젝트의 프론트엔드, 백엔드 배포 시 Github을 이용하였습니다.
Build 단계
에서는 Codebuild 서비스를 이용
합니다.
CodeBuild 서비스를 통해 유닛 테스트, 컴파일, 빌드와 같은 빌드 단계에서 필수적으로 실행되어야 할 작업을 명령어를 통해 실행할 수 있습니다.
제 프로젝트의 프론트엔드 배포 시 CodeBuild를 이용하였습니다.
Deploy 단계
를 구성할 때는 기본적으로 다양한 서비스를 이용
할 수 있습니다.
CodeDeploy 서비스를 이용하면 실행되고 있는 서버 애플리케이션에 실시간으로 변경 사항을 전달할 수 있습니다. 또한 S3 서비스를 통해 S3 버킷을 통해 업로드된 정적 웹 사이트에 변경 사항을 실시간으로 전달하고 반영할 수 있습니다.
제 프로젝트의 백엔드 배포 시 CodeDeploy를, 프론트엔드 배포 시 S3를 이용하였습니다.