본문 바로가기
programming

CI/CD

by iskull 2021. 9. 15.
728x90

  어플리케이션 개발단계부터 배포까지의 단계를 자동화하여 사용자에게 빈번히 배포를 할 수 있게 하는 개발방식이다.

CI(Continuous Integration - 지속적 통합)

  버그 수정과 새로운 기능들이 주기적으로 메인 레파지토리에 빌트되고 테스트 되어 머지되는 것을 의미한다. CI는 두개의 중요 사항이 존재 한다.

  1. 코드 변경사항을 주기적으로 빈번히 머지해야 한다

    - 서로 다른 개발자들이 같은 파일을 수정하고 오랜시간 후 머지를 한다면 conflict해결에 더 많은 시간이 든다. 

  2. 통합을 위한 단계 (빌드, 테스트, 머지)의 자동화 

   -주기적으로 머지된 코드가 정상적으로 빌드되고 다른 코드에 버그를 초래하지 않는지에 대한 테스트가 자동적으로 이뤄져야 한다. 이때 성공 여부에 대한 결과를 머지한 개발자에게 자동으로 알람이 가야 한다.

장점:

  1. 주기적으로 머지를 하기 때문에 개발 생산성을 향상 한다.

  2. 머지를 하면 자동으로 빌드하고 테스트를 하기 때문에 문제점을 빠르게 발견할 수 있다.

  3. 버그 수정 용이: 주기적으로 머지를 하고 곧바로 빌드, 테스트를 하기 때문에 보다 작은 단위의 코드만으로 버그를 수정할 수 있다

  4. 위의 장점을 통해 코드 퀄리티를 향상시킬 수 있다.

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

  마지막 배포 단계에서 어떻게 배포를 자동화 할지에 대한 것이다. CI가 끝나면 preapare release, deploy release 이 두 단계를 거쳐 배포를 한다. prepare release는 코드를 검증하는 단계이며 deploy release는 실제로 배포를 하는 단계이다. 여기서 prepare release를 사내 개발자가 완료하고 수동으로 delpoy release를 한다면 Continuous Delivery가 되고 자동으로 deploy release를 한다면 Continuous Deployment가 된다. 

CI/CD를 위한 툴

  Jenkins, Buildkite, GitBal CI/CD 등

'programming' 카테고리의 다른 글

TDD(Test Driven Dvelopment)  (0) 2021.11.07
Event driven  (0) 2021.09.25
Object pooling  (0) 2021.06.23
git 정리1  (0) 2021.04.04
객체지향 구현 원리 5가지 - SOLID  (0) 2021.03.07