본문

CI/CD (지속적 통합/지속적 배포)

 

💡 CI/CD란?
- 애플리케이션 개발 단계를 자동화하여 애플리케이션을 보다 짧은 주기로 고객에게 제공하는 방법
- 애플리케이션의 통합 및 테스트 단계에서부터 제공 및 배포에 이르는 애플리케이션의 라이프사이클 전체에 걸쳐 지속적인 자동화와 지속적인 모니터링을 제공
- 이러한 구축 사례를 일반적으로 "CI/CD 파이프라인"이라 부르며 개발 및 운영의 애자일 방식 협력을 통해 지원
- 지속적인 통합(Continuous Integration), 지속적인 서비스 제공(Continuous Delivery), 지속적인 배포(Continuous Deployment)으로 구성

 

1. CI: 지속적 통합(Continuous Integration)
개발을 하면서 지속적으로 코드에 대한 통합을 진행함으로써 품질을 유지하자는 것
- 개발자를 위한 자동화 프로세스(개발자간의 코드 충돌을 방지하기 위한 목적)
- 정기적인 빌드 및 테스트(유닛테스트 및 통합테스트)를 거쳐 공유 레포지터리에 병합되는 과정
- 클래스와 기능에서부터 전체 애플리케이션을 구성하는 서로 다른 모듈에 이르기까지 모든 것에 대한 테스트를 수행
- 자동화된 테스트에서 기존 코드와 신규 코드 간의 충돌이 발견되면 CI를 통해 이러한 버그를 빠르게 수정 가능
 
2. CD: 지속적인 서비스제공(Continuous Delivery)
- CI 프로세스를 통해 개발중에 지속적으로 빌드와 유닛 및 통합 테스트를 진행하고, 이를 통과한 코드에 대하여 테스트서버와 운영서버에 자동으로 Release
- 운영팀이 보다 빠르고 손쉽게 애플리케이션을 Production으로 배포 가능
- Production 환경으로 배포할 준비가 되어 있는 코드베이스를 확보하는 것이 목표

3. CD: 지속적인 배포(Continuous Deployment)
- Production 준비가 완료된 빌드를 Source Repository에 자동으로 Release하는 지속적 제공의 확장된 형태
- 애플리케이션을 하나의 Production으로 Release하는 작업을 자동화
- Continuous Delivery로 통칭하여 언급하기도 함
- 개발자가 애플리케이션에 변경 사항을 작성한 후 몇 분 이내에 애플리케이션을 자동으로 실행할 수 있는 것을 의미
- 테스트와 빌드가 ‘지속적’으로 이루어지기 때문에, 배포 또한 자연스럽게 ‘지속적’으로 이루어지게 됨

 

 

💡 Jenkins

- 무료다.

- 지원하는 플러그인이 많다.

- Reference 및 사용자가 많고 참조할 수 있는 정보가 많다.

- 설치 및 사용이 간단하다.

- Remote Access API 를 제공하므로 다른 솔루션에서 연계하여 기능 확장이 가능하다.

💡 Jenkins 설치하러 가기

https://server-engineer.tistory.com/763

 

 

 

공유

댓글