https://lback.tistory.com/19 GitHub Actions를 통해 CI를 구축한 것에 이어서 GitHub Actions + AWS Code Deploy를 통해 CD를 구축해보겠습니다.
1. 배포 구조
GitHub Actions와 AWS Code Deploy를 통해 CI/CD 파이프라인을 구착하는 전체적인 구조는 다음과 같습니다.
각각의 역할을 먼저 살펴보겠습니다.
GitHub(GitHut Actions)
Master Branch로 push 이벤트가 발생하면, GitHub Actions에 정의한 workflow에 따라 배포 프로세스를 진행합니다.
AWS S3 - Repository
배포에 사용될 코드를 저장합니다.
(S3를 사용하지 않고, GitHub를 Repository로 사용할 수도 있습니다.)
AWS CodeDeploy
Repository(S3)에 저장된 코드를 EC2 인스턴스에 업로드하고, 빌드하는 역할
여기서 CodeDeploy의 경우, CodeDeploy Application과 CodeDeploy Agent로 나눠집니다.
CodeDeploy Agent
Code Deploy Agent는 EC2 인스턴스 상에서 동작하며, 전달받은 코드와 수행할 빌드 명령어 등을 포함한 script를 통해 프로젝트를 빌드하고 실행하는 역할을 수행합니다.
CodeDeploy Application
Application는 간단하게, 배포 설정이라고 생각하시면 됩니다.
AWS 콘솔을 통해 관리하면 되고, 어떤 인스턴스에 어떤 방식으로 배포할 지 등을 설정하게 됩니다.
2. 배포 과정
구조를 살펴봤으니, 어떤 과정으로 배포가 이뤄지는지 조금 더 자세히 살펴보겠습니다.
(1) 이벤트 발생
Master branch로 push 이벤트가 발생하면, workflow가 실행됩니다.
Workflow는 다음과 같은 내용을 포함합니다.
- 코드를 S3로 업로드
- CodeDeploy 배포 명령어 호출
(2) CodeDeploy Application
명시된 배포 그룹, 배포 형태를 확인하고, 배포를 수행할 EC2에서 실행 중인 CodeDeploy Agent에게 코드 전달
(3) CodeDeploy Agent
프로젝트 빌드 및 실행.
이때 빌드 과정은 사용자가 직접 정의한 script를 수행하게 됩니다.
따라서 프로젝트에 appspec.yml 파일과, script 파일을 포함해주어야 하는데, 이후에 자세히 살펴보겠습니다.
'개발' 카테고리의 다른 글
[CI/CD] (4) CD 구축하기 - AWS (0) | 2023.05.04 |
---|---|
[CI/CD] (3) 설정 총정리 (0) | 2023.05.04 |
[CI/CD] (1) Github actions로 CI 구축하기 (1) | 2023.04.20 |
[Git] 하나의 저장소에 여러 프로젝트 추가하기(subtree) (0) | 2023.04.12 |
[REST API] 리스트를 JSON으로 반환할 때 주의할 점 (0) | 2023.04.10 |