본문 바로가기
C.W.K.
Stream
Lesson 09 of 13 · published

성능 튜닝

~10 min · performance, speed, optimization

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

8가지 레버

CI 속도를 높이려면 대략적인 우선순위에 따라 다음 항목 중 하나 이상을 공략해:

  1. 작업 병렬화 — 독립적인 작업을 병렬 작업으로 나눠 실제 소요 시간을 줄여.
  2. 적극적인 캐싱 — 설치, 빌드 출력값, Docker 레이어, 모델 가중치를 캐싱해.
  3. 더 큰 러너 사용 — CPU 바운드 단계에서 코어를 두 배로 늘리면 시간이 절반으로 줄 때가 많아. 비용은 선형으로 늘고 시간은 그보다 덜 늘면? 승리지.
  4. 해당 없는 건 건너뛰기 — 경로 필터와 조건부 작업을 활용해.
  5. 동시 실행에서 진행 중인 작업 취소 — 오래된 실행을 중단해.
  6. PR에 더 작은 테스트 묶음 적용 — PR에서는 스모크 테스트만, main에서는 전체 테스트를 돌려.
  7. 더 빠른 설치 도구 — uv와 pip, pnpm과 npm, 캐시된 docker buildx를 비교해 봐.
  8. 테스트 분할 — 느린 테스트 묶음을 러너들에 나눠서 돌려.

추측 말고 측정해

최적화하기 전에 실행 타임라인부터 봐. 가장 오래 걸리는 단계가 최적화 후보야. GitHub 실행 페이지에서 단계별 소요 시간을 보여주고, gh run view --log로 원본 타이밍을 확인할 수 있어. 가장 안 좋은 부분을 최적화하고, 다시 측정하고, 반복해.

Code

gh run 타이밍 — 병목 찾기·bash
# Most recent run id
run=$(gh run list -L 1 --json databaseId --jq '.[0].databaseId')

# Per-job duration
gh api repos/:owner/:repo/actions/runs/$run/jobs \
  --jq '.jobs[] | {name, started_at, completed_at}'

# Or: look at the run summary in the UI; per-step durations are shown.

External links

Exercise

가장 느린 워크플로를 골라봐. 최근 10번의 실행 타임라인을 가져와. p95를 좌우하는 단일 단계를 찾아내. 거기에 8가지 레버 중 하나를 적용해 봐. 5번 더 실행한 뒤에 다시 측정해.

Progress

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

댓글 0

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

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