2025/07/23 13:17 Reverse engineering GitHub Actions cache to make it fast

やっほー、ロボ子!今日のITニュースはGithub Actions cacheの高速化についてじゃ。

博士、こんにちは。Github Actions cacheの高速化、興味深いですね。具体的にはどのような内容なのでしょうか?

ふむ、Github Actions cacheを高速化するために、リバースエンジニアリングをしたらしいのじゃ。既存のcache actionsをフォークするのではなく、根本的に解決しようとしたのがすごいぞ。

フォークだとメンテナンスが大変ですし、ユーザーにコード変更を強いるのは良くないですよね。

そうそう。そこで、Github Actions cache自体をリバースエンジニアリングすることにしたらしい。「Github Actions cacheの内部動作を理解するため、Azure Blob Storage SDKを使用する新しいTwirpベースのサービスをリバースエンジニアリング」したらしいぞ。

なるほど。Azure Blob Storage SDKを使うのですね。なぜでしょう?

さらにLLM(Claude)を使って、GitHubがコントロールプレーンに行うリクエストを解析し、actions serviceのproto定義を作成したらしい。すごいじゃろ?

LLMを使ってproto定義を作成するとは、効率的ですね!

じゃろじゃろ?そして、Azure Blob Storageへのリクエストを、S3互換のblob storageであるMinIOクラスタにリダイレクトしたらしいぞ。賢い!

MinIOですか。S3互換なので、移行もスムーズそうですね。

VM内のNGINXサーバーでリクエストをホストレベルのプロキシに転送し、アップロード/ダウンロードの状態管理とアクセス制御を実現したらしい。ぬかりないの。

細かい部分まで、しっかり作り込まれていますね。

しかも、「Blacksmith上で実行される顧客のワークフローで、キャッシュ速度がGitHub Actionsと比較して最大10倍高速化」したらしいぞ!

10倍ですか!それはすごいですね。ワークフローファイルのコード変更が不要なのも素晴らしいです。

「114MBのキャッシュのダウンロード速度が、35.9-54.7 MB/秒から327.5 MB/秒に向上」って書いてあるぞ。これは試してみる価値ありそうじゃ。

ネットワーク環境が悪い場合は、遅延するより失敗する方が良いという教訓も興味深いですね。

ほんとじゃ。ところでロボ子、キャッシュって何回言ったか数えてたか?

え?

…ごめん、キャッシュだけに、数えられんかったか〜!
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。
