CI / CD
지속적 통합과 지속적 배포
- 본 포스트에서는 DevOps 엔지니어의 핵심 업무인 CI와 CD에 대해 알아본다.
* DevOps Engineering (데브옵스 엔지니어링)
- Development(개발)와 Operation(운영)의 혼성어이다.
- 개발 담당자와 운영 담당자가 협력하여 소통, 협업, 통합 및 자동화에 중점을 두는 개발 방법론이다.
- CI/CD의 자동화는 DevOps Engineering의 핵심 업무에 속한다.
CI (Continuous Integration; 지속적 통합)
- 새로운 코드 변경 사항을 정기적으로 빌드 및 테스트하여 Repository에 Integration하는 것을 의미한다.
- CI가 필요한 환경은 아래와 같다:
- 다수의 개발자가 형상관리 툴을 공유하여 사용하는 환경
- CI를 적용하여 빌드와 테스트를 자동화해 수고를 줄일 수 있다.
- MSA(Micro Service Architecture) 환경
- MSA 환경에서는 대부분 Agile 방법론이 적용되기에 CI를 적용하기에 적합하다.
- CI의 핵심 목표는 아래와 같다:
- 신속한 버그 해결
- 소프트웨어 품질 개선
- 업데이트 사항 검증
- 릴리즈 시간 단축
CD (Continuous Delivery, Continuous Deployment; 지속적 배포)
- 소스코드의 변경 사항이 Repository를 넘어, 사용자의 Production 환경까지 Release하는 것을 의미한다.
- 개발팀, 비즈니스팀 간의 커뮤니케이션 부족 문제를 해결해주어 배포에 이르기까지 노력을 절감해준다.
- Delivery와 Deployment의 차이는 아래와 같다:
- Continuous Delivery
- 변경사항을 공유 Repository로 자동으로 Release하는 것을 의미한다.
- Continuous Deployment
- 변경사항을 Production 레벨까지 자동으로 Deploy하는 것을 의미한다.
CI/CD Tools (CI/CD 도구)
- DevOps Engineering에 사용되는 대표적인 CI/CD 툴에는 아래와 같은 것들이 있다:
- Jenkins
- Travis CI
- Bamboo
Strategies for Improving CI/CD (CI/CD 전략)
- 개발자와 DevOps 엔지니어간의 원활한 의사소통
- CI/CD 작업에서 생산되는 데이터들에 대한 시각화
CI/CD Data | Detail |
소스 코드 정보 | - 신규로 추가한 라인 수 - 변경된 라인 수 - 소스 코드 파일 개수 - 커밋 개수 |
소스 코드 정적 분석 데이터 | |
소스 코드 빌드 데이터 | - 작업별 빌드/테스트 시간 - 빌드 성공율, 빌드 로그 - 빌드 테스트 리포트, 패키지 정보, 버전 정보 - 빌드 옵션, 메모리 덤프 데이터 - 빌드 태스크 의존성 정보 |
빌드 시스템 정보 | - 사용자 시스템 정보 - CPU 사용량, 메모리 사용량, 디스크 사용량 - 빌드 대기 시간, 빌드 장비 활용 시간 |
Reference: CI/CD란 무엇인가 (Feat. DevOps 엔지니어); 개발자 김모씨의 성장 일기;
2020년 9월 21일 작성, 2022년 11월 30일 검색, URL.
Reference: 구상모, 데이터 기반으로 지속적인 CI/CD 개선 환경 만들기; LINE Engineering;
2019년 12월 17일 작성, 2022년 11월 30일 검색, URL.
Reference: Queenie So, Battle-Tested: How We Built and Mastered Our CI/CD Pipeline; Oursky;
2019년 8월 19일 작성, 2022년 11월 30일 검색, URL.