Railsを高速かつセキュアにするHTTP/2プロキシ「Thruster」、37signalsがオープンソースとして公開
今回は「Railsを高速かつセキュアにするHTTP/2プロキシ「Thruster」、37signalsがオープンソースとして公開」についてご紹介します。
関連ワード (機能、自動管理、通常等) についても参考にしながら、ぜひ本記事について議論していってくださいね。
本記事は、Publickey様で掲載されている内容を参考にしておりますので、より詳しく内容を知りたい方は、ページ下の元記事リンクより参照ください。
Ruby on Rails(以下、Rails)の開発元である37signalsは、より高速でセキュアなRailsアプリケーションを実現するHTTP/2プロキシ「Thruster」をオープンソースとして公開しました。
We've released Thruster as open source! It's a tiny, no-config HTTP/2 enabling, asset caching, X-Sendfile sending proxy for Rails' default web server Puma. One of the secret sauce elements of ONCE, now available to share for all: https://t.co/YywkPD29aG
— DHH (@dhh) March 7, 2024
RailsにはPumaと呼ばれるアプリケーションサーバが用意されており、NginxなどのWebサーバ上でPumaを用いてRailsアプリケーションを実行することが典型的な構成です。
しかしそれだけではまだ十分な性能には到達せず、追加のWebサーバやCDNを利用するケースが多かったとし、それがThrusterを提供する理由だと同社のブログ「Thruster is now open source」で説明されています。
To reach the performance you’d expect, you’d typically need to deploy Puma along with additional web servers, CDNs, and the like. You usually end up with a few moving parts to set up and maintain.
期待するパフォーマンスを得るために、通常は追加のWebサーバやCDNなどと一緒にPumaを導入する必要があった。この場合、セットアップとメンテナンスのためにいくつかの設定が必要になる。
このCDNなどを不要にするのがThrusterだとしています。
So we designed Thruster to be a simple, zero-config answer to those missing pieces we weren’t yet getting from Rails & Puma. Something that we could just drop in to a project, but otherwise not have to think about.
そこで私たちは、RailsとPumaだけでは得られなかった、シンプルで設定不要のソリューションとしてThrusterを開発した。これをプロジェクトに組み込むだけで、他に考慮することはなにもなくなるのだ。
ほぼ設定不要でRailsの性能とセキュリティを向上
ThrusterはRailsアプリケーションのためのミニマルなHTTP/2プロキシとして開発され、Pumaとともに利用することで、Railsアプリケーションの高速化とセキュリティ向上を実現します。以下が具体的な機能です。
- HTTP/2サポート
- SSL(Let’s Encryptを用い、自動管理を実現)
- HTTPキャッシング
- X-Sendfile経由での効果的なスタティックファイルの配信と圧縮
Thrusterは設定不要で、Let’s Encryptを用いたSSL自動化処理のためにSSL_DOMAIN環境変数にドメイン名を設定するだけで利用可能と説明されています。