상세 컨텐츠

본문 제목

CI/CD란 무엇일까?

개발공부/개발공부

by Dal_pang 2022. 9. 22. 16:06

본문

CI ( Continuous Integration ) 지속적 통합

코드 변경시 변경된 코드의 빌드, 테스트, 머지를 자동화하고, 작은 변화에도 지속적인 머지를 통해 코드를 통합시키는 프로세스.
여러 개발자가 같은 서비스에 대해 작업을 하다가 코드를 머지하게 되면 충돌이 나는 경우가 많아 해결을 위해 적지 않은 시간을 들이게 된다. 특히나 하루에도 몇번씩 코드 작성 후 머지를 하게 된다면 실제 작업보다 충돌 해결에 더 오랜 시간을 보내게 될 수도있다.
CI 를 사용하는 이유는 이러한 기회비용을 줄이기 위해서이다.
CI를 통해 자동으로 빌드, 테스트, 머지가 이뤄지게 할 경우 다음과 같은 장점이 있다.

자동화를 통한 생산성 향상 - CI를 사용하면 새로 작성된 코드를 자동으로 머지해주고, 제대로 빌드가 되었는지 확인한 다음, 기존 코드와 머지되며 그로 인한 에러가 발생되지 않는지 테스트까지 해준다.
충돌 - 충돌이 일어난 곳을 기존보다 더 빠르게 알 수 있고,
오류 수정의 용이성 - 지속적 통합으로 바뀐 부분이 적어 오류를 수정하기 쉽다.

결과적으로 코드 변경시 테스트가 지속적으로 진행되므로 좀더 좋은 퀄리티의 코드를 작성할 수 있다.

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

CI를 통해 테스트까지 마친 프로그램에 대하여 배포하는 단계에 해당하는 프로세스.

 

[참고]

- 빌드 : 작성된 코드가 실행 가능하도록 만드는 것

- 배포 : 사용자가 이용 가능하도록 만드는 것

 

이때, 배포(릴리즈)가 준비된 후 수동으로 배포하는지, 자동으로 배포하는지에 따라 아래와 같이 나뉜다.

수동으로 배포 => Continuous Delivery

자동으로 배포 => Continuous Deployment

 


[ CI/CD 툴 예제 ] Jenkins, BuildKite, Github Action, Gitlab CI/CD, Bitbucket Pipeline, etc.

728x90

관련글 더보기