지식 정리/git
[Git] CI/CD란?
27200
2025. 1. 20. 14:07
CI/CD란?
CI/CD는 애플리케이션 개발 단계부터 배포까지의 모든 단계를 자동화해서 더욱 효율적이고 빠르게 사용자에게 빈번한 배포를 하는 것이다.
→ DevOps 엔지니어의 핵심 업무이다.
소프트웨어 개발 라이프사이클을 간소화하고 가속화하는 것을 목표로 한다.
이렇게 연결된 두 사례를 일반적으로 “CI/CD 파이프라인”이라 부르며, 개발 팀과 운영 팀이 DevOps 또는 SRE를 통해 애자일 방식으로 협력하여 이를 지원한다.
CI(Continuos Integration)란?
- 지속적인 통합이라는 의미로, 작업한 코드를 주기적으로 빌드 및 테스트하여 레포지토리에 merge 하는 것이다.
- 버그 수정, 새로운 기능을 개발한 코드가 주기적으로 Main Repository에 병합되는 것을 의미한다.
‼️CI의 중요 포인트
- 코드 변경 사항을 주기적으로 빈번하게 merge
- 오랜 기간 merge를 진행하지 않게 된다면???
- 코드가 충돌하게 되고, 병합을 하는 데 있어 오랜 시간이 소요된다.
- 코드 작성시간보다 코드 충돌을 해결하는 것에 있어 많은 시간이 소모된다.
- 작은 단위로 개발하여 주기적으로 빈번하게 merge 해야 한다.
- 통합 단계의 자동화
- 팀 내 개발자들이 배포에 적용할 기능을 개발 후 하루에 수십 번 Main Branch에 Merge를 진행한다면?
- 팀 작은 팀 내 모든 개발자드르이 코드를 빌드, 테스트, 배포까지 하는 것은 엄청난 반복 작업이다.
- 따라서 코드 변경사항을 Build 하고 Test 하는 과정을 자동화하면 귀찮은 반복 작업을 생략할 수 있다.
😊 CI의 장점
- 개발 생산성 향상
- 문제점을 빠르게 발견
- 코드 퀄리티 향상
CD(Continuous Delivery & Continuous Deployment)
- 지속적인 제공(Continuous Delivery)과 지속적인 배포(Continuous Deployment) 두 가지의 의미를 지닌다.
- 마지막 배포 단계에서 어떻게 하면 자동화해서 배포를 할 수 있을까?라는 것이다.
Continuous Delivery
- CI 단계에서 빌드되고 테스트된 후, 배포 준비 상태 확인되면 개발자 혹은 검증팀이 수동으로 배포를 하는 것이다.
Continuous Deployment
- CI 단계에서 빌드되고 테스트된 후, 배포 준비 상태가 확인되면 자동으로 배포까지 진행하는 것이다.
즉, 최종 단계가 자동화가 되었는지에 따른 차이라고 보면 된다.
최종 요약