지난 프로젝트를 하면서 서버 개발자들이 계속 CI/CD에 대해 언급하는 것을 들었다.
낯설기만 했던 그 용어, 무언가를 자동화하는 거라고만 알고 있던 그 용어를 이번에 정리해보려고 한다.
CI/CD
는 간단히 말해 어플리케이션 개발 단계에서부터 배포까지의 과정을 자동화하여 조금 더 효율적으로 사용자에게 빈번이 배포할 수 있도록 만드는 것을 의미한다.
CI/CD
는 Continuous Integration (지속적인 통합)
과 Continuous Deployment(Delivery) (지속적인 전달/배포)
을 함께 이르는 말인데, 하나씩 따로 살펴보자.
CI(지속적인 통합)
은 버그 수정, 혹은 새로운 기능들이 메인 레포지토리에 주기적으로 빌드되고 테스트 되어 머지되는 것을 의미한다.
CI의 핵심에는 크게 2가지가 있다.
빌드
가 성공적으로 되는지, 또한 새로 추가된 코드가 기존 시스템에 다른 버그를 일으키지는 않는지 자동으로 테스트
까지 되어야한다. 빌드
와 테스트
과정을 팀에서 마련한 CI Server
가 수행한다. CI를 거친 코드들을 개발자가 직접 수동적으로 배포하는 것을 Continurous Delivery
,
배포까지 모두 자동화시키는 것이 Continous Deployment
인데 회사/팀마다 얼마만큼의 자동화를 하냐가 다르기 때문에 두 개념을 혼용해서 CD라고 칭한다.
CI/CD라는 이름이 낯설어서였는지 제대로 알아보기 전에는 그 필요성을 잘 체감하지 못했는데, 예전에 프로젝트를 배포하며 아주 약간의 변경사항이 있을 때마다 따로따로 빌드를 하고, 배포를 하는 과정이 여간 불편한 것이 아니었는데 CI/CD 파이프라인을 제대로 한 번 마려해둔다면 확실히 효율성이 제고될 것이라는 생각이 들었다.
보통 Jenkins, Buildkite, Github actions 등의 툴을 이용해서 이 CI/CD 파이프라인을 마련한다.
필자는 Github Actions를 이용하여 프론트엔드 프로젝트의 CI/CD 파이프라인 설계를 연습해보려고 한다. 해당 내용은 추후 추가할 예정이다.
CI/CD 5분 개념 정리 (현업에서 쓰는 개발 프로세스)
[Front-End] CI/CD에 대해서 알아보고 배포 준비하기
배포 자동화? CI/CD가 무엇일까?