CI/CD (Continuous Integration/Continuous Delivery)는 쉽게 말해서 개발 단계를 자동화하여 더욱 짧은 주기로 고객에게 제공하는 방법이라고 볼 수 있습니다. 말 그대로 지속적인 통합, 제공, 배포를 통해 개발팀과 운영팀 사이에 발생하는 문제(일명 "통합 지옥(integration hell)")를 해결하기 위한 솔루션입니다.
CI는 지속적인 통합(Continuous Integration)을 의미합니다. 새로운 변경 사항이 정기적으로 빌드 및 테스트를 거쳐 공유 저장소에 병합됩니다. 따라서 여러 명의 개발자가 동시에 개발과 관련된 코드 작업을 하는 경우에 충돌에 대한 이슈를 해결할 수 있습니다.
CD는 지속적인 서비스 제공(Continuous Delivery) 또는 지속적인 배포(Continuous Deployment)를 의미하며, 지속적인 제공이란 개발자들이 새로 적용한 변경 사항이 테스트를 거쳐서 저장소에 자동으로 업로드되는 것을 뜻하며, 운영팀은 이 저장소에서 실시간으로 프로덕션 환경으로 배포를 진행할 수 있습니다. 이는 개발팀과 타 부서와의 소통 비용을 낮춰주고 원할한 소통을 가능케 합니다. 추가로 고객이 바로 사용 가능한 프로덕션 환경까지 자동으로 릴리즈가 되기 때문에 지속적인 서비스 제공이 가능하고, 그 덕분에 시장 반응 또한 빠르게 확인할 수 있기 때문에 경쟁력을 높일 수 있다는 장점이 있습니다.
CI/CD와 관련해서 가장 널리 알려진 오픈소스 툴은 Jenkins가 있습니다.
꼬리 질문
CI/CD 환경을 구축해본 경험이 있으신가요?
Vercel, Github Action
CI/CD는 DevOps의 라이프사이클 중 단계로 알려져 있는데, DevOps의 의미에 대해서 간단하게 설명해주세요
development인 개발 주체와 operation인 운영 주체의 합성어로 그 둘 사이의 소통, 협업, 통합 및 자동화 등을 강조하는 소프트웨어 개발 방법론으로 인지하고 있습니다. CI/CD 외에 애자일 방법론 등과도 관련이 있다고 볼 수 있습니다.