- 정의
- 애플리케이션 개발 단계부터 배포때까지의 모든 단계를 자동화를 해서 좀 더 효율적이고 빠르게 사용자에게 번번히 배포할 수 있는 것
- 지속적으로 코드를 합치고 배포하는 행위
- CI(Continuous Integration) : 지속적인 통합
애플리케이션의 버그 수정이나 새로운 코드 변경이 주기적으로 빌드 및 테스트되면서 공유되는 레파지토리에 통합 (merge) 되는것을 의마하며 2가지 방법이 있다.
(1) 코드 변경 사항을 주기적으로 번번하게 merge
개발자 들이 2~3일에 한번씩 merge할 경우에 새로운 기능의 코드를 작성하는것보다 충돌되는 코드를 수정하는 시간이 더 오래 걸릴 수도 있다. 그렇기에 가능한 작은 단위로 나누어서 주기적으로 번번히 개발하고 계속해서 통합하여 나가는 것이 중요하다.
ex)
개발자 들이 github를 통하여 시스템에 통합한다.
->
통합한 코드가 제대로 동작하는지 빌드 및 테스트를 진행한다.
->
버그 발생하거나 다음에 해야할 목록에 정리해두고 다음날이나 버그를 해결한다.
(2) 통합 단계의 자동화
build 하고 test하는 과정은 굳이 사람이 하지 않더라도 되는 작업이다.
ex)
위와 동일하게 개발자들은 github에 작업한 코드를 통합한다.
->
빌드 및 테스트는 자동으로 진행되므로, 버그가 생기면 다음날에 버그를 해결한다.
(3)CI의 장점
- 코드의 검증에 들어가는 시간이 줄어든다.
- 개발 편의성이 증가한다.
- 항상 테스트 코드를 통과한 코드만이 레포지토리에 올라가기 떄문에 좋은 코드 퀄리티를 유지할 수 있다.
- CD (Continuous Delivery)
(1) 정의
CD 는 Cotinuous Delivery, 지속적인 제공이라는 의미와 Continuous DEployment,지속적ㅇ니 배포라는 의미가 있다.