git
CI / CD란?
탄생
2024. 11. 5. 10:44
CI/CD 는 지속적 통합(Continuous Integration)과 지속적 배포(Continuous Deployment) 또는 지속적 배포(Continuous Delivery)를 의미합니다.
이는 소프트웨어 개발의 자동화된 프로세스를 가리키며, 개발자들이 코드를 빠르고 안정적으로 배포할 수 있도록 돕습니다.
❖ CI
- CI는 지속적인 통합을 의미하며, 개발자가 코드 변경을 자주 작은 단위로 통합하여 저장소에 반영하는 프로세스를 가리킵니다.
- 주요과정
- 코드 통합 : 모든 개발자는 변경된 코드를 자주, 최소 하루에 한 번씩 통합 저장소에 푸시(push)합니다.
- 자동빌드 : 코드가 통합되면 CI서버가 자동으로 빌드(build)를 실행하여 코드가 정상적으로 컴파일되는지 확인합니다.
- 자동 테스트 : 빌드 후 자동화 된 테스트를 실행하여 코드의 안정성을 보장합니다.
- 피드백 제공 : 빌드나 테스트가 실패하면 개발자에게 즉시 피드백이 제공되어 문제를 신속히 해결할 수 있습니다.
❖ CD
- Continuous Delivery
- 지속적인 배포는 CI에서 더 나아가, 빌드와 테스트가 성공적으로 완료되면 프로덕트 환경에 배포할 수 있는 상태로 자동으로 준비하는 것을 의미합니다. 프로덕트 배포 자체는 수동으로 이루어집니다.
- 주요과정
- CI프로세스 이후, 배포 가능한 빌드를 스테이징 환경에 자동으로 배포
- 모든 통합 테스트와 승인 과정을 거친 후 관리자가 프로덕트 환경에 배포할지 여부를 결정.
- Continuous Deployment
- 지속적인 배포 자동화는 Continuous Delivery 에서 한단계 더 나아가, 프로덕트 환경에 자동으로 배포하는 것을 말합니다.
- 즉, 빌드, 테스트가 통과되면 별도의 승인 절차 없이 자동으로 라이브 환경에 배포됩니다.
- 주요 과정
- 모든 테스트가 통과된 코드가 자동으로 프로덕트 환경에 배포
- 사용자에게 새로운 기능이나 수정 사항이 즉시 제공됨
❖ CI/CD 파이프라인의 구성 요소
- 소스 코드 관리 : git, svn 등과 같은 버전관리 시스템에서 코드가 변경될 때 CI/CD 파이프라인이 시작됩니다.
- 빌드 : 코드가 컴파일되고, 의존성이 설치됩니다. 빌드가 실패하면 즉시 개발자에게 알림이 갑니다.
- 테스트 : 유닛 테스트, 통합테스트, UI 테스트 등을 자동으로 실행하여 코드가 올바르게 작동하는지 확인합니다.
- 배포 : 테스트가 통과되면 애플리케이션을 스테이징 환경 또는 프로덕트 환경에 자동으로 배포합니다.
- 모니터링 : 배포 후 애플리이션 상태를 모니터링하여 성능 이슈나 오류를 감지합니다