CI/CD
Continuous Integration (CI)와 Continuous Deployment (CD)의 약자
소프트웨어 개발에서 사용되는 방법론이자 도구들의 조합을 의미한다.
지속적 통합 (Continuous Integration, CI)
개발자들이 코드 변경 사항을 중앙 저장소에 자주(일반적으로는 하루에 여러 번) 병합(머지)하는 것
각 병합 시마다 코드를 자동으로 빌드하고 테스트하여, 개발 초기 단계에서 문제를 발견하고 수정할 수 있게 한다.
통합 과정에서 발생할 수 있는 문제를 최소화하여, 소프트웨어의 품질을 향상시킨다.
지속적 배포 (Continuous Deployment, CD)
모든 코드 변경 사항이 테스트를 통과한 후 자동으로 운영 환경에 배포되는 것을 의미
지속적 전달 (Continuous Delivery)
지속적 배포의 한 단계 전 과정
모든 코드 변경 사항이 테스트를 통과하면 운영 환경에 배포될 준비가 되는 것을 의미
CI/CD의 일반적인 순서
- 코드 변경 사항 관리 (Version Control)
- 코드 변경 사항을 버전 관리 시스템에 커밋
- Git
- 자동화된 빌드 (Build Automation)
- 코드 변경이 감지되면 CI 도구가 자동으로 빌드를 시작
- GitHub Actions / Jenkins
- 소스 코드를 가져와 필요한 종속성을 설치하고, 빌드 프로세스를 실행
- Docker 이미지를 빌드 / 코드를 컴파일하고 패키지를 생성
- 테스트 (Testing)
- 빌드된 애플리케이션에 대해 자동화된 테스트를 실행
- 단위 테스트, 통합 테스트 등 다양한 테스트 레벨을 포함할 수 있다.
- 테스트 결과는 품질 보증을 위해 평가
- 릴리스 준비 (Release Preparation)
- 테스트가 성공적으로 완료되면 릴리스를 위한 준비 작업을 수행
- 빌드된 애플리케이션을 패키징하거나, 배포할 준비
- Docker Hub, AWS ECR, Google Container Registry 등의 Docker 레지스트리를 사용
- 배포 (Deployment)
- 준비된 애플리케이션 또는 서비스를 실제 환경에 배포
- 자동화된 방식으로 배포를 수행하여, 사용자에게 새로운 기능을 제공
- Kubernetes 클러스터, AWS ECS, Azure Kubernetes Service
등의 컨테이너 오케스트레이션 플랫폼
- 모니터링과 피드백 (Monitoring and Feedback)
- 배포된 애플리케이션을 모니터링하여 성능 및 안정성을 확인
- 사용자의 피드백을 수집하여 애플리케이션의 개선 사항을 식별