[Study] CI / CD?

조혜인·2022년 8월 22일
post-thumbnail

차근차근 배워나가는 중으로 블로그들을 보고 공부한 것을 정리한 글입니다.

📌 CI(Continuous Integration)

  • 직역하면 지속적인 통합이라는 의미이다. 애플리케이션의 버그 수정이나 새로운 코드 변경사항이 정기적으로 빌드 및 테스트되어 공유 레포지토리에 통합(merge)되는 것을 의미한다.
  • CI를 적용함으로써 버그를 신속하게 찾아 해결하고 소스코드의 충돌을 방지하여 소프트웨어의 품질을 향상시킬 수 있다.
  • 새로운 업데이트의 검증 및 릴리즈 시간을 단축할 수 있다.

CI 환경 조건

  • 다수의 개발자가 git과 같은 형상관리 툴을 공유하여 사용하는 환경

    • 다수의 개발자가 개발을 진행하다보니 공유 레포지토리에 날마다 수많은 commit들이 생성되게 된다. 그럴 때마다 기능 별로 빌드 및 테스트, 통합까지 진행하기엔 매우 번거롭기에 자동화된 빌드 및 테스트는 소스코드들의 충돌 등을 방어할 수 있다.
  • MSA(Micrio Service Architecture)환경

    • 이전에 블로그에서 설명한 적이 있었던 그 MSA환경이다. MSA는 작은 단위의 서비스 여러 개를 모아 하나의 시스템을 구성한다. MSA 환경에서는 대부분 애자일 방식으로 개발이 진행되기 때문에 기능 추가가 매우 빈번하게 발생된다. 이러한 상황에서 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를 위하여 사용했던 툴이라니 새삼 백엔드를 공부하면서 중간중간 들어보거나 한 번쯤 봤던 부분들이 어떤 역할을 하는 것인지를 알게되는 것이 정말 재밌는 것 같다.

profile
코딩은 역시 재밌군

0개의 댓글