[CICD] CI, CD

2020. 12. 11. 10:37CICD

1. CICD

CI는 개발자를 위한 자동화 프로세스인 지속적인 통합을 의미한다. CI를 성공적으로 구현할 경우 애플리케이션에 대한 새로운 코드 변경 사항이 정기적으로 빌드 및 테스트 되어 공유 리포지토리에 통합되므로 여러 명의 개발자가 동시에 애플리케이션 개발과 관련된 코드 작업을 할 경우 서로 충돌할 수 있는 문제를 해결할 수 있다.

 

CD는 지속적인 서비스 제공 혹은 지속적인 배포를 의미한다. 지속적인 서비스 제공이란 개발자들이 애플리케이션에 적용한 변경 사항이 버그 테스트를 거쳐 리포지토리에 자동으로 업로드되는 것을 뜻하며, 운영팀은 이 리포지토리에서 애플리케이션을 실시간 프로덕션 환경으로 배포할 수 있다. 즉, 개발팀과 비즈니스팀 간의 가시성과 커뮤니케이션 부족 문제를 해결해준다.

 

지속적인 배포란 개발자의 변경 사항을 리포지토리에서 고객이 사용 가능한 프로덕션 환경까지 자동으로 릴리스하는 것을 의미한다. 애플리케이션 제공 속도를 저해하는 수동 프로세스로 인한 운영팀의 프로세스 과부하 문제를 해결한다.

 

  • 애플리케이션 개발 단계를 자동화하여 짧은 주기로 배포하는 전략이다.
  • 코드 통합, 테스트, 릴리즈, 배포 등의 애플리케이션 라이프사이클 전체 과정을 자동화하고 이 과정을 모니터링 가능하도록 한다.
  • 개발자가 아닌 사람이 쉽게 빌드, 배포를 가능하도록 한다.

 

 

 

2. 대표적인 툴

1) Travis CI

호스팅 지속적 통합 서비스의 하나로, 깃허브에 호스팅되는 소프트웨어 프로젝트의 빌드, 테스트를 위해 사용된다. 비공개 프로젝트는 다양한 유료 플랜을, 오픈 소스는 무료 플랜을 제공한다. (travis-ci.org/getting_started)


[참고] Spring Boot - Travis CI 배포 자동화 (1)

2) AWS

AWS 배포 서비스에는 3가지가 존재한다. CodeDeploy 외에는 깃허브와 같은 코드 저장소의 역할을 수행하는 Code Commit과 Travis CI와 동일한 빌드용 서비스인 Code Build가 있다.


[참고] Spring Boot - Travis CI 배포 자동화 (2)

3) Jenkins

소프트웨어 개발 시 지속적 통합 서비스를 제공하는 툴로 다수의 개발자들이 하나의 프로그램을 개발할 때 버전 충돌을 방지하기 위해 각자 작업한 내용을 공유 영역에 있는 깃 저장소에 빈번히 업로드하여 지속적 통합이 가능하도록 해준다.

728x90

'CICD' 카테고리의 다른 글

[CICD] AWS EC2 Jenkins 프로젝트 War 배포  (0) 2020.12.11
[CICD] AWS EC2 Jenkins GitHub 설정  (0) 2020.12.11
[CICD] AWS EC2 Jenkins 설치  (0) 2020.12.11