본문 바로가기

1.프로그래밍/개발

[CI/CD] CI/CD란?

728x90
반응형

CI(Continuous Integration)/CD(Continuous Deploy)란?

  • 쉽게 요약하면, 배포를 자동화하는 것이 가장 큰 목적.

image

CI(Continuous Integration)

  • CI는 지속적인 통합을 의미한다.
  • 즉, 개발자가 개발한 소스 코드들은 지속적으로 코드베이스에 통합되어야 하며, 이때 자동으로 빌드 및 테스트가 진행되어야 한다.
    • 예를 들어, 개발자가 기능을 개발하면, 그 코드들은 기존 코드와 병합(merge)된다.
    • 병합될 때 컴파일이나 배포 빌드 과정이 정상적으로 실행되는지 확인해야 한다.
    • 개발된 코드가 기존 코드에 부작용(side effect)이 없는지 확인하기 위해서는 테스트 과정이 필요하다.
  • 이런 배포 빌드 테스트 과정을 지속적이고 자동으로 계속할 수 있도록 구축된 시스템이 CI 이다.
  • 대표적인 오픈 소스 CI 시스템으로는 젠킨스(Jenkins)가 있다.
  • 기존 소스와 병합하기 위해서는 Git 이나 SVN 같은 버전 관리 시스템도 필요하다.

CD(Continuous Deploy)란?

  • CD는 지속적인 배포르 의미한다.
  • CI를 통해 자동으로 테스트 및 패키징되었다면 CD를 이용하여 자동으로 해당 시스템에 배포할 수 있다.
    • CD가 없다면 개발자는 패키징된 파일을 각 서버에 분배한 후 직접 서버르 재기동 해야 한다.
    • 이 과정은 시간이 많이 소요될 뿐만 아니라 배포 중인 시스템은 로드 밸러서에서 제외하는 등의 수작업 등이 존재했다.
    • 이런 부분들을 모두 자동화하면 배포 시간이 단축될 뿐만 아니라 하루에 수십 번 배포할 수 있다.
728x90
반응형