비싼 검사 전에 싼 검사
린트가 30초고 테스트가 8분이면 린트부터 돌려. 실패하면 테스트는 안 돌려도 돼. 실패한 PR마다 8분을 절약할 수 있지. 이 원칙을 일반화하면 이래:
- 포맷 체크 (5초) — 첫 번째.
- 린트 (30초) — 두 번째.
- 타입 체크 (1-3분) — 세 번째.
- 유닛 테스트 (2-10분) — 네 번째.
- 통합 / e2e 테스트 (5-30분) — 다섯 번째.
- 성능 예산 / 스모크 배포 — 마지막.
작업 수준의 needs: 그래프가 이걸 표현해. 매트릭스 수준의 fail-fast는 단일 작업 안에서 병렬로 돌릴 때도 같은 원리를 적용하는 거야.
반대 패턴: 가시성을 위한 병렬화
메인 브랜치에선 반대로 하는 게 나을 수 있어. 전부 병렬로 돌려서 실패한 걸 한 번에 다 보여주는 거지. 회고 분석할 때 '깨진 거 다 말해' 모드가 필요하니까. 대부분 팀은 PR에선 빠른 실패를 쓰고, 메인에선 전체 병렬로 돌려.