티스토리 뷰

반응형

1. CI/CD는 무엇일까?

1) CI, CD란?

CI/CD는 코드 병합, 테스트, 배포를 자동화하는 걸 이야기합니다.

  • CI(Continuous Integration)는 지속적 통합을 의미
  • CD는 지속적인 서비스 제공(Continuous Delivery), 배포(Continuous Deployment)를 의미
  • CI, CD는 각각 개념이 다르지만, 같이 구축되는 경우가 많아 CI/CD라고 묶임

 

(1) CI?

  • CI는 지속적 통합을 뜻하며, 일련의 통합 과정을 자동화하는 걸 의미
  • 그런데 CI는 어떤 경우 사용할까요?
A팀에 개발자가 5명 존재한다.
이 팀은 각각, 코드 작업을 완료하여 github에 push한다.
그리고 모인 코드는 병합을 거치게 된다.
그런데 병합 과정에서 동일한 코드를 수정한 경우 충돌이 발생하게 된다.
발생한 충돌을 해결하기 위해 수동으로 작업을 진행한다.

그 다음 배포를 해야하는데,
배포 하기에 앞서 코드에 문제가 없는 지 테스트를 진행한다.
그런데 코드에 치명적인 버그가 발생한다.
이 버그를 해결하기 위해 이 코드와 관련된 팀원이 일을 진행한다.

이처럼 A팀은 코드 푸시 -> 병합 -> 충돌 발생시 해결 -> 기능 테스트 작업을 매번 거친다.
  • A팀은 앞서 언급한 일련의 과정을 매번 수동으로 진행
  • 소규모 팀의 경우, 이 과정을 반복하는 게 어렵지 않겠지만, 팀이 성장함에 따라 과정의 규모는 커짐
  • 규모가 커질수록 투자하는 시간이 증가하게 되고, 이는 배포에 영향을 줌
  • 하지만 CI를 이용한다면 이 과정을 자동화시켜 시간을 절약

 

(2) CD?

  • CD는 지속적 서비스 제공 & 배포 두가지를 의미하는데, 이 둘의 차이는 배포를 자동으로 하는지 여부
  • 배포란 사용자에게 소프트웨어를 전달하는 걸 뜻하며, 지속적 배포는 작업이 마칠 때마다 자동으로 배포
  • CD를 진행하기에 앞서, 코드를 병합하고 테스트하는 CI가 우선
  • CI/CD는 개발 ~ 배포에 이르는 모든 단계를 자동화하는 걸 의미하며, 이러한 일련의 과정을 CI/CD 파이프라인이라고 함

그렇다면 이러한 CI/CD의 장점은 무엇이 있을까요?

 

(3) CI/CD의 장점

  • 코드에서 발생하는 버그 발견, 코드 테스트가 자동화되므로 배포 간격이 짧아짐
  • 각 개인이 코드를 병합할 때마다 자동으로 테스트를 거치므로, 버그 발생 가능성이 낮아짐
  • 코드 배포 및 체크가 자동화되므로, 최종 코드 확인에 필요한 시간이 단축됨
  • 매 작업마다 테스트가 진행되므로 버그를 초기에 발견할 수 있으며 이는 버그의 빠른 해결에 도움이 됨

CI/CD가 무엇인지 알아보았으니 CI/CD의 대표적인 툴인 github actions를 다음 글에서 작성해보도록 하겠습니다.

 

반응형
댓글
공지사항