목차
* 주의 : 책(폴M 듀발 저 - 지속적인 통합) 내용 중 기억하고 싶은 내용 및 제 생각을 적은 글 입니다. 책이 나온지 오래되어 설명에 나온 기술스택이 현재 사용되지 않는게 많아 기술스택보다는 이론이나 책의 조언들 위주로 작성할 것 같고, 기술스택은 제가 알고있는대로 수정해서 작성합니다. 따라서 책에서 말하고자 하는 바와 다를 수 있습니다.
* 별도로 표기되어 있지 않다면 이미지 출처는 '지속적인 통합 (폴M 듀발 저)' 책 입니다.
CHAPTER 1. 시작하기
- 겉보기엔 기초적인 것 같은 실천 방법도 설교보다는 실천하는 데 중점을 둬야 한다. 통합 빌드를 자주 돌리고 그게 대수롭지 않도록 만들고 싶다면 지속적인 통합(이하 CI)가 도움이 될 것이다.
- CI
- 컴파일
- 데이터베이스 재빌드
- 자동화된 테스트
- 자동화된 검사
- 소프트웨어 배포
- 사용자 피드백 받기
- 등. 흔히 얘기하는 CI/CD를 포함한 내용을 이 책에서 다루고 있음.
- CD(지속적 배포)가 CI에 포함되는 관계이다보니 CI로 묶어서 얘기하고 있는 것 같음.
변경할 때마다 소프트웨어를 빌드하기
- CI 시나리오는 개발자가 소스 코드 저장소에 코드를 커밋할 때 시작된다. 이하 일반적인 단계
- 1. 개발자가 버전 관리 저장소(이하 VCS)에 커밋
- 2. CI 서버가 변경 내역을 감지 후 CI 서버에 코드를 가져와 빌드 스크립트 실행해서 소프트웨어 통합
- 3. 지정된 프로젝트 구성원에게 이메일 등으로 빌드 결과를 피드백
- 4. CI 서버는 변경을 계속 감지 (폴링 등의 방식으로)
- 개발자
- 작업 내용과 관련된 수정 작업이 끝나면 개발자는 개인 빌드 후 변경 내역을 버전 관리 저장소에 커밋
- 버전 관리 저장소(VCS)
- git이나 svn 같은 것.
- CI를 수행하려면 VCS를 반드시 사용해야 한다.
- CI를 쓰지 않는다해도 VCS는 프로젝트의 표준이 되어야 한다.
- 지속적인 통합 서버
- 젠킨스, github action 등을 뜻함 (책에선 CruiseControl이 예시로 나옴)
- 폴링이나 정의해둔 행동 수행(특정 브랜치에 merge와 같이) 등에 따라 빌드 스크립트나 다른 스크립트를 실행
- 빌드 스크립트
- 코드 컴파일 및 검사, 배포 등의 작업들을 자동화하는 배치 스크립트
- 피드백 매커니즘
- SMS, 이메일, slack 등을 통해 통합 빌드 시 이에 대한 피드백을 주는 것
- 통합 빌드 머신
- 소프트웨어 빌드 전용의 독립적인 컴퓨터
- 통합 빌드 머신에서 CI 서버가 돌아감
지속적인 통합의 특징
- CI가 요구하는 네 가지 컴포넌트
- VCS로의 연결
- 빌드 스크립트
- 피드백 매커니즘
- 소스 코드 변경 내역을 통합하기 위한 프로세스 (자동이든 수동이든)
- CI 시스템의 하부 프로세스
- 소스 코드 컴파일 : 소스 코드로부터 실행 가능한 코드를 만들어내는 일
- DB 통합 : 소스와 동일한 VCS에 DB도 반드시 통합되어 있어야 함 (flyway와 같은 마이그레이션 툴을 써도 될 것 같고, 이 책에서 말하는건 DB 스크립트나 문서 등이 소스 코드와 동일한 VCS에 들어가야 한다는 것)
- 테스트 : 자동화되고 지속적인 테스트가 구비되어 있지 않은 CI는 CI가 아님
- 검사 : 자동화된 코딩 검사 (소나큐브, 코틀린이라면 kt 린트 같은 것들) - 여러 코딩 규칙 강제
- 배포 : 배포를 지속적으로 하면 어느 순간이라도 실제로 작동하는 소프트웨어를 배포할 수 있다. (docker 등을 통한 자동배포)
- 문서화와 피드백 : 소스코드와 프로젝트 상태 문서화를 실시간에 획득했을 때 이점이 큼 (restdocs, slack 등)
- 좋은 CI 시스템의 핵심적인 특징은 속도!
- 그리고 적절한 피드백
질문
- VCS를 사용합니까?
- 빌드 과정이 자동화되고 똑같이 반복될 수 있습니까? 사람이 개입하지 않아도 빌드 과정이 완전히 작동합니까?
- 자동화된 테스트를 작성해서 돌립니까?
- 빌드 과정의 일부로써 테스트를 실행합니까?
- 코딩 및 설계 표준을 어떻게 강제합니까?
- 자동화시킨 피드백 매커니즘에는 어떤 게 있습니까?
- 소프트웨어를 빌드할 때 별도의 통합 빌드 머신을 사용합니까?
'Study > 지속적인 통합' 카테고리의 다른 글
[지속적인 통합] 6장. 지속적인 테스트 (0) | 2023.03.12 |
---|---|
[지속적인 통합] 5장. 지속적인 데이터베이스 통합 (0) | 2023.03.12 |
[지속적인 통합] 4장. 변경될 때마다 소프트웨어를 빌드하기 (0) | 2023.03.08 |
[지속적인 통합] 3장. 지속적인 통합을 이용해 위험 줄이기 (0) | 2023.03.08 |
[지속적인 통합] 2장. 지속적인 통합 도입하기 (0) | 2023.03.08 |
댓글