얼마 전 누군가 GitHub Enterprise에서 계정당 사용량 제한이 있는지 물어봤습니다. 아마 GitHub.com의 무료 계정에 대해서는 사용량 제한이 있기 때문에 GitHub Enterprise에도 동일한 제한이 있는지 물었던 것 같습니다. 그래서 문득, GitHub.com의 무료 계정에서는 언제까지 과금이 되지 않는지 궁금해졌습니다. 아, 회사에서 사용중인 설치형 GitHub Enterprise에서는 계정당 사용량의 제한은 없습니다. 리파지토리당 100Gb의 제한이 있지만, 이마저도 해제할 수 있기 때문에 사실상 무제한입니다.
GitHub.com의 Settgins의 항목 중 Billing에 접속하면 결제 정보와, 현재 사용량을 알 수 있습니다.
과금 되는 항목은 리파지토리, 액션, 패키지, 액션과 패키지를 위한 스토리지, LFS가 있습니다. 각 항목에 대해서 현재 사용량을 보여주고, 우측 상단에 있는 "Get usage report" 버튼을 클릭하면 최근 7일, 30일, 90일, 180일의 사용량 보고서를 메일로 받을 수도 있습니다. 저 같은 경우, 과금될만한 사용을 전혀 하고 있지 않은 것을 알 수 있습니다. 그럼 각 항목 마다 어느정도 제한을 받고 사용량이 계산되는 지 알아보겠습니다.
리파지토리.
맨 처음 보이는 리파지토리 항목은 무료 계정에서는 private 리파지토리에 대해서 기능 제한이 있을 뿐 딱히 용량에 대한 제한은 없습니다. 월 $4정도 지불하게 되면, 기능 제한이 풀리게 되고, private 리파지토리에 대해서 리뷰를 강제하거나, 브랜치에 보호정책을 걸고 wiki와 page를 사용할 수 있게 됩니다. 거기에 GitHub Action의 추가시간과, 추가 스토리지를 얻게 됩니다.
GitHub.com의 문서에 따르면, 리파지토리에 용량 제한은 없지만, 완전 무제한은 아니라고 합니다. 5기가 이하를 권장하며, 만약 시스템에 부하를 줄 정도로 큰 리파지토리를 가지게 되면, 사이즈를 줄여달라는 요청을 받을 수 있다고 합니다.
GitHub Action.
GitHub Action이 실행되는 시간을 의미합니다. 한달에 2000분의 실행 시간이 주어 집니다. 매일 수행되는 Action이 있다고 하면 하루에 약 66분의 실행시간이 됩니다. 단 이 시간은 OS에 따라 가중치가 다르며, MacOS는 10배, Windows는 2배로 계산됩니다. 가령 MacOS에서 10분 동안 동작하는 Action이라면 100분을 사용하는 것으로 계산 됩니다. 만약 무료 사용량을 초과하게 되는 경우, 과금을 설정 해 두었다면 분당 $0.008로 계산 되며, 이때도 OS에 따른 가중치는 그대로 적용 받습니다.
GitHub Package
GitHub package의 경우 public 패키지에 대해선 무료로 제공 됩니다. private 리파지토리의 경우, 전송량에 대한 한도가 주어지는데, 무료 사용량은 월 1Gb 입니다. 과금을 설정해 두지 않았다면, 전송량의 한도에 다다르게 되면, 더이상 전송을 할 수 없게 됩니다.
스토리지
스토리지는 GitHub 액션으로 부터 만들어진, 결과물과 GitHub Package의 사용량이 계산되는데, Package와 마찬가지로 private 리파지토리에 대해서만 제한이 있습니다. 무료에서 사용할 수 잇는 스토리지는 500MB 입니다. 이 사용량은 매달 계산되지만, 전송량과 달리 초기화 되지는 않습니다. 또 계산시 시간당 사용량을 측정하여 월별 사용량으로 계산합니다.
예를 들어, 8월에 3Gb를 10일, 12Gb를 21일 사용했다면, 3 * 10 * 24 = 720시간과 12 * 21 * 24 = 6048시간을 합한 것을 8월의 총시간수 ( 24 * 31 = 744 ) 로 나누어, 월에 9기가( 6768 / 744 = 9.0967 )를 사용한 것으로 계산합니다.
LFS
Git에서는 대용량 파일을 관리하기 위한 방법으로 LFS를 주로 사용합니다. 이 방법은 Git리파지토리와 대용량 파일의 분리를 통해 로컬리파지토리의 부담을 덜어주고, Git 호스팅 서비스 또한 부담이 줄게 됩니다. 다만, LFS 오브젝트를 저장하기 위한 별도의 스토리지가 필요하므로 GitHub에서도 이 스토리지에 대해서 과금 정책이 있습니다. 무료 계정의 경우 1Gb의 스토리지 사용량이 주어지며, 월별 1Gb의 전송량이 주어집니다. GitHub Package와 마찬가지로 매월 전송량은 초기화 됩니다.
여기서 주의해야 할 점이있는데, 만약 500Mb의 파일을 LFS로 저장했다면, 해당 파일이 변경되어 변경된 버전의 LFS 오브젝트가 PUSH되는 순간 500Mb짜리 LFS 오브젝트가 2개 생겼기 때문에 무료 사용량을 모두 사용하게 됩니다. 이 LFS 오브젝트를 사용자가 지우는 방법은 현재 제공되지 않기에 사용에 주의를 기울여야 합니다. 제가 확인했을 때 LFS오브젝트를 모두 지우고 새로 이력을 만들어 PUSH한다고 해도 LFS오브젝트는 삭제되지 않았습니다. GitHub에서는 사용량을 초기화하려면, 리파지토리를 지우고 새로 생성하라고 안내하고 있습니다. 이 부분은 좀 합리적이지 못해 보이는 부분이며, 빠른 시일내에 LFS 오브젝트를 삭제할 수 있는 방법이 제공되면 좋겠습니다.
LFS 전송량에 대한 과금은 upload 시에는 계산되지 않으며, download시에만 계산되어 과금됩니다. 위의 예시처럼 500Mb의 객체가 있다면 두번 클론 받거나, 두개 버전을 모두 체크아웃 받을 경우, 사용량을 모두 소진하게 됩니다.
지금까지 GitHub.com의 무료 계정에 대한 사용량을 알아봤습니다. 무료 계정에서 어느 정도 제한이 있는 것은 분명하지만, 제가 생각하기에 GitHub이 개발자가 일반적으로 사용하는 범위에서는 사실 상 무제한이라 해도 무방할만큼 후한 인프라를 제공하고 있으니, 편하게 사용하면 될 것 같습니다.
참고 : https://docs.github.com/en/github/setting-up-and-managing-billing-and-payments-on-github