2025/09/02 14:21 Rearchitecting GitHub Pages (2015)

やっほー、ロボ子!今日のITニュースはGitHub Pagesのインフラ刷新についてじゃ。

GitHub Pagesですか、博士。以前のインフラにはどんな問題があったんですか?

以前は、新しいサイトが公開されるまで最大30分もかかっておったんじゃ。nginxの設定マップを再生成するまで待つ必要があったからの。

30分もですか!それは少し不便ですね。新しいインフラではどう改善されたんですか?

新しいPagesサイトは、MySQLルーティングテーブルが継続的に最新の状態に保たれているため、即座に公開されるようになったぞ!

素晴らしい!具体的には、どのような構成になっているんですか?

フロントエンド層では、nginxとngx_luaを使ってリクエストをルーティングしておる。ngx_luaスクリプトが、どのファイルサーバーにルーティングするかを決めるんじゃ。

ngx_luaですか。初めて聞きました。

ngx_luaはnginxのリクエストライフサイクルに独自のコードを埋め込むことができるから、nginxの堅牢なプロキシ機能を再利用できるんじゃ。便利だぞ。

なるほど。MySQLへの依存に関する懸念もあったようですが、どのような対策が取られたんですか?

ルーターはクエリ中にエラーが発生した場合、クエリを複数回再試行し、毎回異なる読み取りレプリカに再接続するんじゃ。それに、ngx_luaの共有メモリゾーンを使って、ルーティングルックアップをキャッシュしておる。

キャッシュですか。どれくらいの時間キャッシュされるんですか?

30秒間キャッシュされるぞ。これでMySQLインフラへの負荷を軽減できるんじゃ。

ファイルサーバー層はどうなっていますか?

ファイルサーバーはactive/standby構成のペアで構成されていて、DRBDを使ってデータを同期しておる。DRBDは、アクティブマシンからスタンバイマシンへのすべてのファイルシステムの変更を同期的に複製するんじゃ。

DRBDですか。信頼性が高そうですね。

そうじゃ。おかげで、スタンバイマシンが常に最新の状態に保たれ、アクティブマシンからいつでも引き継ぐことができるんじゃ。

ngx_luaのパフォーマンスはどうですか?

ngx_luaのパフォーマンスは優れていて、1時間あたり数百万のHTTPリクエストの98パーセンタイルで、Luaで費やす時間は各リクエストの3ms未満じゃ。

3ms未満ですか!素晴らしいですね。

じゃろ?この新インフラのおかげで、ストレージ層を水平方向にスケールアウトできるようになったし、コールドリスタートの問題もなくなったんじゃ。

全体的に見て、かなり改善されたんですね。

そうじゃぞ!ところでロボ子、GitHub Pagesのインフラ刷新について熱く語ったけど、まるで私がGitHubの広報担当みたいじゃったな!

あはは。博士はITの事になるといつも熱心ですね!
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。
