CI/CD라는 용어는 시도때도없이 언급되고 들려오는 용어다.

처음에는 정말 단순하게 '자동배포'만으로 생각했고 그거 그냥 설정만 조금 해놓으면 버튼하나눌러서 하는거 아닌가? 했었던 때도 있었다...

지금도 깊게 아는것도 아니고 개념만 아는 정도지만 Jenkins 포스팅 한 김에 정리해두려고 한다.

 

 

CI는 Countinous Integration, 지속적인 통합이라는 의미이다.

지속적인 통합은 새로운 코드 변경 사항이 정기적으로 빌드 및 테스트 되어 공유 Repository에 통합되는것을 의미한다.

CI를 잘 구현할 경우 변경 사항이 적용 될 때 여러명의 개발자가 동시에 작업을 하더라도 서로 충돌할 수 있는 문제를 해결할 수 있다.

즉, 팀에서 개발을 진행하는 경우 다수의 개발자에 의해 쌓이는 commit들을 그때마다 기능별 빌드/테스트/병합 하려면 번거롭고 이때마다 발생되는 오류에 대해 체크해야 하는 상황이 생길 수 있다.

CI는 그것을 자동화해 수고를 덜어주고 테스트를 통과한 코드만이 Repository에 올라가기 때문에 좋은 퀄리티 유지가 가능하다.

 

CI의 목표로는 버그를 신속하게 찾아 해결하고 소프트웨어 품질 개선, 새 업데이트의 검증 및 릴리즈 시간 단축을 목표로 한다고 볼 수 있다.

 

 

CD는 Countinous Deliverty, 지속적인 제공이라는 의미와 Continous Deployment, 지속적인 배포라는 의미가 있다.

CI에서 빌드, 테스트, 병합까지 수행하고 나면 CD는 그 후에 이루어져야 할 배포를 진행하는 것이다.

 

지속적인 제공이란 CI가 수행되고 난 후 개발자가 검증 한 뒤에 배포를 수동적으로 하는 경우다.

 

지속적인 배포의 경우 CI가 수행되고 난 후 문제가 없다면 자동화를 통해 바로 배포할 수 있도록 하는것이 지속적인 배포이다.

 

 

CI/CD가 잘 구축이 되어 있다면 개발자가 배포에 너무 많은 시간을 소요하지 않아도 된다는 장점이 생기기 때문에 개발에 더 집중할 수 있는 환경이 된다고 볼 수 있다.

 

대표적인 CI/CD 툴로는 Jenkins / Travis CI / Bamboo 등이 있다.

 

 

'Web' 카테고리의 다른 글

JWT 2. JWT 구현  (0) 2022.12.01
JWT 1. JWT란?  (0) 2022.11.25
Jenkins github webhook 연동  (0) 2021.12.28
Jenkins로 Spring Boot 프로젝트 빌드&배포하기  (0) 2021.12.24

+ Recent posts