이젠 배포된 AWS S3, CloudFront에 CI, CD를 구축해보자.
나는 Github에 올라가 있는 프로젝트를 Github Actions으로 CI CD를 구축할 예정이다.
CI/CD(Continuous Integration and Continuous Deployment 또는 Continuous Delivery)는 소프트웨어 개발에서 코드 변경 사항을 보다 빠르고 안정적으로 배포할 수 있도록 돕는 일련의 프로세스와 도구입니다.
1. CI(Continuous Integration, 지속적 통합)
- 개념: 개발자가 새로운 코드를 중앙 저장소(예: Git)에 자주 병합하는 프로세스입니다.
- 목적: 코드 변경 시, 자동화된 빌드와 테스트를 통해 버그를 초기에 발견하고 해결합니다.
- 주요 작업:
- 코드 커밋
- 자동화된 빌드 실행
- 단위 테스트 및 통합 테스트 실행
- 문제 발생 시 개발자 알림
CI의 장점:
- 코드 병합 문제를 조기에 발견 (Merge Conflict 최소화)
- 코드 품질 유지
- 테스트 자동화로 안정성 향상
2. CD(Continuous Deployment, 지속적 배포) 또는 Continuous Delivery(지속적 전달)
- Continuous Deployment:
코드를 프로덕션 환경까지 자동으로 배포하는 프로세스입니다. 코드 변경 후 모든 테스트를 통과하면 사람이 개입하지 않아도 바로 배포됩니다. - Continuous Delivery:
코드가 프로덕션 환경에 배포되기 직전까지 자동화되며, 실제 배포는 수동 승인 후 진행됩니다.
CD의 주요 작업:
- 자동화된 배포 준비
- 스테이징 환경에서 테스트 실행
- (옵션) 수동 승인 후 프로덕션 환경 배포
CD의 장점:
- 빠르고 안정적인 배포 프로세스
- 배포 시간 단축 및 배포 오류 감소
- 코드가 항상 배포 가능한 상태로 유지
- 먼저, IAM에서 사용자를 생성하고 S3와 CloudFront에 접근할 수 있는 권한을 부여하자.
- AWS CLI로 접근할 수 있게 액세스 키를 발급받자.
- 발급받은 KEY_ID와 SCESS_KEY를 잘 적어두자.
- Cloudfront으로 이동한 후, distribution ID 적어두자.
- ARN에 distribution 다음에 오는 값이 distribution ID 이다.
- Vue 프로젝트에 .github/workflows 디렉토리에 deploy.yaml파일을 만들자.
- 나는 vue를 빌드하고 빌드한 후, 방급 발급한 IAM 권한으로 S3에 빌드한 프로젝트를 동기화하고 cloudfront 캐시 무효화를 진행할 것이다.
- Github 해당 프로젝트에 Settings으로 이동하면 Secrets and variables 항목으로 가자.
- 발급받은 IAM ID와 KEY, Cloudfront Distribution ID와 배포할 S3 Bucket을 입력하자.
- Master 브랜치에 Commit후 Push를 진행해보자.
- Github에 Actions으로 이동하면 초록색 체크 표시를 확인가능하고 Status Success라는 문구가 나타나면 정상적으로 배포가 되었다는 말이다.
- deploy를 클릭해보면 빌드 배포과정 파이프라인을 확인할 수 있다.
- S3에 배포가 잘되어있는지 확인해보자.
- S3 Bucket으로 이동하면 마지막 수정날짜가 배포된 시간으로 바뀐것을 알 수 있다.
- Cloudfront 무효화으로 이동하면 생성된 날짜에 배포시간을 확인 할 수 있다.
- 정상적으로 배포된 것을 알 수 있다.
- 내 웹서버 도메인으로 접속해보자. 정상적으로 배포가 된 것을 알 수 있다.
- 홈페이지 대문 문구를 AWS CI CD Build로 바꾸었는데 잘 수정되었다.
반응형
'Amazon Web Service' 카테고리의 다른 글
AWS S3 서버리스 웹 서버를 구축하고 CloudFront 연결하기(4)-보안 (1) | 2024.11.17 |
---|---|
AWS S3 서버리스 웹 서버를 구축하고 CloudFront 연결하기(3)-로그 (0) | 2024.11.17 |
Route 53으로 SSL인증서 발급받고 Cloudfront DNS 연결하기 (0) | 2024.11.16 |
AWS S3 서버리스 웹 서버를 구축하고 CloudFront 연결하기(2)-권한 (0) | 2024.11.12 |
AWS S3 서버리스 웹 서버를 구축하고 CloudFront 연결하기 (3) | 2024.11.09 |