CI/CD란?
IT/IT 기초 지식

CI/CD란?

728x90
반응형

CI ( Continuous Integration)

"지속적인 통합" 이라는 의미로 개발의 빌드 , 테스트 자동화 로 생각하면 된다. 

애플리케이션의 버그 수정이나 새로운 코드 변경이 주기적으로 빌드 및 테스트되면서 공유되는 레파지토리에 통합(merge)되는 것을 의미한다.

> 개발자들은 코드변경사항을 빈번하게 머지해야한다. 협업을 할 때 여러명의 개발자가 주기적으로 머지를 하지않는다면 머지충돌로 인해 많은 시간을 소모하게 될 것이다. 그렇기에 작업을 작은 단위로 나눠서 개발을 하여야하며 버그를 수정하거나 새로운 기능을 구현한다면 바로 반영을 해야한다.

> 따라서 CI는 통합을 위한 빌드 단계(빌드,테스트,머지)의 자동화를 제공한다. 예를 들어, Git을 통해 Push되면 자동으로 테스트와 빌드가 수행되어 안정적인 배포 파일을 만드는 과정을 제공한다. 빌드 또는 테스트가 실패하면 Push된 코드에 오류가 있다고 개발자에게 피드백을 주어 개발자는 오류에 대해 빠르게 대처할 수 있다. 

 

CI의 장점

  • 코드의 검증에 들어가는 시간이 줄어든다.
  • 개발 편의성이 증가한다.
  • 항상 테스트 코드를 통과한 코드만이 레포지터리에 올라가기 때문에 좋은 코드 퀄리티를 유지할 수 있다.

 

CD ( Continuous Delivery , Continuous Deployment)

"지속적인 제공" 이라는 의미와 "지속적인 배포"라는 의미가 있다. 배포의 자동화 라고 생각하면 된다.

 

>지속적인 제공은 CI의 작업을 거친 후, 리포지토리에 자동으로 업로드 되는 것을 뜻한다. 개발자나 검증팀은 리포지토리에 업로드된 준비된 Release가 정상적인지 문제가 없는지 이 검증을 한 후, 애플리케이션을 실시간으로 프로덕션 환경에 수동으로 배포할 수 있다. 이는 개발팀과 비즈니스 팀 간에 가시성과 소통 부족의 문제를 해결해준다. 지속적인 제공은 최소한의 노력으로 새로운 코드를 배포하는 것을 목표로 하고 있다.

>Delivery와 다르게 개발자나 검증팀이 준비된 Release를 확인하지 않고 배포까지 자동화 해두는 것을 Continuous Deployment라고 한다. 즉, Delivery와 비슷하지만 최종 단계가 자동화가 되었는지, 안 되었는지에 따라 다르게 부른다.

 

CD의 장점

  • 개발자는 배포보다는 개발에 더욱 신경 쓸 수 있도록 도와준다.
  • 개발자가 원클릭으로 수작업 없이 빌드,테스트,배포까지의 자동화를 할 수 있다.

 

CI/CD의 대표적인 툴

Jenkins, Buildkite, Github Actions, GitLab CI/CD, Bitbucket Pipelines, Circleci 등이 있다.

728x90
728x90