IT잡다

CI/CD

leeyk2121 2025. 1. 7. 00:20

CI/CD

CI(Continuous Integration)

지속적인 통합의 약자

버그 수정이나 새로 만드는 기능들이 주기적으로 main repository에 빌드되어서 merge되는 것을 말한다. 

개발자들은 코드 변경사항을 main repository에 주기적으로 빈벅하게 merge 해야 한다. 

같은 기능을 개발하는 여러 개발자가 시간이 흐른 후 해당 기능을 merge할 경우 merge error를 잡느라 많은 시간을 허비 할 수 있기 때문이다. 그렇기 때문에 새로운 기능을 구현할 때 해당 기능을 작은 단위로 나누어서 개발하고 통합해 나아가야 한다. 

주기적으로 merge될 코드의 변경사항이 자동으로 빌드되어서 코드 변경사항 이후에도 빌드가 성공적으로 확인이 되어야 하고 새로 추가된 코드 변경사항 뿐만 아니라 해당 코드가 기존 코드에 에러를 일으키는지 테스트 까지 되어야 한다. 

자동으로 CI 스크립트를 통해 추가된 코드와 함께 빌드가 되고 유니테스트 등을 통해 실행되어 테스트가 잘되어야 나중에 배포할때 반영이 될 수 있다. 

주기적으로 merge를 하기 때문에 충돌을 피하여 생산성이 높아지고 코드의 결함이나 문제점이 빠르게 발견될 수 있다. 

CD(Continuous Delivery& Deployment)

지속적인 제공 또는 지속적인 배포로 사용되는 경우도 있다. 이 둘 모두 어떻게 하면 배포를 자동화해서 만들 수 있는지를 고민하는 단계이다.

Continuous Delivery

CI를 통해서 주기적으로 빌드가 되고 테스트가 되었고 이것을 배포할 준비과정을 release라고 한다. 이러한 release를 검증을 하고 수동적으로 배포하는 것을 continuous delivery라고 한다. 

Continuous Deployment

release가 준비되자 마자 자동으로 사용자에게 배포할 수 있으며 이러한 모든 과정을 자동화 한 것이 continuous Deployment라고 한다. 

 

출처:https://www.youtube.com/watch?v=0Emq5FypiMM