CI/CD 파헤치기
개발자로 공부를 시작하면서 비교적 CI/CD에 대해서 최근에 알게되었는데
CI/CD에 대해서 공부하며 파헤치는 시간을 갖겠습니다.
CI (Continuous Integration)
소프트웨어 공학에서 지속적 통합(continuous integration)은 지속적으로 품질 관리(Quality Control)를 적용하는 프로세스를 실행하는 것이다.
- 작은 단위의 작업, 빈번한 적용. 지속적인 통합은 모든 개발을 완료한 뒤에 품질 관리를 적용하는 고전적인 방법을 대체하는 방법으로서 소프트웨어의 질적 향상과 소프트웨어를 배포하는데 걸리는 시간을 줄이는데 초점이 맞추어져 있다. 대표적인 CI 툴에는 젠킨스(Jenkins)가 있다.
출처: 위키백과
CI는 직역하면 지속적인 통합이고 한마디로 빌드와 테스트 자동화라고 할 수 있다.
모든 개발이 끝난 후 품질을 관리하는 고전적 방식의 단점을 해소하기 위해 나타난 개념으로, 코드 변경사항이 정기적으로 빌드 및 테스트되어 공유 리포지토리에 통합되는 과정을 통해 계속 품질을 유지하면서 개발을 진행하는 방법이다
이러한 CI의 핵심 목표는 버그를 신속하게 찾고, 소프트 웨어의 품질을 개선하고,
새로운 업데이트의 검증 및 릴리즈의 시간을 단축시키는 것에 있습니다.
CD (Continuous Delivery / Continuous Deployment)
지속적 배포(Continuous delivery)는 팀이 짧은 주기로 소프트웨어를 개발하는 소프트웨어 공학적 접근의 하나로, 소프트웨어가 언제든지 신뢰 가능한 수준으로 출시될 수 있도록 보증하기 위한 것이다.
- 소프트웨어를 더 빠르게, 더 주기적으로 빌드하고 테스트하고 출시하는 것을 목표로 한다. 이러한 접근은 더 많은 증분 업데이트를 업무 애플리케이션에 적용할 수 있게 함으로써 변경사항의 배포에 대한 비용, 시간, 위험을 줄일 수 있게 한다.
출처 : 위키백과
CD는 Continuous Delivery 혹은 Continuous Depolyment 두 용어 모두의 축약어 입니다.
해석하자면, 지속적인 서비스 제공 혹은 지속적인 배포 라는 의미인데
Continuous Delivery는 공유 레포지토리로 자동으로 Release 하는 것,
Continuous Deployment는 Production 레벨까지 자동으로 deploy 하는 것을 의미합니다.
정리하자면, CI가 새로운 소스코드의 빌드, 테스트, 병합까지를 의미하였는데,
CD는 개발자의 변경 사항이 레포지토리를 넘어, 고객의 프로덕션(Production) 환경까지 릴리즈 되는 것을 의미합니다.
CI/CD가 필요한 이유
오늘날과 같이 다차원으로 끊임없이 진화되고 있는 개발 환경을 고려할 때, 조직들의 가장 큰 과제 중 하나는 시장 변화 및 고객 요구에 신속하고 유연하게 대응할 수 있는 개발안을 구축하는 것이다. 이러한 문제에 대한 중추적인 솔루션인 Agile 문화와 DevOps의 한 부분으로써 CI/CD개념이 출현한 것이다. 한마디로 속도와 효율 때문이라고 할 수 있겠다.