본문 바로가기
CICD

CI/CD 개념 정리 (w 드림코딩)

by weero 2021. 9. 18.

 

(유튜브 채널 드림코딩 by 엘리의 영상을 보고 정리하는 글)

 

요즘처럼 빠르게 진화하고 변화하는 시대에 어떻게 하면 시장과 고객의 요구에 빠르게 반응해서 제품을 출시, 업데이트할 것인가가 큰 과제이다.

이것을 위해 세계적으로 많은 기업들이 CI/CD를 개발 프로세스로 사용하고 있다.

 

 

 

CI/CD란?

어플리케이션 개발부터 배포 때까지 모든 단계를 자동화를 통해 조금 더 효율적이고 빠르게 사용자에게 빈번히 배포할 수 있도록 만드는 것이다.

 

CI(Continuous Integration)

지속적인 통합

버그수정이나 새로 만드는 기능이 메인 레파지토리에 주기적으로 빌드되고 테스트되어서 머지되는 것!

포인트

  1. 코드 변경사항을 주기적으로 빈번하게 머지해야 한다.
    머지를 너무 안하면 새로운 기능을 개발하기 위해 코드를 작성하는 시간보다 머지 충돌을 해결하는데 더 오래 걸릴 수 있다.
    따라서 기능을 어떻게 작은 단위로 나눠서 메인 레파지토리에 반영하거나, 작은단위로 나눠서 사용자에게 배포하는 등 작은 단위로 나눠서 개발하는 것이 중요하다.
  2. 통합을 위한 단계(빌드, 테스트, 머지)의 자동화
    메인 레파지토리에 개발자들이 주기적으로 코드를 머지한다.
    자동으로 팀의 CI 스크립트를 통해 추가된 코드와 함께 빌드하고, 여러 테스트를 실행한다.
    잘 되면 Green 사인이 나오면 무사히 통과되어 배포할 때 반영이 되고, 어느 단계에서 문제가 생기면 Red 사인이 나온다.

 

CI 원칙을 따라갔을 때의 장점?

1. 개발 생산성 향상

주기적으로 머지를 하기 때문에 머지충돌을 피할 수 있어 개발 생산성이 올라가고,

2. 버그 수정 용이, 문제점을 빠르게 발견

머지되는 코드들은 자동으로 빌드, 테스트가 되기 때문에 코드의 결함이 빠르게 발견되고 수정할 수 있다.

작은 단위로 머지하기 때문에코드의 변경사항이 적기 때문이다.

3. 코드의 퀄리티 향상

모든 개발자들이 자신의 새 코드에 대해서 유닛 테스트를 포함해야 하기 때문이다.

 

 

 

 

CD(Continuous Delivery or Deployment)

지속적인 제공 or 배포

마지막 배포 단계에서 자동화하는 것

 

  • CI 주기적으로 머지된 변경 사항들이 자동적으로 빌드, 테스트
  • Prepare Release 릴리즈할 준비과정
  • 개발자나 검증팀이 준비된 릴리즈가 정상적인지, 문제가 없는지 직접 검증하고 사용자에게 배포해도 되겠다는 결론이 나면 수동적으로 배포함(Continuous Delivery)
  • 릴리즈가 준비되자마자 자동으로 사용자에게 배포하도록 만들어 둠(Contiuuous Deployment)

→ 최종 단계가 자동화되었는지 아닌지에 따라 Delivery, Deployment가 나뉜다.

 

 

 

CI/CD 파이프라인

Code BuildTestRelease Deploy