(이미지 출처 : https://www.synopsys.com/glossary/what-is-cicd.html)
어플리케이션 개발 단계부터 배포까지의 과정을 자동화 해서,
빠르고 효율적으로 사용자에게 배포할 수 있도록 만드는 과정을 CI/CD라고 부른다.
해석하면, "지속적인 통합" 이다.
기능을 새롭게 추가하거나 버그를 잡으면서 수정된 코드들이
main Repository에 주기적으로 빌드되고 테스트되면서 merge되는 것을 의미한다.
CI에는 두가지 포인트가 있다.
코드를 merge시키면, 자동으로 Main repository가 빌드가 되고, 빌드에 성공하면 unit test, integration test등등 여러 테스트를 거치게 된다.
빌드와 테스트에 성공하면, 수정된 코드는 나중에 배포할 때에 반영된다.
새로운 코드가 빌드, 테스트 과정을 거치면서 문제가 있다면, 문제를 개발자에게 알린다.
따라서, CI를 사용하면, 빠르고 안정적인 제품 개발이 가능하다.
해석하면, "지속적인 제공(배포)" 이다.
지속적 제공, 지속적 배포 모두 마지막의 배포 단계 프로세스를 의미한다.
CI를 통해서 코드의 검증이 끝났다면 배포가 준비되어서,
사용자에게 배포되는 과정을 거친다.
이때, 배포 준비된 코드를 개발자가 검수하고 수동으로 배포하면 Continuous Delivery,
바로 자동으로 배포하면 Continuous Deployment 라고 부른다.
Delivery와 Deployment는 비슷하지만,
최종 단계의 자동화 여부에 따라서 살짝씩 달라질 수 있다.
CI/CD가 완벽히 분리된 것이 아니라, 대부분의 조직이 CI와 CD를 거쳐서 배포하므로, 두개를 묶어서 부른다
조직마다 얼마만큼의 자동화를 하느냐에 따라서 달라지므로,
CI/CD라고 해서 모두 같은 프로세스를 거치지는 않는다.
공대생답지 않게 문장을 깔끔하게 잘 쓰시네요