Software Development

[CI/CD] CI/CD란

프로그래민 2020. 12. 21. 15:06
반응형

CI/CD란?

CI/CD란 지속적인 통합(Continuos Integration), 지속적인 서비스 제공(Continous Delivery), 지속적인 배포(Continous Deployment)의 약자이다. CI/CD는 새로운 코드 통합 문제를 해결하기 위한 솔루션으로써, 애플리케이션의 개발 단계를 자동화하여 애필리케이션을 보다 짧은 주기로 고객에게 제공하는 방법이다. 즉, 다시 말해 짧은 주기로 개발중인 애플리케이션을 배포하고 그 과정을 자동화 하는 것이다. CI/CD의 가장 큰 특징은 애플리케이션의 통합 및 테스트 단계에서부터 애플리케이션의 제공 및 배포까지 전체에 걸친 지속적인 자동화와 지속적인 모니터링이다. 대표적인 CI/CD tool로는 Jenkins, Travis CI, Bamboo 등이 있다.

CI/CD의 파이프라인

 

CI(Continuous Integration, 지속적 통합)

  • 여러 개발자들이 공유 브랜치에 대해 병합하는 작업을 자동화한 프로세스
  • 새로운 코드 변경 사항에 대해 정기적인 Build 및 Test(Unit Test 및 통합 Test)를 거쳐 공유 레포지토리에 병합되는 과정
  • 클래스와 기능에서부터 전체 애플리케이션을 구성하는 서로 다른 모듈에 이르기까지 모든 것에 대한 테스트
  • 테스트에서 발생한 기존 코드와 신규 코드 간의 충돌 방어

 

CD(Continuous Delivery, 지속적 서비스 제공)

  • CI 파이프라인 이후의 유효한 코드를 레포지토리에 자동으로 릴리즈하는 과정
  • 프로덕션 환경으로 배포할 준비가 되어있는 코드베이스를 확보하는 것이 목적

 

CD(Continuous Deployment, 지속적 배포)

  • CI/CD 파이프라인의 마지막 단계
  • 애플리케이션을 프로덕션으로 릴리즈하는 작업을 자동화하는 과정
  • 개발자가 애플리케이션 변경 사항을 작업한 후 몇 분 이내에 애플리케이션을 자동으로 실행할 수 있는 것을 의미

 

CI/CD에서 생성되는 데이터 종류

  • 소스 코드 정보

    신규로 추가한 라인 수, 변경된 라인 수, 소스 코드 파일 개수, 커밋 개수 등
  • 소스코드 정적 분석 데이터
  • 소스코드 빌드 데이터

    작업별 빌드/테스트 시간
    빌드 성공/실패율, 빌드 로그
    빌드 테스크 리포트, 패키지 정보, 버전 정보
    빌드 옵션, 메모리 덤프 데이터
    빌드 테스크 의존성 정보
  • 빌드 시스템 정보

    사용자 시스템 정보(CPU, 메모리 등)
    CPU 사용량, 메모리 사용량, 디스크 사용량
    빌드 대기 시간, 빌드 장비 활용 시간

 

출처
www.redhat.com/ko/topics/devops/what-is-ci-cd
engineering.linecorp.com/ko/blog/build-a-continuous-cicd-environment-based-on-data/
devuna.tistory.com/56

반응형