팬텀 할당량: 최고 소프트웨어 개발자 효율성을 위한 GitHub Actions 스토리지 회수

발행: (2026년 3월 25일 PM 11:00 GMT+9)
8 분 소요
원문: Dev.to

Source: Dev.to

죄송합니다만, 번역하려는 본문 텍스트를 제공해 주시면 해당 내용을 한국어로 번역해 드리겠습니다. 현재는 링크만 제공되어 있어 실제 기사 내용을 확인할 수 없습니다. 텍스트를 복사해서 붙여 주시면 바로 번역해 드리겠습니다.

문제

  • Warning email: 조직에 Actions 저장소 할당량이 거의 다 찼다는 알림 이메일이 도착했습니다.
  • Usage report: 단일 리포지토리에서 하루에 약 45 GB‑시간이 사용된 것으로 나타났습니다.
  • No recent runs: 해당 리포지토리는 10개월 이상 워크플로를 실행한 적이 없습니다.
  • Expiration set: 몇 개의 오래된 워크플로 실행에 대해 아티팩트가 하루 후 만료되도록 설정되어 있었으며, UI에서는 이를 만료됨으로 표시했습니다.

Expectation: 저장소에 전혀 영향을 주지 않을 것이라 기대했습니다.
Reality: 청구 미터는 계속해서 증가했습니다.

Source:

커뮤니티가 발견한 내용

1. 지연된 정리 프로세스

GitHub은 만료된 아티팩트를 삭제하기 위해 백그라운드 작업에 의존합니다. 아티팩트가 만료된 시점과 실제로 삭제되는 시점 사이에 상당한 지연이 발생할 수 있습니다. 이 중간 기간 동안 데이터는 여전히 디스크 공간을 차지하며 할당량에 포함됩니다.

2. “유령 파일” 오류

“Expired” ≠ “Deleted.”
BryanBradfo가 지적한 알려진 백엔드 이슈로, UI에서는 아티팩트가 만료된 것으로 표시되지만 실제 파일은 서버에 남아 있습니다. 이러한 “유령 파일”은 계속해서 청구됩니다.

3. 스토리지는 아티팩트만이 아니다

워크플로우 로그, 캐시 및 기타 메타데이터도 공간을 차지합니다. 이들은 아티팩트가 사라지거나 만료된 후에도 남아 전체 사용량을 증가시킬 수 있습니다.

4. 시간 가중 청구

ash‑iiiiish가 설명한 바와 같이, 스토리지 청구는 시간 가중 방식입니다. 아티팩트를 삭제하면 미래의 청구는 중단되지만, 그 시점까지 이미 사용된 스토리지는 소급해서 삭제되지 않습니다. 따라서 적시 정리가 필수적입니다.

즉각적인 (반응형) 해결책

오래된 워크플로 실행 수동 삭제

방법단계
GitHub UI1. 해당 저장소의 Actions 탭으로 이동합니다.
2. 각 오래된 워크플로 실행을 엽니다.
3. Delete를 클릭하여 실행, 해당 아티팩트 및 로그를 삭제합니다.
GitHub CLI대량 삭제를 위해 CLI를 사용합니다. 예시 (필요에 따라 날짜를 조정하세요):
gh run list --status completed --json databaseId,createdAt,url \
  | jq '.[] | select(.createdAt

참고: 삭제 후, GitHub의 스토리지 재계산을 위해 6–24 시간 정도 기다립니다. 시스템이 삭제를 인식하면 사용량이 감소할 것입니다.

선제적(예방) 전략

  1. 조직 수준의 적극적인 보존 정책

    • 워크플로별 설정에만 의존하지 마세요.
    • Organization Settings → Actions → General 로 이동합니다.
    • Artifact and log retention 을 가능한 가장 짧은 기간(예: 7–14 일)으로 설정합니다. 이렇게 하면 모든 리포지토리에서 일관성을 유지할 수 있습니다.
  2. 정기적인 캐시 정리

    • 오래된 캐시를 주기적으로 검토하고 삭제합니다.
    • 캐시는 “스토리지” 요금으로 청구되지 않지만, 큰 캐시는 전체 데이터 용량을 늘리고 성능에 영향을 줄 수 있습니다.
  3. 대용량 출력물에 대한 대체 스토리지

    • 장기 보관이 필요하거나 비정상적으로 큰 바이너리·아티팩트는 비용 효율이 높은 옵션을 고려하세요:
      • GitHub Releases – 프로덕션 바이너리와 릴리즈 자산에 이상적입니다.
      • 클라우드 스토리지 – AWS S3, Google Cloud Storage, Azure Blob 등, 비용 최적화된 장기 저장소.
  4. 지속적인 모니터링

    • 이메일 경고를 기다리지 마세요.
    • 조직 수준에서 GitHub Actions 사용 보고서 를 정기적으로 검토합니다.
    • 예상치 못한 높은 스토리지 사용량을 조기에 파악해 불필요한 비용 발생을 방지합니다.

TL;DR 엔지니어링 리더를 위한

  • Expired ≠ Deleted – 고스트 파일이 청구를 지속시킬 수 있습니다.
  • Cleanup isn’t instantaneous – 스토리지 메트릭이 삭제를 반영하기까지 지연이 발생합니다.
  • Time‑weighted billing 은 과거 사용량이 청구서에 남는다는 의미입니다.
  • Act now: UI 또는 CLI를 통해 오래된 실행을 대량 삭제하세요.
  • Prevent future surprises: 조직 전체 보존 정책을 적용하고, 캐시를 정리하며, 대용량 아티팩트를 오프로드하고, 사용량을 지속적으로 모니터링하세요.

즉각적인 복구와 사전 예방 정책을 결합함으로써 팀은 GitHub Actions 스토리지를 제어하고 예산을 보호하며 개발자가 훌륭한 소프트웨어를 만드는 데 집중하도록 할 수 있습니다. GitHub Actions 스토리지에 대한 견고한 정책을 구현하는 것은 단순히 비용을 절감하는 것이 아니라, 자원 인식 문화를 조성하고 개발자를 핵심 업무에서 벗어나게 하는 방해 요소를 방지하는 것입니다.

0 조회
Back to Blog

관련 글

더 보기 »

Password Managers는 왜 이메일이 필요할까요?

왜 비밀번호 관리자는 이메일을 요구할까? 인기 있는 비밀번호 관리자를 포함해 온라인 서비스를 가입해 본 적이 있다면, 모두가 이메일을 요구한다는 것을 눈치챘을 것이다.