-
CI/CD에 대한 이해Programming/etc. 2022. 2. 10. 21:09
CI / CD란, 지속적인 통합 및 배포는 신속하고 지속적인 소프트웨어 제공을 통한 고객 만족이라는 애자일 선언문(Agile Manifesto)의 12가지 원칙 중 첫번째 원칙이자 DevOps의 중요한 요소이기도 하다.
보통 DevOps에서 사용 되는 CI/CD의 경우 Monolithic Architecture(하나의 단일 시스템 구조) 보다 MSA(Micro Service Architecture, 모듈 느낌의 작은 시스템이 상호작용(API)하여 하나의 거대한 시스템을 이루는 구조)에 더 적합한 방식이라고 할 수 있는데, 구성된 마이크로 서비스 아키텍처에 API로 소프트웨어를 연결 하는 경우가 많다.
여기서 CI(Continuous Intergration; 지속적인 통합)은 애플리케이션의 코드가 변경 혹은 수정이 되면 주기적으로 빌드 및 테스트가 시행되고 문제가 없다면 메인 레포지토리에 통합되는 것을 말한다.
보통 여러 개발자가 협업하여 서비스를 개발하는 경우 프로그램 소스코드의 버전관리가 매우 중요한데, 수 많은 버전이 커밋되고 쌓이게된다. 이럴 경우에 자동화된 빌드, 테스트와 같은 통합은 아주 유용하다고 할 수 있다.
다음으로 CD(Continuous Delivery; 지속적 배포)는 CI를 통하여 자동으로 빌드되고 테스트된 소스코드들이 쌓인 레포지토리에서 자동으로 릴리즈(Release) 되는 것이고 여기서 수동으로 프로덕션 환경에 배포(Deploy)하지만 이와 반대로 자동으로 배포 되는 것을 Continuous Deployment라고도 한다.
이렇게 CI/CD의 의미에 대하여 간단히 알아보았는데, 결국 이 두가지의 의미는 개발자들이 협업을 통하여 소스 코드를 작성하여 커밋하면, 저장소에서 자동으로 빌드와 테스트를 수행하고 배포까지 수행되는 것을 말한다고 볼 수 있다. 그러므로 궁극적으로 각 레벨에서 소요되는 시간의 절약과 노동의 감소 그리고 각자가 본연의 업무 이외에 신경 쓸 일을 줄여주어 생산성이 올라가며 테스트하며 수동으로 디버깅 해야하는 수고까지 덜어주기 때문에 규모가 커지는 MSA 프로젝트 일수록, 인원이 많아지는 팀 혹은 회사 일 수록 생산성의 차이가 급격히 날 것으로 예상 할 수 있다.
'Programming > etc.' 카테고리의 다른 글
Garbage Collector, Garbage Collection에 대하여 (0) 2022.03.29 Twelve-Factor(트웰브 팩터) 방법론 (0) 2022.03.28 CDN에 관하여 (0) 2022.03.18 CORS(Cross-Origin Resource Sharing)에 대하여 (0) 2022.02.10 2021 테크 컨퍼런스, 세미나 링크 (0) 2022.02.10