CI / CD 에 대한 설명은 개발자 면접에서 자주 나오는 질문 중의 하나!
"Continuous Integration", 지속적인 통합
"빌드와 테스트 자동화"
어플리케이션의 새로운 코드 변경 사항이 정기적으로 빌드 및 테스트 되어 공유 레포지토리에 통합하는 것
변경 사항을 정기적으로 commit하여, 모든 사람에게 동일 작업 기반을 제공
지속적으로 서비스하는/현재 개발 중인 어플리케이션은 기능 추가 시마다 commit 등을 날려 레포지토리에 버전 업데이트를 한다.
여기서 CI 의 자동화된 빌드 & 테스트는 원천 소스코드의 충돌 등... 을 방어해줄 수 있다.
기존의 어플리케이션 : 모든 기능을 포함하는 하나의 거대한 서비스
MSA : 작은 기능별로 서비스를 잘게 쪼개어 개발하는 형태
MSA 환경에서는 대부분 Agile(소규모 기능 단위로 빠르게 개발 & 적용을 반복하는 개발방법론) 방법론이 적용되기 때문에, 기능 추가가 매우 빈번하게 발생
버그의 신속한 발견/해결
소프트웨어의 품질 개선
새로운 업데이트의 검증
배포 시간 단축
"Continuous Delivery & Continuous Deployment", 지속적 서비스 제공 혹은 지속적 배포
Continuous Delivery
Continuous Deployment
"배포 자동화"
CI : 새로운 소스코드의 빌드, 테스트, 병합까지를 의미
CD : 개발자의 변경 사항이 레포지토리를 넘어, 고객의 프로덕션(Production) 환경까지 배포되는 것을 의미
예시
Jenkins
Travis CI
Bamboo
...
참고: CI/CD란 무엇인가 (Feat. DevOps 엔지니어)
참고: CI/CD 기본개념과 가장 많이 쓰이는 도구 5가지
참고: [CI/CD] CI/CD란? - 지속적 통합(Continuous Integration)/지속적 배포(Continuous Deployment) 기본개념