CI/CD란?

SuYeong·2022년 1월 23일
1


(이미지 출처 : https://www.synopsys.com/glossary/what-is-cicd.html)

CI/CD란?

어플리케이션 개발 단계부터 배포까지의 과정을 자동화 해서,
빠르고 효율적으로 사용자에게 배포할 수 있도록 만드는 과정을 CI/CD라고 부른다.

CI(Continuous Integration)

해석하면, "지속적인 통합" 이다.

기능을 새롭게 추가하거나 버그를 잡으면서 수정된 코드들이
main Repository에 주기적으로 빌드되고 테스트되면서 merge되는 것을 의미한다.

CI에는 두가지 포인트가 있다.

  1. 코드 변경사항을 주기적으로 자주 merge해야 한다.
  • 서로 다른 개발자가 한개의 파일을 오랫동안 따로 짜다보면, 코드 통합에 드는 시간이 굉장히 오래걸리게 된다.
  • 따라서 최대한 작은 단위로 나눠서 개발하고 통합하는 것이 중요하다.
  1. 통합을 위한 단계(Build, Merge, Test)의 자동화
  • merge된 코드의 변경사항이 자동으로 빌드가 되어서,
    코드 수정 이후에도 오류없이 빌드가 되는지 확인을 해야 한다

코드를 merge시키면, 자동으로 Main repository가 빌드가 되고, 빌드에 성공하면 unit test, integration test등등 여러 테스트를 거치게 된다.
빌드와 테스트에 성공하면, 수정된 코드는 나중에 배포할 때에 반영된다.

새로운 코드가 빌드, 테스트 과정을 거치면서 문제가 있다면, 문제를 개발자에게 알린다.

CI원칙의 장점

  • 주기적으로 merge를 하므로, merge충돌을 피할 수 있어서, 개발 생산성이 높아진다
  • merge 코드들이 자동으로 빌드, 테스트되므로, 문제점을 빠르게 발견할 수 있다.
  • 작은 단위로 개발이 이루어지므로, 문제가 발생하더라도 문제점을 쉽게 파악할 수 있다.

따라서, CI를 사용하면, 빠르고 안정적인 제품 개발이 가능하다.

CD(Continuous Delivery(or Deployment))

해석하면, "지속적인 제공(배포)" 이다.

지속적 제공, 지속적 배포 모두 마지막의 배포 단계 프로세스를 의미한다.

CI를 통해서 코드의 검증이 끝났다면 배포가 준비되어서,
사용자에게 배포되는 과정을 거친다.

이때, 배포 준비된 코드를 개발자가 검수하고 수동으로 배포하면 Continuous Delivery,
바로 자동으로 배포하면 Continuous Deployment 라고 부른다.

Delivery와 Deployment는 비슷하지만,
최종 단계의 자동화 여부에 따라서 살짝씩 달라질 수 있다.

CI/CD

CI/CD가 완벽히 분리된 것이 아니라, 대부분의 조직이 CI와 CD를 거쳐서 배포하므로, 두개를 묶어서 부른다

조직마다 얼마만큼의 자동화를 하느냐에 따라서 달라지므로,
CI/CD라고 해서 모두 같은 프로세스를 거치지는 않는다.

CI/CD 파이프라인 정리

  1. 개발자가 작은 단위로 기능을 나눠서,
    주기적으로 Main Repository에 코드를 merge하면,
  2. 자동으로 빌드를 하고,
  3. 테스트 과정을 거쳐서,
  4. 배포 준비를 하고,
  5. 수동 or 자동으로 최종 배포를 거친다.

CI/CD에 사용되는 툴

  • Jenkins
  • Buildkite
  • GitHub Actions
  • BitBucket Pipelines
  • 등등

참고자료

profile
안녕하세요

1개의 댓글

comment-user-thumbnail
2023년 10월 21일

공대생답지 않게 문장을 깔끔하게 잘 쓰시네요

답글 달기