미니소곰 2020. 3. 23. 16:37

CI(Continuous Integration)란?

개발자를 위한 자동화 프로세스를 말한다.

코드의 변경사항이 정기적으로 빌드, 테스트되어 리포지토리에 올라간다.

 

여럿이서 개발하는 프로젝트의 경우, 각자 다른 기능을 동시에 개발한다.

이경우 문제는 통합할 때 일어난다.

한 개발자가 변경한 기능이 다른 기능에 영향을 줄 수 있다.

 

CI를 통해 개발자는 위 작업을 더 쉽게 자주 수행할 수 있다.

개발자의 변경사항이 통합(Merge)되면 자동으로 빌드 되고, 단위테스트와 통합테스트를 통해 변경사항에 문제가 없는지 확인한다.

테스트하면서 충돌이 발생하면 버그를 더욱 빠르게 수정할 가능성이 높아진다. 작은 변경사항을 정기적으로 테스트하기 때문에 완성도 높은 결과물을 만들게 된다.

 

CD(Continuous Delivery/Deployment)란?

Continuous Delivery는 변경사항이 테스트를 거쳐 리포지토리에 자동으로 업로드 되는 것을 말한다.

운영팀은 이 리포지토리로 애플리케이션을 배포할 수 있다.

이는 개발팀과 비즈니스팀간의 커뮤니케이션 문제를 해결해준다.

테스트 자동화와 코드 릴리즈 자동화가 추가된다.

 

Continuous Deployment는 리포지토리의 변경사항을 고객이 사용할 수 있는 상태로 자동 릴리즈하는 것을 말한다.

이는 고객에게 애플리케이션을 빠르게 제공할 수 있게 한다.

CI/CD 파이프라인의 마지막 단계이다.

변경사항을 한번에 릴리스하지 않고 작은 조각으로 세분화하여 릴리즈하기에 애플리케이션 배포의 위험성을 줄여준다.