CI/CD란 무엇인가?

PinkTopaz·2023년 6월 7일
0

들어가며

지난 프로젝트를 하면서 서버 개발자들이 계속 CI/CD에 대해 언급하는 것을 들었다.
낯설기만 했던 그 용어, 무언가를 자동화하는 거라고만 알고 있던 그 용어를 이번에 정리해보려고 한다.

CI/CD란?

CI/CD 는 간단히 말해 어플리케이션 개발 단계에서부터 배포까지의 과정을 자동화하여 조금 더 효율적으로 사용자에게 빈번이 배포할 수 있도록 만드는 것을 의미한다.
CI/CDContinuous Integration (지속적인 통합)Continuous Deployment(Delivery) (지속적인 전달/배포) 을 함께 이르는 말인데, 하나씩 따로 살펴보자.

CI (Continuous Integration)

CI(지속적인 통합)은 버그 수정, 혹은 새로운 기능들이 메인 레포지토리에 주기적으로 빌드되고 테스트 되어 머지되는 것을 의미한다.

CI의 핵심에는 크게 2가지가 있다.

  1. 개발자들은 그들의 코드 변경 사항을 주기적으로 빈번하게 머지해야한다.
  • 만약 A 개발자와 B 개발자가 동일한 소스파일 상에서 협업을 하며 서로 다른 코드를 작성하는데, 오랜 기간 동안 변경 사항을 머지하지 않다가 한 번에 머지하려고 하면 충돌이 일어날 수 밖에 없다. - 그렇게 되면 기능을 개발하거나, 버그를 수정하는 것보다 머지 충돌을 해결하는 데에 불필요하게 더 많은 시간을 사용하게 될지도 모른다.
  • 따라서 개발자는 하나의 기능을 개발하더라도 이 기능을 어떻게 작은 단위로 나누어 메인 레포지토리에 머지할 지, 어떻게 사용자에게 배포할 지 고민하는 과정을 거쳐야한다.
  1. 통합을 위한 단계 (빌드, 테스트, 머지)의 자동화
  • 1번을 통해 개발자가 메인 레포지토리에 머지한 코드가 자동으로 빌드가 되어서 변경 사항 반영 이후에도 빌드가 성공적으로 되는지, 또한 새로 추가된 코드가 기존 시스템에 다른 버그를 일으키지는 않는지 자동으로 테스트까지 되어야한다.
  • 빌드테스트 과정을 팀에서 마련한 CI Server가 수행한다.

CI의 장점

  1. 주기적으로 머지를 하기 때문에 머지 충돌을 최소화할 수 있다.
  2. 머지되는 모든 코드들이 자동으로 빌드되고 테스트되어 코드 상의 문제점을 빠르게 발견하여 버그 수정이 조금 더 쉬워진다.
  • 주기적으로 머지하여 코드의 변경 사항이 작기 때문에 수정할 때도 조금 더 고립된, 작은 단위의 문제를 확인할 수 있기 때문.
  1. 이 과정
    을 통해 코드의 퀄리티가 향상된다.

CD (Continuous Deployment/Delivery)

CI를 거친 코드들을 개발자가 직접 수동적으로 배포하는 것을 Continurous Delivery ,
배포까지 모두 자동화시키는 것이 Continous Deployment인데 회사/팀마다 얼마만큼의 자동화를 하냐가 다르기 때문에 두 개념을 혼용해서 CD라고 칭한다.

CI/CD 파이프라인 정리

  1. 개발자가 코드를 작은 단위로 나누어서 주기적으로 메인 레포지토리에 머지를 한다.
  2. 자동으로 빌드를 하고 테스트를 하여 (CI) 릴리즈 준비를 한다.
  3. 자동/혹은 수동으로 2번을 거친 코드를 릴리즈(배포)한다.

마치며

CI/CD라는 이름이 낯설어서였는지 제대로 알아보기 전에는 그 필요성을 잘 체감하지 못했는데, 예전에 프로젝트를 배포하며 아주 약간의 변경사항이 있을 때마다 따로따로 빌드를 하고, 배포를 하는 과정이 여간 불편한 것이 아니었는데 CI/CD 파이프라인을 제대로 한 번 마려해둔다면 확실히 효율성이 제고될 것이라는 생각이 들었다.

보통 Jenkins, Buildkite, Github actions 등의 툴을 이용해서 이 CI/CD 파이프라인을 마련한다.
필자는 Github Actions를 이용하여 프론트엔드 프로젝트의 CI/CD 파이프라인 설계를 연습해보려고 한다. 해당 내용은 추후 추가할 예정이다.


참고자료

CI/CD 5분 개념 정리 (현업에서 쓰는 개발 프로세스)
[Front-End] CI/CD에 대해서 알아보고 배포 준비하기
배포 자동화? CI/CD가 무엇일까?

profile
🌱Connecting the dots🌱

0개의 댓글