CI/CD는 Continuous Integration(지속적인 통합)과 Continuous Delivery(지속적인 전달)/Continuous Deployment(지속적인 배포)의 약자로, 소프트웨어 개발 과정에서 코드의 변경 사항을 자동으로 빌드, 테스트, 배포하는 과정을 의미합니다.
간단하게 설명하면, 개발자들이 코드를 변경하거나 추가할 때마다, 이 변경 사항이 문제 없이 작동하는지 자동으로 확인하고, 문제가 없으면 자동으로 서버에 배포하는 흐름을 말합니다.
즉, CI/CD는 테스트(Test), 통합(Merge), 배포(Deploy)의 과정을 자동화하는 걸 의미합니다.
CI/CD 과정은 일반적으로 다음과 같은 과정으로 진행됩니다. 이 그림은 CI/CD 파이프라인을 시각적으로 표현한 것입니다. 각 단계는 코드가 작성되고 배포되는 전체 과정을 나타내며, 자동화된 흐름을 보여줍니다.

Continuous Delevery는 CI 시스템을 사용하여 배포 전 단계까지는 자동화되어 있지만, 최종 배포는 사람이 직접 확인 후 배포하게 됩니다.
Continuous Deployment는 CI 시스템을 사용하여 자동으로 빌드와 테스트를 진행할 뿐만 아니라 테스트를 모두 통과하면 자동으로 운영 서버에 배포됩니다. 배포 과정이 완전히 자동화되어 개발자 개입을 최소화하여 빠르고 빈번한 기능 수정 및 업데이트 배포가 가능합니다.
서비스를 운영하면서 빈번하게 코드를 수정하게 되고, 새로운 기능을 추가할 때마다 코드를 작성하고, GitHub 같은 곳에 커밋하고 병합한 후, 최종적으로 배포를 해야 합니다. 배포할 때는 AWS EC2 같은 서버에 직접 접속해서, 새로운 코드를 내려받고 실행하는 작업을 수동으로 해야 하는데, 이 과정을 매번 반복하는 것은 매우 번거롭고 귀찮습니다.
CI/CD는 이런 반복적인 배포 과정을 자동화하는 도구입니다. 예를 들어, 코드 수정이 있을 때마다 자동으로 서버에 배포되도록 설정해두면, 사람이 직접 서버에 접속해서 작업하지 않아도 새로운 코드가 배포되기 때문에 훨씬 편리합니다.
코드가 변경될 때마다 자동으로 빌드와 테스트가 진행되므로, 문제를 빠르게 발견하고 해결할 수 있습니다. 이를 통해 코드 품질을 유지하면서도 신속한 피드백을 제공받을 수 있어 개발자가 오류를 빨리 수정할 수 있습니다.
코드 병합과 배포 과정이 자동화되기 때문에 수동으로 처리하는 시간을 절약할 수 있습니다. 이로 인해 팀이 더 빠르게 작업을 완료하고, 새로운 기능을 자주 배포할 수 있게 되어 개발 속도가 크게 향상됩니다.
배포 과정이 자동화되어 수동으로 배포할 때 발생할 수 있는 실수나 설정 오류를 줄여줍니다. 이는 안정적이고 빈번한 배포가 가능하도록 도와줍니다.
여러 개발자들이 동시에 작업할 때 코드 충돌이나 통합 문제를 미리 예방할 수 있습니다. 자동화된 테스트와 통합 과정 덕분에 팀 간 협업이 원활해집니다.
새로운 기능과 버그 수정 사항을 빠르고 자주 사용자에게 제공할 수 있어 사용자 경험이 개선됩니다. 신속한 배포는 사용자에게 더 나은 서비스를 제공하는 데 기여합니다.