2
1

More than 3 years have passed since last update.

各種GitHub CDNでblobを配れるのか実験

Posted at

メモ。ゲームをGitHubのリポジトリから直接起動できるようにしたいんだけど、リポジトリから直接大きなblobが配れるのか調べてみた。

注: そもそも raw.githubusercontent.com 自体もFastlyのCDNで提供されるので、この目的でGitHub CDNを使うメリットはrate limit/転送量制限を回避できる( かも ) 程度でしかない。

どちらかというと、多数のファイルを提供することによる API rate limit の方が心配になってきた。。

結果

90MiBのバイナリを置いたリポジトリ( https://github.com/okuoku/90mb-blob-test )のblobをダウンロードできるかどうかで調査。

ダウンロードできた

ダウンロードできなかった

ダウンロードURLが出て来なかった

GitHub CDNとは?

GitHubにpushされている内容は、ファイル単位で直接HTTPSダウンロードできる。例えば、 https://github.com/okuoku/yuni の特定バージョンの README.md であれば、

というURLで直接ダウンロードできる。ただ、この raw.githubusercontent.com からのダウンロードはcontent-typeが text 固定になってしまいWebサイトの一部として利用するには不便なので、 GitHub上のリポジトリをファイル源として使用したCDNサービス というのがいくつか存在する。

主にGitHub CDNはWeb界隈で使用されていて、JavaScriptパッケージをWebサイトに導入するためによく使用されるし、普通はそれ専用のサービスを使用することが多い。(unpkg.org とか)

メジャーなサイトとしては https://rawgit.com というサイトが昔存在したが、マルウェアの配布に使用されるなどしたので閉鎖されてしまった。

容量制限

無料のGitHubリポジトリにコミットできるblobの最大サイズは、今のところ 100MiB に制限されている。このサイズを超えたblobを含むリポジトリをpushしようとするとエラーが出てGit LFSの利用を促される。

実はこの100MiB の制限は Cloudflare も一緒で、Cloudflareを使用しているGithackやrawgit.orgのようなサイトは自然にこの100MiBが制約となると考えられる。

更に、CDNサイトによっては個別の制約を入れていることもある。jsDelivrは20MiB、Staticallyは具体的なサイズは不明だが少くとも90MiBはダウンロードできなかった。

  • jsDelivr
    • File size exceeded the configured limit of 20 MB.
  • Statically
    • image.png

jsDelivr はファイルを自前のS3 bucketに保存しているらしく、そうだとしたら 20MiB の制限もかなり大盤振る舞いな気がしてしまう。

かんそう

最近Dockerの無料プランではイメージの保存期間やpullサイズが制約されることになって話題になった( https://www.publickey1.jp/blog/20/docker_hub6.html - さらに6時間あたり100 pullまでのrate limitも追加された)けど、トラフィック代は無料サービスにおいて常に問題になっている印象がある。

GitHubは同じような無料Gitホスティングサイトでは 最もrate limitが厳しく 、たとえば以前Qiitaでも話題になっていた github-readme-stats は、APIのrate limitを回避するために、パーソナルアクセストークン(主にコマンドラインツールでの利用を想定したOAuthトークン)を 複数発行してrate limitをN倍にする というトンでもねぇ対策( https://github.com/anuraghazra/github-readme-stats/pull/58 )を実装している。( Sランクって何だよ ってissueが日本の教育制度の所為にされてるのは面白いな。。)

... まぁGitHubは世界一儲かっているソフトウェア会社が運営しているわけで、どちらかというと設備上の問題を気にしたものだとは思うけど。。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1