先日、Rails8のマイルストーンが発表された。
その中でAirlockという謎のワードがでていたのをご存知だろうか
Railsのフロントエンドは7以降import-mapsを使ったstimulusコントローラのオートローダーを導入している
基本的に何もしなければRailsアプリケーションはTurboによって最初からSPA化されてるということもあり、このローダーはデフォルトで初回表示時にimport-maps内に記載されてるStimulusコントローラの全ダウンロードを実施する
この読み込みを高速化するため、Rails7系以降はhttp/2化がパフォーマンス上の重要な要件となっている
こういった需要に応えるべくRailsがアプリケーションサーバーとして採用しているpumaでも議論が行われるがまだ絶賛その最中である
そういった背景もあり、このhttp/2化に対する簡易的な返答は前段にnginxやh2oたてるかcloudflare的なものをかますというものだった
ミドルウェアを自前で前段に立てるのはちょっと複雑性があがるので正直面倒だがcloudflareを挟むのはかなり良い感じでワークしてくれるのでDHHもこういうケースの質問にはこれまでそうすりゃいいよ的なレスをしていた
とはいえRailsが自動生成するDockerfileとKamal設定(これもrails8のマイルストーンに入っている)だけでシンプルにやりたい勢向けにHTTP/2、パブリックキャッシュ、X-Sendfileセットアップを提供する設定不要の小さなGoベースのプロキシを構築したよということらしい
多分流れ的にはkamalに組み込まれて利用者は意識することなくその恩恵を教授できるようになると思われる
マイルストーン発表時はAirlock(仮)という名前だったがこの度Thrusterという名前に決定したらしい
私もシンプルRails教の1人なので楽しみである