코드스테이츠/정리 블로깅
[Section4] [Cloud] 배포 자동화 - 1
제뉴어리맨
2022. 10. 18. 22:17
전체 항목
- 배포 자동화란
- 자동화 구성요소
- 전반적인 배포 흐름
배포 자동화 (Automated Deployment) 란
한번의 클릭이나 간단한 명령어를 입력하여 배포하여 자동으로 서버를 구동까지 시키는 것을 말한다.
배포 파이프라인은 다음과 같다.
- 소스단계
소스가 관리되는 원격 저장소에서 소스의 변화가 일어나고, 이를 감지하는 단계 - 빌드단계
소스단계에서 변화가 감지된 코드를 컴파일, 빌드, 테스트 하여 모두 통과될 경우 빌드를 함.
그리고 배포단계에 결과물인 빌드를 넘김 - 배포단계
넘겨 받은 빌드를 현재 서비스서버에 실시간으로 실행시킨다
위와 같은 단계는 더 세분화 되거나 간소화 될 수 있다.
알아야할 AWS의 개념
- CodeCommit
github와 비슷한 서비스로써
코드를 저장하고 버전관리가 가능한 서비스이다.
github에 비해 보안 관련 기능에 있어 강점이있다. - CodeBuild
CodeBuild 서비스를 통해 유닛 테스트, 컴파일, 빌드와 같은 빌드 단계에서 필수적으로 실행되어야 할 작업들을 명령어를 통해 실행 가능하다 - CodeDeploy
배포단계에서 사용되는 서비스로,
변경된 앱을 서비스중인 서버에 반영시켜주는 역할을 한다. - CodePipeline
배포 자동화에서 사용되는 각 서비스들을 이어주는 서비스라고 생각하면 된다.
자동화 구성요소
- 프로젝트 : Spring Boot
- 소스 저장소 : Git hub
- 소스의 빌드 역할 : AWS CodeBuild
- 배포 역할 : AWS Code Deploy
- 빌드가 저장되고 서비스를 하는 서버 : AMAZON EC2
- 자동화 과정을 연결시켜주는 역할 : AWS Code Pipeline
전반적인 배포 흐름
- Spring Boot 프로젝트를 원격 저장소인 Git Hub 레포지토리에 push한다
- Code Build가 자신의 파이프 라인에 소스 스테이지로 등록된 Git Hub의 변경 내용을 전달받아
컴파일, 빌드, 테스트를 진행한다 - Code Build는 빌드 내용을 Code Deploy에게 전달한다
- Code Deploy는 EC2 서버에 빌드 내용을 배포하고 서비스를 실행시킨다.