들어가기
CTIP(Continuous Test and Integration Platform)는 짧은 주기에 통합으로 인해 발생하는 오류를 사전에 빠르게 확인하고 통합에 따른 자원 절약에 있다. CTIP는 CI/CD에서 CI(Continuous Integration)를 위한 도구로서 지속적 테스트 통합을 위한 플랫폼이다. CTIP에 대해 간단하게 살펴보자.
작성자: ospace114@empal.com, http://ospace.tistory.com/
지속적 통합 이란?
지속적 통합(Continuous Integration)은 Agile 개발 프로세스에서 XP 개발에 응용되기 시작했다. 구현된 코드 통합, 시험과정을 자동으로 수행하고 그 결과를 리포팅하여 현재 상태를 쉽게 파악할 수 있게 한다.
개발에서 지속적 통합이 다루는 범위는 구현, 통합, 시험 단계이다. 이를 지원하는 툴들은 시험 단계를 넘어서 배포까지 지원하고 있다.
지속적 통합 요건
지속적 통합을 하기 위한 요건을 하나씩 살펴보자.
- 단일 소스 저장소 관리
- 빌드 자동화
- 자체 테스트 가능한 빌드
- 빠른 빌드
- 운영과 유사한 환경 구성
- 빌드 상태 모니터링
- 결과물 쉽게 확인
단일 소스 저장소 관리는 소스 관리를 위한 저장소가 필요하다. 빌드 자동화는 소스코드를 자동으로 빌드해주는 기능이다. 자체 테스트 가능한 빌드는 정적/동적 분석이나 단위/통합 테스트 등을 구성해야 한다. 빠른 빌드는 지속적으로 빈번한 빌드를 해야하기 때문에 빌드 시간도 고려해야 한다. 운영과 유사한 환경 구성은 테스트 과정에 최대한 운영환경과 유사해야 문제점을 사전에 확인할 수 있기 때문이다. 빌드 상태 모니터링은 빌드가 실패할 수 있고 원인을 파악할 수 있어야 한다. 이런 모든 작업물에 대해 쉽게 확인할 수 있어야 빠르게 반영할 수 있게 된다.
구성
지속적 통합을 위한 시스템 구성을 보자.
가운데 통합 시스템이 통합 도구로서 지속적 통합을 담당한다. 저장소, Feedback 시스템, 배포 시스템, 테스트 시스템과 연계해서 통합과 테스트를 실행하고 그 결과를 반영한다.
- 통합 도구: 빌드 및 여러 테스트 수행하고 결과 리포팅하는 시스템이다.
- 빌드 도구: 소스 빌드 및 패키징을 수행한다.
- 테스트 도구: 단위 테스트등 다양한 테스트 수행한다.
- 코드 커버리지 도구: 테스트 자체 품질 측정한다.
- 저장소(형상관리): 소스 관리위한 저장소이다.
- Feedback 시스템: 버그추적, 이슈 관리 등 위한 의사소통 도구이다.
- 테스트 시스템: 운영환경과 유사한 시스템으로 테스트를 진행하는 대상이 된다.
- 배포 시스템: 시스템 배포 및 업데이트 관리를 하는 시스템이다.
혹시나 해서 통합 시스템이 하나로 보인다고 해서 한 시스템에 모두 구성되는게 아니라, 일부 요소들은 별도 시스템으로도 구성될 수도 있다.
마무리
CTIP 이전에는 일일히 수작업으로 확인했었다. CTIP로 인해 이런 작업이 자동화되면서 간편하게 수행할 수 있고 최근에는 CI/CD로 배포까지 포함되고 있다. 이제는 CI/CD가 없는 개발은 상상할 수 없는 환경이 되었다. 물론 개발 환경에 따라서 차이가 있을 수 있지만 이런 대표적인 도구로는 Jenkins, GitLab 등이 있다. 각자 장단점이 있어서 자신게 맞게 선택하면 된다. 혹시 직접 구축한다면 Jenkins를 추천한다. 참고[2]에 다양한 CI/CD 도구를 소개하고 있으니 참고하시기 바랍니다.
두서없고 정리가 안되보이네요. ㅡ.ㅡ;;; 도움이 되었으면 다행이네요. 모두 즐거운 코딩하세요. ospace.
참고
[1] rainflys, CTIP 개요, http://rainflys.tistory.com/53
[2] Best 14 CI/CD Tools You Must Know, https://katalon.com/resources-center/blog/ci-cd-tools
[3] CruiseControl: http://cruisecontrol.sourceforge.net/
'4.개발 및 운영 환경' 카테고리의 다른 글
가상화 솔루션 Proxmox-VE 사용 (0) | 2024.03.15 |
---|---|
VisualVM 소개 (2) | 2024.03.15 |
소프트웨어 테스트란 (2) | 2023.12.28 |
[Jenkins] Jenkins pipeline에서 git parameter 사용 (0) | 2023.11.08 |
[Jenkins] Jenkins의 pipeline 사용해서 maven 배포하기 (0) | 2023.11.07 |