CI/CD (Continuous Integration/Continuous Delivery)란 자동화하여 애플리케이션을 더욱 짧은 주기로 고객에게 제공하는 방법
CI/CD의 기본 개념은 지속적인 통합, 지속적인 서비스 제공, 지속적인 배포.
CI/CD는 새로운 코드 통합으로 인해 개발 및 운영팀에 발생하는 문제(일명 "통합 지옥(integration hell)")를 해결하기 위한 솔루션
CI/CD 의 차이
CI(Continous Integration, 지속적 통합) : 개발자를 위한 자동화 프로세스인 지속적인 통합(Continous Integration), 지속적인 통합이 제대로 구현되면 애플리케이션 코드의 새로운 변경 사항이 정기적으로 빌드 및 테스트를 거쳐 공유레포지토리에 병합됨. 따라서 여러 명의 개발자가 동시에 어플을 개발하므로써 서로 충돌할 수 있는 문제를 이 방법으로 해결할 수 있음
CD(Continous Delivery/Deployment, 지속적 제공) : Delivery와 Deployment는 상호교환되어 사용됨. 두 가지 의미 모두 파이프라인의 추가 단계에 대한 자동화를 뜻하지만 때로는 얼마나 많은 자동화가 이루어지고 있는지를 설명하기 위해 별도로 사용됨
지속적인 제공이란 개발자들이 어플리케이션에 적용한 변경사항이 버그테스트를 거쳐 레포지토리에 자동으로 업로드되는것을 의미하며, 운영팀은 이 레포지토리에서 어플리케이션을 실시간 프로덕션 환경으로 배포함. 이는 개발팀과 비즈니스팀간의 가시성 및 커뮤니케이션 부족 문제를 해결해 줌
지속적인 배포(또다른 의미의 CD;Continous Deployment) 란 개발자의 변경사항을 레포지토리에서 고객이 사용가능한 프로덕션 환경까지 자동으로 릴리스하는것을 의미
CI/CD tool 예시
Jenkins : build, test, deploy 등의 전반적인 CI/CD 를 할 수 있게 만드는 Open-Source tool
Travis CI : Cloud-based tool, Github 기반 open-source project에 대중적인 CI tool
AWS CodePipeline : Amazon WebServices에 의해 제공되는 cloud-based tool