CI/CD
CI/CD는 애플리케이션 개발 단계를 자동화하여 애플리케이션을 보다 짧은 주기로 고객에게 제공하는 방법이라고 함.
- 지속적인 통합(Continuous Integration)
- 지속적인 서비스 제공(Delivery)
- 지속적인 배포(Deployment)
인테그레이션 헬을 해결하기 위해 나온 방법론이라고 한다.
인테그레이션 헬 : 그들 각자의 코드를 프로덕션에서 통합할 때 일어나는 상황을 얘기함. 코드 통합하려면 몇시간씩 걸리고, 당연히 충돌이 나기 때문에 완전해질때까지 고쳐야 한다. 그래서 CI를 통해 짧은 주기로 통합하자는거다.
- CI/CD는 애플리케이션의 통합 및 테스트 단계에서부터 제공 및 배포에 이르는 애플리케이션의 라이프사이클 전체에 걸쳐 지속적인 자동화와 지속적인 모니터링을 제공한다.
- 이러한 구축 사례를 일반적으로 "CI/CD 파이프라인"이라 부른다.
CI와 CD 차이
CI
- CI를 성공적으로 구현할 경우 앱에 대한 새로운 코드 변경 사항이 정기적으로 빌드 및 테스트되어 공유 레포지토리(Gitlab 등)에 통합된다.
- 여러 명의 개발자가 동시에 코드 작업을 할 경우 서로 충돌할 수 있다. 비슷한 부분은 건드릴 수도 있기 때문이다. CI를 통해 주기적으로 빌드하고 테스트하면 이런 문제를 빠르게 해결 할 수 있다.
CD
- CD는 지속적인 서비스 제공(Continuous Delivery) 또는 지속적인 배포(Continuous Deployment)를 의미한다. 이 두 용어는 상호 교환적으로 사용된다.
- 두 가지 모두 파이프라인 단계에 대한 자동화를 뜻하지만, 얼마나 많은 자동화가 이루어지고 있는지를 설명하기 위해 별도로 사용될 때도 있다.
- Continuous Delivery란 개발자들이 앱에 적용한 변경 사항이 테스트를 거쳐 원격 레포지토리에 자동으로 업로드되는 것을 뜻한다.
- 업로드 이후 운영팀은 이 레포지토리에서 앱을 실시간 프로덕션 환경으로 배포할 수 있다. Continuous Delivery는 최소한의 노력으로 새로운 코드를 배포하는 것을 목표로 한다.
- Continuous Deployment란 개발자의 변경 사항을 레포지토리에서 프로덕션 환경까지 자동으로 릴리즈하는 것을 의미한다. CD를 통해 운영팀의 수동 배포 프로세스 과부하 문제를 해결할 수 있다.
따라서 CI/CD는 앱 개발에 지속적인 자동화 및 지속적인 모니터링을 추가하는 것을 의미한다.
참고 : 지속적 통합 vs 전달 vs 배포