Lined Notebook

CI/CD(Continuous Integration/Delivery & Deployment) ★★★

by yjym33

CI/CD(Continuous Integration/Delivery & Deployment)

 

CI/CD는 현대 소프트웨어 개발에서 핵심적인 엔지니어링 프랙티스 중 하나로, 소프트웨어를 빠르고 안정적으로 개발, 테스트, 배포하는 프로세스를 정의하고 자동화하는 방법을 나타냅니다.

 

CI (Continuous Integration): 지속적 통합


CI는 여러 개발자가 동시에 작업하는 환경에서 소스 코드의 변경 사항을 지속적으로 통합하고 테스트하는 프로세스입니다. 주요 목표는 코드 변경을 빈번하게 통합하여 품질 문제를 빠르게 감지하고 수정하는 것입니다.



주요 특징

  • 자동화된 빌드: 코드 변경이 발생하면 빌드 서버에서 자동으로 새로운 빌드를 수행합니다.
  • 자동화된 테스트: 단위 테스트, 통합 테스트 등의 테스트 스위트를 실행하여 코드 변경의 영향을 검증합니다.
  • 일관된 개발 환경: 모든 개발자는 동일한 코드베이스에서 작업하므로 일관성을 유지할 수 있습니다.

 

 

CD (Continuous Delivery & Continuous Deployment): 지속적 배포와 지속적 제공


Continuous Delivery (CD)


CD는 소프트웨어 변경 사항을 품질 보증을 거친 빌드와 테스트 단계를 거쳐 스테이징 환경에 배포하는 프로세스를 의미합니다. 배포할 준비가 되면 수동으로 프로덕션 환경에 배포됩니다.



Continuous Deployment (CD)


CD와 마찬가지로 소프트웨어 변경 사항을 품질 보증 단계를 거칩니다. 그러나 배포할 준비가 되면 자동으로 프로덕션 환경에 배포됩니다. 이것은 특히 빠른 소프트웨어 릴리스를 원하는 경우에 유용합니다.

 

CI/CD의 이점

 

1. 품질 향상

  • 지속적 통합을 통해 버그를 빨리 발견하고 수정할 수 있으며, 코드 품질을 향상시킬 수 있습니다.


2. 빠른 릴리스

  • 지속적 배포를 활용하면 릴리스 주기를 단축하고 새로운 기능과 개선 사항을 빠르게 사용자에게 제공할 수 있습니다.


3. 신뢰성 확보

  • 자동화된 테스트와 배포 프로세스를 통해 신뢰성을 확보하고, 인간 에러를 최소화합니다.


4. 빠른 피드백

  • 지속적인 통합 및 배포를 통해 피드백 루프를 단축하여 빠른 수정 및 개선이 가능합니다.

 

CI/CD 구성 요소

  1. 소스 코드 저장소: 코드 변경 사항의 출처로, Git과 같은 버전 관리 시스템을 사용합니다.
  2. 빌드 서버: 자동화된 빌드를 실행하고 빌드 아티팩트를 생성하는 서버입니다.
  3. 테스트 환경: 단위 테스트, 통합 테스트, E2E 테스트 등을 실행하는 환경입니다.
  4. 배포 스크립트 및 설정: 애플리케이션을 스테이징 또는 프로덕션 환경에 배포하기 위한 스크립트와 설정 파일입니다.
  5. 배포 환경: 스테이징 및 프로덕션 환경으로, 변경 사항을 배포하고 테스트할 수 있어야 합니다.
  6. 지속적 모니터링: 배포된 애플리케이션의 성능 및 상태를 모니터링하고 오류를 신속하게 감지하는 도구 및 서비스가 필요합니다.

 

 

 

 

블로그의 정보

생각보다 실천을

yjym33

활동하기