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 |