[Dev] CI/CD란?

bien·2024년 4월 1일
0

배포

목록 보기
1/3

CI/CD의 의미

  • CI/CD
    • 애플리케이션 개발 단계부터 배포 때까지 이 모든 단계들을 자동화를 통해 더 효율적이고 빠르게 사용자에게 빈번히 배포할 수 있도록 만드는 것.
    • CI: Continuous Integration: 지속적 통합
    • CD: Continuous Delivery 지속적 제공
    • CD: Continuous Deployment 지속적 배포

CI (Continous Integration)

  • CI(Continous Integration, 지속적인 통합)
    • 버그 수정이나 새로 만드는 기능들이 메인 repository에 빌드되고 테스트되어 머지되는 것을 말한다.
    • 처음 1991년 Grady Booch에 의해 사용되어지다가, 이후 extreme programming에 채택되어 사용되어 왔다.
  • 두가지 핵심 포인트
    1. 코드 변경사항을 주기적으로 빈번하게 머지(merge)해야 한다.
      • 두명의 개발자가 동일한 소스파일 위에 서로 다른 코드를 오랜기간 작성하다가, 이후 통합해서 적용해 나갈건지 맞추는데 많은 노력이 든다. (이는 새로운 기능 개발보다 merge에 더 많은 시간이 소요되게 만든다.)
      • 따라서 버그 수정, 혹은 새로운 기능 구현할 때는 이 기능을 작은 단위로 나누어 개발하고 통합해 나가는 것이 중요하다.
    2. 통합을 위한 단계 (빌드, 테스트, 머지)의 자동화
      • 주기적으로 머지된 코드의 변경사항이 자동으로 빌드되어 코드 변경사항 이후에도 빌드가 성공적으로 이루어지는지 확인되어야 한다.
      • 또한 변경사항이 기존의 시스템에 다른 버그를 초래하지 않았는지 테스트되어야 한다.
  • 장점
    • 개발 생산성 향상
    • 버그 수정이 용이
    • 문제점을 빠르게 발견
    • CI를 잘 작성하기 위해서는 모든 개발자들이 유닛 테스트를 포함하므로 프로젝트의 대부분의 코드가 자동으로 테스트가 이루어져 더 안정성있는 제품이 개발될 수 있다!

CD (Continuous Delivery, Deployment)

마지막 배포 단계에서 어떻게 하면 자동화하여 배포를 할 수 있을지를 고민하는 단계

  • CD(Continuous Delivery, 지속적인 제공)
    • CI를 통해 주기적으로 merge되어 변경된 사항들이 자동으로 Build되고 Test되었다면, 배포 시 준비단계를 거치고 문제가 없는지 직접 개발자가 검증한 이후 최종적으로 배포를 결정하면, 수동적으로 배포하는 단계
  • CD(Continuous Deployment, 지속적인 배포)
    • Release가 준비 되자말자 자동으로 사용자에게 배포하도록 하는 것.
      • delivery와 유사하지만 최종단계의 자동화 여부에 따라 달라진다.

CI/CD 파이프라인

  1. 빌드 (소프트웨어 컴파일)
  2. 테스트 (호환성 및 오류 검사)
  3. 릴리즈 (버전 제어 저장소의 어플리케이션 업데이트)
  4. 배포 (개발에서 프로덕션 환경으로의 변환)
  5. 규정 준수 및 유효성 검사

CI/CD 파이프라인의 목표는 빌드, 테스트 및 제공을 수동 처리보다 더 빠르고 안정적우로 만드는 것이다.


Reference

profile
Good Luck!

0개의 댓글