차근차근 배워나가는 중으로 블로그들을 보고 공부한 것을 정리한 글입니다.
📌 CI(Continuous Integration)
- 직역하면 지속적인 통합이라는 의미이다. 애플리케이션의 버그 수정이나 새로운 코드 변경사항이 정기적으로 빌드 및 테스트되어 공유 레포지토리에 통합(merge)되는 것을 의미한다.
- CI를 적용함으로써 버그를 신속하게 찾아 해결하고 소스코드의 충돌을 방지하여 소프트웨어의 품질을 향상시킬 수 있다.
- 새로운 업데이트의 검증 및 릴리즈 시간을 단축할 수 있다.
CI 환경 조건
📌 CD(Continuous Delivery & Continuous Deployment)
- CD에는 Continuous Delivery 즉, 지속적인 제공이라는 의미와 Continuous Deployment인 지속적인 배포 라는 의미가 담겨져있다.
- CI를 통해 코드의 검증이 마쳐지면 사용자들에게 서비스를 배포할 단계가 된다. 이 때 배포를 수동적으로 진행하는 것이 Continuous Delivery이다.
- 배포할 준비가 되자마자 자동화를 통하여 배포를 진행하는 것을 Continuous Deployment라고 한다.
- 정리를 하자면, CD는 개발자의 변경 사항이 레포지토리를 넘어 고객에게까지 배포되는 것을 의미한다.
- CD는 개발자가 배포보다는 개발에 좀 더 집중할 수 있도록 도와주고 한 번의 클릭으로 수작업 없이 빌드, 테스트 및 배포까지의 자동화를 해준다.
📌 참고
CI/CD 자동화는 DevOps엔지니어의 핵심 업무에 속한다. DevOps엔지니어는 CI/CD를 위한 파이프라인을 구성하고 자동화 단계까지 끌어올린다. 또한 중간 중간에 개발자들의 개발 방향을 가이드하기도 하며 고객에게 안정적이고 신뢰성 높은 서비스를 제공한다.
이전 회사에서 Jenkins를 잠깐 사용했었는데, 로고가 집사처럼 생겨서 굉장히 재밌었던 기억이 있다. Jenkins가 DevOps엔지니어가 CI/CD를 위하여 사용했던 툴이라니 새삼 백엔드를 공부하면서 중간중간 들어보거나 한 번쯤 봤던 부분들이 어떤 역할을 하는 것인지를 알게되는 것이 정말 재밌는 것 같다.