본문 바로가기

개발/시스템

CI(Continuous Integration)/CD(Continuous Deploy/Delivery)

CI(Continuous Integration)/CD(Continuous Deploy/Delivery) 의 개념에 대해 작성한다.

CI(Continuous Integration)

CI는 지속적 통합(Continuous Integration)으로 코드를 지속적으로 통합하는 것이다.
전통적인 방식의 개발은 여러명의 개발자가 협업을 진행할때 각자가 중앙저장소에 통합하는 프로세스로 개발을 진행하다.
하지만 컴포넌트, 피쳐의 개발이 완료될 때까지 프로젝트에 참여한 모든 개발자가 중앙저장소에 코드를 통합하지 않았다면 통합과정은 매우 어렵고 힘든 일이 될 것이다.

이런 문제를 해결하고자 지속적 통합(CI)이 등장했다.
CI를 자동화 하지 않은 상태에서 수행하면 개발자는 중앙저장소에 코드를 통합하고, 본인의 코드를 중앙저장소에서 테스트하고, 중앙저장소의 빌드를 테스트를 하는 복잡한 절차를 거쳐 CI를 진행해야 한다.

자동화된 CI는 개발자는 작업한 코드를 중앙 저장소에 통합하면 테스트와 빌드 등의 복잡한 절차를 자동적으로 처리해준다.
따라서 CI와 자동화는 밀접한 관계를 맺고 있다.

CD(Continuous Deploy/Delivery)

CD는 지속적 배포(Continuous Deploy/Delivery)으로 지속적으로 소프트웨어가 신뢰 가능한 수준으로 배포될 수 있도록 관리하는 것이다.

CD를 진행하기 위해서는 CI의 진행이 필수적이다.
CI를 진행하며 개발 과정에서 지속적으로 빌드와 테스트를 진행하고,
테스트를 통과한 신뢰 가능한 코드에 대해서 테스트 서버와 운영 서버에 바로 배포 및 반영하는 것이다.

자동화된 CI, CD환경이 구축되면 개발 과정에서 빌드 및 테스트가 자동으로 진행되고 테스트 서버와 운영 서버에 배포되는 과정까지 자동화되는 것이다.

반응형