지난 프로젝트를 하면서 서버 개발자들이 계속 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가 무엇일까?