C.W.K.
Stream
Lesson 12 of 13 · published

Fail fast

~9 min · fail-fast, ordering, pipeline-design

Level 0Apprentice
0 XP0/101 lessons0/10 achievements
0/120 XP to next level120 XP to go0% complete

비싼 검사 전에 싼 검사

Lint 가 30 초고 test 가 8 분이면 lint 먼저. 실패하면 test 안 돔 — 실패 PR 당 8 분 절약. 원칙 일반화:

  1. Format 체크 (5 초) — 첫째.
  2. Lint (30 초) — 둘째.
  3. Type 체크 (1-3 분) — 셋째.
  4. Unit 테스트 (2-10 분) — 넷째.
  5. Integration / e2e 테스트 (5-30 분) — 다섯째.
  6. Performance budget / smoke deploy — 마지막.

Job level needs: graph 가 이걸 인코딩. Matrix level fail-fast 는 단일 job 의 병렬성 안에서 같은 아이디어를 인코딩.

반대 패턴: 가시성을 위한 병렬화

Main 에선 반대를 원할 수 있어: 다 병렬 돌려서 모든 실패를 한 번에 보고. 회고 분석을 위한 '깨진 거 다 말해' 모드. 대부분 팀이 PR 엔 fail-fast, main 엔 full-parallel.

Code

Fail-fast pipeline 모양·yaml
jobs:
  format:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - run: ruff format --check .

  lint:
    needs: format
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - run: ruff check .

  type-check:
    needs: lint
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - run: mypy src --strict

  test:
    needs: type-check
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - run: pytest -q

External links

Exercise

현재 CI 를 DAG 로 스케치. 비싼 거 downstream 인 가장 싼 check 식별. Upstream 으로 이동. Push 하고 다음 실패 PR 시간 재 — 절약된 사이클.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.