단계, 게이트, 환경
파이프라인은 단순히 '푸시할 때 실행되는 스크립트'가 아니야. 단계들로 이루어진 방향 그래프라고 보면 돼. 각 단계는 게이트로 분리되고, 최종적으로 하나 이상의 환경에서 마무리돼.
대표적인 구조는 이렇게 생겼어:
- 소스 — 체크아웃. 처리할 정확한 커밋을 가져오는 과정이야.
- 빌드 — 컴파일, 번들링, 컨테이너화를 수행해. 결과물은 아티팩트로 나오는데, 결정론적이고 이름이 붙여져 있으며 변경 불가능한 형태여야 해.
- 테스트 — 유닛, 통합, 인수 테스트를 돌려. 보통 병렬로 처리해.
- 정적 분석 — 린트, 타입 검사, 보안 스캔, 라이선스 스캔을 포함해.
- 패키지 — 배포용 아티팩트를 조립해 (Docker 이미지, npm tarball, wheel 등).
- 배포 → 스테이징 — 보통 자동으로 진행돼.
- 인수 / 스모크 테스트 — 스테이징 환경을 대상으로 실행해.
- 배포 → 프로덕션 — 지속적 전달의 경우 승인 게이트가 있고, 지속적 배포는 자동으로 넘어가.
- 배포 후 검증 — 프로덕션 스모크 테스트와 관측 가능성 점검을 해.
모든 프로젝트가 이 모든 단계를 다 쓸 필요는 없어. 정적 사이트라면 빌드, 패키지, 배포를 하나로 합칠 수도 있어. 반대로 규제를 받는 은행 앱은 5개를 더 추가할 수도 있지 (컴플라이언스 스캔, 변경 자문 위원회 승인, 감사 로그 생성 등). 어떤 형태가 되든 아티팩트를 중심에 둔 게이트 그래프라는 점은 변하지 않아.