한번의 클릭 혹은 명령어 입력을 통해 전체 배포 과정을 자동으로 진행하는 것을 뜻한다. 배포 자동화를 이용하면 시간절약이 가능하고, Human Error를 방지할 수 있다. Human Error는 사람이 수동적으로 배포 과정을 진행하는 중에 언제든 생길 수 있고, 그 전에 했던 배포 과정과 비교하여 특정 과정을 생략하거나 다르게 진행하여 발생할 수도 있다.
2. 파이프라인
배포에서 파이프라인이란, 소스 코드의 관리부터 실제 서비스로의 배포 과정을 연결하는 구조를 뜻한다. 파이프라인은 전체 배포 과정을 여러 단계 (Stages)로 분리한다. 각 단계는 파이프라인안에서 순차적으로 진행되며, 단계마다 주어진 작업(Actions)을 수행한다.
파이프라인을 여러단계로 분리할수 있지만 대표적으로 3가지로 나눌 수 있다.
Source 단계
Source 단계에서는 원격 저장소에 관리되고 있는 소스 코드에 변경 사항이 일어날 경우, 이를 감지하고 다음 단계로 전달하는 작업을 수행한다.
gitHub, CodeCommit 등을 이용할 수 있다.
gitHub는 무료로 이용할 수 있지만, CodeCommit은 과금이되지만, 소스 코드의 유출을 방지할 수있다는 장점이 있다.
Build 단계
Build 단계에서는 Source 단계에서 전달받은 코드를 컴파일, 빌드, 테스트하여 가공한다. 또한 Build 단계를 거쳐 생성된 결과물을 다음 단계로 전달하는 작업을 수행한다.
CodeBuild 서비스를 이용할 수 있다.
Deploy 단계
Deploy 단계에서는 build 단계로부터 전달받은 결과물을 실제 서비스에 반영하는 작업을 수행한다.
CodeDeploy와 S3 서비스를 이용할 수 있다.
3. 실습하면서 궁금했던 점
CodeBuild는 왜 클라이언트에서만 사용할까?
서버를 만들때는 build를 안하니까..서버는 간략히 생각해보면, express설치 → app.js 작성 → node app.js 실행하면 완성된다. 그러나 만약, 서버를 typescript로 작성했다면, build가 포함되어야한다. Build가 바로 typescript를 JavaScript로 바꿔주는 일을 하니까..
CodeDeploy는 왜 서버에서만 사용할까?
서버는 애플리케이션이 항상 실행되는 상태로 유지해야한다. 이때 CodeDeploy는
1. EC2 인스턴스에 대한 배포(코드 다운로드)
2. AppSpec을 이용해 각각의 수명주기(lifecycle)에 필요한 명령 설정
3. 애플리케이션 중단 및 실행과 관련한 코드가 반드시 필요