CI/CD 개념
1. Continuous Integration (CI) - 지속적 통합
개발자가 코드를 변경할 때마다 자주, 자동으로 통합하여 빌드와 테스트를 수행하는 프로세스를 말한다.
목적
코드가 변경될 때마다 발생하는 문제를 빨리 발견하고 수정할 수 있도록 돕는 것
특징
- 자동화된 빌드: 코드가 변경되면 자동으로 빌드(컴파일 및 테스트)가 진행된다.
- 자동화된 테스트: 코드의 변경 사항이 의도대로 작동하는지 확인하기 위해 단위 테스트(Unit Test), 통합 테스트(Integration Test) 등을 자동으로 실행한다.
- 빠른 피드백: 문제가 발생하면 빠르게 알림을 받아, 개발자가 즉시 수정할 수 있다.
=> 코드의 변경 사항을 빠르게 통합하고, 자동화된 테스트를 통해 품질을 유지하는 데 집중
2. Continuous Deployment (CD) - 지속적 배포
자동화된 테스트를 통과한 코드를 승인 없이 바로 프로덕션 환경에 배포하는 프로세스를 말한다.
목적
코드가 변경될 때마다 자동으로 사용자에게 최신 기능이 제공되도록 하는 것
특징
- 완전 자동화: 프로덕션 환경에 배포하는 과정까지 자동으로 진행된다. 사람이 개입하지 않고 새로운 기능이 배포된다.
- 빠른 사용자 피드백: 새로운 코드가 즉시 배포되기 때문에 사용자의 피드백을 빠르게 받을 수 있다.
=> 모든 배포 과정을 자동화하여, 사용자가 새로운 코드를 즉시 사용 가능
사전 준비 사항
- GitHub에 프로젝트 준비
- AWS 계정 준비 (IAM 사용자가 CodePipeline, CodeBuild, S3, EC2, IAM 권한을 가지고 있어야 함)
- S3 버킷 (CodePipeline과 CodeBuild에서 사용할 아티팩트 저장소) 준비