CI 비용 분석 — 6개월간 측정한 실제 숫자

$48k 아낀다고 생각하고 self-hosted 로 갔다. 실제로는 $11k 아꼈다. 나머지 $37k 가 어디로 갔는지의 분해.

백재민
백재민
CollabOps 창업자
CI 비용 분석 — 6개월간 측정한 실제 숫자

작년 가을, 한 고객사 CTO 가 GitHub Actions 청구서를 들고 우리에게 왔다.

"월 $4,000. 자체 호스팅으로 가면 $200짜리 EC2 4대로 끝나잖아. 연간 $48,000 아끼자."

6개월 후 우리가 측정한 실제 절감 은 $11,000 였다. 나머지 $37,000 이 어디로 갔는지 — 그 분해가 이 글이다.

처음 표 (그들이 들고 온 것)

GitHub Actions:        $4,000 / 월   →  $48,000 / 연
Self-hosted (ec2 c5.2xlarge × 4):
  EC2 비용:             $560 / 월
  네트워크:              $50 / 월
  스토리지:              $40 / 월
  total:                $650 / 월   →  $7,800 / 연

연간 절감:                          $40,200 (84%)

깔끔하다. 그래서 이주를 시작했다.

6개월 후 표 (실제 측정)

Self-hosted 직접 비용:                $7,800 / 연 (예상대로)

빠진 항목:
  + idle worker 시간 (평균 ~38% utilization):
      *예상* 비용 효율은 100% 가까이 가정함
      EC2 4대 → 빌드 부하의 5배 capacity 필요했음
      실제 EC2 비용:                  $9,800 / 연
  + ops 인건비 (월 평균 12 시간):
      ops engineer rate × 12h × 12mo  $14,400 / 연
  + 자체 secret store (Vault):
      서버 + 라이선스 + 백업          $2,800 / 연
  + observability 스택:
      Prometheus + Grafana 자체 호스팅  $1,200 / 연
  + 보안 패치 / OS 업그레이드:
      평균 분기 1회 × 4시간            $1,920 / 연
  + 빌드 워커 OS 라이선스:
      Windows 빌드 워커 1 대            $600 / 연
  + 불변 이미지 빌드 파이프라인 운영:
      Packer + S3 + 회전               $400 / 연

실제 self-hosted 총 비용:              $31,120 / 연 ⓐ

GitHub Actions 시나리오 (가정):
  $4,000 × 12                          $48,000 / 연 ⓑ

실제 절감 (ⓑ - ⓐ):                    $16,880 / 연

이게 깨끗한 계산 이다. 그런데 우리는 $11,000 이라고 했다. 차액 $5,880 은?

빠진 마지막 항목 — 빌드 시간 손실

self-hosted 첫 3개월 동안 빌드 큐 대기 시간이 평균 17분 늘었다. 워커 4대가 부족했고, 동시 푸시가 몰리면 줄을 섰다. 엔지니어 22명이 평균 하루 2회 push 한다고 가정하면:

22 명 × 2 push/일 × 200 일 × 17 분 손실 = 124,667 분
                                       = 2,078 시간
                                       = ~$5,900 (engineer rate)

이게 간접 비용 이다. 청구서에 안 찍히지만 실제로는 가장 비싼 항목.

3개월차에 워커 2대를 추가했고, 큐 대기가 5분으로 줄었다. 그 시점부터 진짜 절감이 명확 해졌다. 그래서 6개월 평균 절감 = $11,000.

그래서 self-hosted 가 답이 아닌가

답이다. 다만 $48,000 절감 이 아니라 $11,000 절감 이다. 거기에 통제 (compliance·audit·data residency) 가 따라온다.

그리고 하나 짚어야 한다. 위 8개 항목에서 직접 비용을 뺀 나머지는 전부 DIY 운영의 비용이다. 워커 스케일링, 시크릿 스토어, 관측 스택, 패치를 사람이 직접 챙겨서 생긴 값이라는 뜻이다. 이 고객은 러너 인프라를 손으로 조립했다. 관리형 self-hosted 플랫폼 위에서는 이 항목들이 플랫폼으로 넘어가고, 계산이 달라진다. 그 비교는 12개월 데이터로 따로 정리했다.

다섯 종류의 워크로드별 결정 매트릭스:

워크로드권장
월 빌드 5,000 분 미만hosted (운영 비용이 절감보다 큼)
월 빌드 5,000~50,000 분hosted, 단 spot worker 같은 hybrid 옵션 검토
월 빌드 50,000 분 초과 + 컴플라이언스 XDIY 는 비권장, 관리형 self-hosted 는 계산 성립 (운영 부담이 플랫폼으로 이동)
월 빌드 50,000 분 초과 + 컴플라이언스 Oself-hosted (통제로 정당화)
폐쇄망 / 데이터 거주성 강제self-hosted (선택지 없음)

진짜 비싼 행

위 표에서 진짜 비싼 행은 idle workerops 인건비큐 대기 시간 도 아니다. 잘못된 가정으로 시작한 결정의 sunk cost 다. 6개월 후에 "이거 답이 아니었네" 라고 깨달으면, 그 6개월 자체가 비용이다.

처음에 $48k 절감 으로 결정에 들어갔던 그 고객은, 6개월 후 $11k 절감 + 컴플라이언스 통제 라는 더 정확한 수익 함수를 알고 유지 결정을 했다. 결과적으로는 옳은 결정이었지만, 처음부터 정확한 숫자로 들어가는 게 더 적은 sunk cost 였다.

GitHub Actions / CircleCI / GitLab SaaS CI 에서 self-hosted 로 옮길지 검토 중인 엔지니어링 리드라면, 위 8개 비용 항목 중 몇 개를 미리 계산해 봤는지 가 그 결정의 정확도를 정한다. 그리고 그 항목 대부분이 운영 인건비라는 걸 확인했다면, 다음 질문은 이거다. 그 운영을 사람이 들 것인가, 플랫폼이 들 것인가. 사람이 들면 절감은 $11k 에서 멈추고, 플랫폼이 들면 계산이 달라진다.

태그#cicd#cost-analysis#self-hosted#infrastructure#devops