하나의품질 게이트는 작업이 다음 단계로 진행하기 위해 반드시 통과해야 하는 검사입니다. 게이트를 통해 '출시 가능한 수준'이라는 판단이 주관적인 의견에서 벗어나 시스템이 매번 동일하게 적용하는 규칙으로 바뀝니다.
차단형 및 권고형
모든 게이트는 이 두 유형 중 하나이며, 이러한 구분이 설계의 핵심입니다:
- 차단형— 검사를 통과하지 못하면 작업이 중단됩니다. 해당 작업은 통과하거나 사람이 직접 재정의하기 전까지는 진행되지 않습니다.
- 권고형— 검사에 실패해도 결과는 발견 사항으로 기록되어 풀 요청에 첨부되며, 작업은 계속 진행됩니다.
처음에는 권고형으로 시작하세요. 게이트가 실제 작업에서 어떤 문제를 식별하는지 1~2주간 관찰한 뒤, 그 효과가 입증된 게이트를 차단형으로 전환하십시오. 아무런 기준이 없이 처음부터 차단형으로 설정하면 직원들이 이를 우회하는 방법을 찾게 될 뿐입니다.
게이트가 확인할 수 있는 항목
게이트는 검증 단계에 적용되며 다음 항목을 포함할 수 있습니다:
- 자체 테스트 스위트 통과 여부
- 커버리지 임계값
- 린팅 및 정적 분석
- 보안 스캐닝
- 실행 중인 미리보기 환경에서의 브라우저 테스트
- pull request에 첨부된 외부 제공업체의 증거
가장 유용한 게이트는 거의 항상 기존에 사용하던 테스트 스위트입니다. 이는 팀에서 중요하다고 판단한 사항을 이미 반영하고 있기 때문입니다.
게이트가 작업을 중단할 수 있는 시점
게이트는 개발 에이전트의 작업이 완료된 후, 리뷰 전에 검증 단계에서 실행됩니다. 차단형 게이트에서 검사에 실패하면 작업은 수정이 필요한 상태로 되돌려지며, 최종적으로 거부될 만한 pull request가 생성되는 것을 방지합니다.
이러한 순서 설정은 의도적입니다. 실행 중에 검사에 실패하는 것이 화면에서 오류가 발생하는 것보다 비용이 더 저렴하기 때문입니다.
정책
게이트는정책으로 그룹화되며, 이를 프로젝트에 직접 적용합니다. 정책이란 차단형/권고형 설정이 포함된 게이트의 명명된 집합으로, 프로덕션 서비스에는 엄격한 기준을, 내부 도구에는 완화된 기준을 적용할 수 있습니다.
정책은 버전 관리됩니다. 변경 사항을 공개한 뒤, 새 게이트가 너무 엄격하다고 판단되면 이전 버전으로 롤백할 수 있습니다.
재정의
차단형 게이트는 권한이 있는 사람이 재정의할 수 있습니다. 이때 재정의 내역은 누가, 언제, 어떤 작업에 대해 수행했는지 등이 모두 기록됩니다.
이러한 기록이 바로 중요한 점입니다. 재정의할 수 없는 게이트는 사람들이 우회하는 대상이 되고, 누구나 쉽게 재정의할 수 있는 게이트는 게이트로서의 역할을 하지 못합니다. 기록이 남는 재정의 방식은 실용적이면서도 책임 소재를 명확히 할 수 있습니다.
게이트가 수행하지 않는 작업
게이트는 속성을 확인할 뿐입니다. 해당 작업이 올바른 문제를 해결하는지는 판단하지 않습니다. 이는명세에 정의된 수용 기준과 리뷰 과정에서 결정됩니다.
모든 게이트를 통과한 변경사항이라도 여전히 잘못된 변경일 수 있습니다.