CI/CD

2025. 10. 3. 18:05CI\CD/CI\CD 종합

반응형

CI/CD란 

CI/CD란 Continuous Integration/ Continuous Deployment(Continuous Delivery)로 한국어로 하자면 지속적인 통합/ 지속적인 배포로 소스의 변경을 자동으로 빌드 및 테스트(지속적인 통합)를 하고, 검증된 결과를 가지고 자동으로 배포(지속적인 배포)를 하는 프로세스 혹은 도구 및 체계이다.

 

CI/CD가 발생한 이유

CI/CD 없이 수동 빌드 및 배포를 하게 되면 그 때 마다 개발하는 PC와 운영하는 서버 사이의 환경적인 차이로 인해 혹은 사람의 실수로 인해, 테스트를 하지 않아 문제가 생기는 일들이 많고 그럴 때마다 이 소스를 롤백하는게 쉽지 않다.

 

이를 해결 하기 위해서 커밋 마다 자동으로 빌드 및 테스트를 하고 배포까지 자동화해서 오류를 빠르게 판단하고 작은 볼륨을 자주 배포할 수 있어 위험성이 줄어드는데 이게 바로 CI/CD이다.

 

CI(Continuous Integration, 지속적 통합)

지속적인 통합은 코드의 변경 사항을 자주 통합하고 자동으로 테스트 하여 코드의 충돌이나 오류를 조기에 발견하기 위해 사용된다

이 과정은 개발자가 코드를 중앙 저장소(Github, Gitlab, Bitbucket 등..)에 커밋할 때 마다, CI 시스템이 자동으로 코드를 빌드하고(컴파일) 단위 테스트 및 통합 테스트를 실행하는 걸로 진행된다.

 

CD(Continuous Delivery/Deployment, 지속적 제공/배포)

지속적인 제공/배포는 CI 단계를 통과한 소프트웨어를 항상 빠르게 배포할 수 있도록 준비하기 위해서 사용된다

여기서 지속적인 제공(Delivery)은 CI를 통과한 빌드를 배포할 준비가 된 상태(스테이징 배포, 테스트 보안 점검등)로 유지하는 것을 자동화하고 최종적인 배포결정자의 수동적인 버튼 클릭과 같은 방법으로 이뤄진다.

지속적인 배포(Deployment)는 CI를 통과한 빌드를 배포할 준비 상태에 대해서 사전에 정의해두고 정의한 기준을 만족한다면 사람의 개입 없이 자동으로 사용자에게 배포한다.(대신 안전 장치를 위한 카나리, 블루/그린, 자동 롤백, 시간대 정책 등으로 리스크 관리를 함)

여기서 제공의 형태의 CD와 배포의 형태의 CD는 상황과 프로젝트의 형태에 따라서 선택적으로 수행되지 어떤것이 더 좋고 나쁨은 아님으로 보인다.

반응형