본문 바로가기

정보관리기술사/소프트웨어공학

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

반응형

I. 소프트웨어의 종합적 문제를 해결하기 위한 솔루션, CI/CD의 개요

. CI(Continuous Integration) / CD(Continuous Delivery & Deployment)의 정의

소프트웨어의 통합 및 테스트 단계부터 제공 및 배포에 이르는 소프트웨어의 생명주기 전체에 걸쳐

지속적인 자동화와 모니터링을 제공하는 솔루션

. CI/CD의 특징

특징

내용

테스트 자동화

소프트웨어 변경 시 모든 기능에 대한 자동화된 테스트 수행 가능

빠른 배포

자동화 도구를 사용해 보다 빠르고 손쉽게 소프트웨어를 운영환경으로 배포 가능

피드백 수렴

사용자 피드백을 지속적으로 수신 및 통합 용이

 

II. CI/CD의 개념도 및 세부내용

. CI/CD의 개념도

 

 

배포의 위험성을 감소시키므로 변경사항을 한 번에 배포하지 않고 작은 부분으로 세분화하여 손쉽게 배포 가능

. CI/CD의 세부내용

설 명

지속적인 통합

(Continuous Integration)

- 소스코드 변경사항을 공유 브랜치 또는 트렁크로 다시 병합하는 작업을 수행

- 자동화된 단위/통합테스트로 변경사항의 정확한 적용여부, 기존코드와 충돌여부 등 확인

지속적인 제공

(Continuous Delivery)

- 운영환경으로 배포할 준비가 되어 있는 코드베이스 확보가 목적

- 유효한 소스코드를 저장소에 자동으로 배포

- 소스코드 변경사항 병합부터 운영환경에 적합한 빌드 제공에 이르는 모든

단계에 테스트 및 소스코드 배포 자동화가 포함

지속적인 배포

(Continuous Deployment)

- 지속적인 제공의 확장된 형태

- 소프트웨어를 운영환경으로 배포하는 작업을 자동화

. CI의 수행절차

수행절차

① 개발자가 변경된 소스코드를 저장소에 제출(Commit)

② 저장소에 제출된 소스코드를 CI 서버에서 패치

CI 서버는 설정된 시점에 소스코드 빌드를 수행

④ 요구사항에 적합하도록 작성한 시나리오를 사용해 테스트 수행

⑤ 빌드와 테스트 결과에 따라 설정된 기능 수행

⑥ 테스트 결과와 수행내용을 담당자들에게 공지

 

III. CI/CD의 구성도와 구성요소

. CI/CD의 구성도

 

 

 . CI/CD 구성요소

구성요소

설명

비고

버전 관리 저장소

프로젝트 파일의 중앙 저장소로 팀원들의 작업을 동기화하는 공간

CVS, GIT

Subversion

통합 빌드 서버(CI서버)

컴파일, 테스트, 릴리즈, 디플로이, 결과보고 등의 작업을 통합적으로

자동화 해주는 시스템

Hudson

Jenkins

빌드스크립트

빌드 서버의 자동화된 절차를 수행하기 위한 셀스크립트

(또는 배치파일)

스크립트

배치파일

프로젝트 관리 도구

(Project Management Tool)

빌드 결과를 모니터링하거나 자동적으로 피드백을 받을 수 있는

 관리도구

이메일, 문자메시지

품질 관리 도구

(Quality Management Tool)

인수 테스트를 통해 품질관리를 자동으로 수행하여 승인하는 도구

SonarQube

 

IV. 오픈소스 기반의 CI/CD 지원도구

지원도구

설 명

젠킨스

(Jenkins)

- 거의 모든 언어의 조합과 소스코드 저장소에 대한 지속적인 통합 및 전달 환경을 구축하는 방법 제공

- 플랫폼, UI, 소스코드관리, 빌드관리 등의 영역에서 다양한 기능을 플러그인으로 제공

트래비스

(Travis)

- 젠킨스와 달리 플랫폼 서버 불필요하며, 특정 소스코드 공유도구(Github)와 강력한 연동

- 저장소(Git)에 제출(Commit, Push)가 일어날 때마다 자동으로 빌드와 테스트 수행

 

반응형

'정보관리기술사 > 소프트웨어공학' 카테고리의 다른 글

캐시워크 돈버는퀴즈 정답 오늘 6월 22일 배달의민족 ㄴㄴㅊㅋ  (0) 2024.06.22
칸반(Kanban)  (0) 2020.07.28
번다운차트  (0) 2020.07.27
XP  (0) 2020.07.24
정보공학 방법론  (0) 2020.07.23