シンガポールのSupabaseは、セルフホスティングであるDeno Edge Function向けの、カスタムDenoランタイムを使用するRustで記述されたWebサーバ「Supabase Edge Runtime」をオープンソース化したことを、4月11日(現地時間)に発表した。
Supabase Edge Runtimeは、Deno Deployを使用して30以上のデータセンターでグローバルにエッジ関数をホストしているため、非常に高速な応答を得られるWebサーバ。Supabase CLIを通じて、JWTの検証、インポートマップ、カスタム環境変数の受け渡しといった機能をサポートするほか、Deno Deployランタイムで使用可能なものと同じAPIを公開することによって、デプロイ時の失敗を回避できる。
さらに、メモリとウォールクロックの時間を制限するオプションが用意されており、関数のリソース使用量をシミュレートして、制限に達した場合の動作を処理することが可能となっている。
リクエスト受信を待ち受けるためのhyperを用いたHTTPサーバが実装されており、起動するとJSコンテキスト(メインワーカー)がスピンアップされ、メインモジュールとは異なるスレッドで処理を行う。新たなHTTPリクエストを受信すると、Rustランタイムはそれをメインワーカーに転送する。
メインモジュールは、送られてくるすべてのリクエストを取り扱うよう設定できる点はDeno Edge Functionと同様ながら、EdgeRuntimeと呼ばれるグローバルオブジェクトにアクセスできる点がDeno Edge Functionとは大きく異なる。
さらに、ユーザーワーカーを作成するとともにユーザーワーカーへのアクセスを提供し、メインワーカーはリクエストに対する処理や応答を、ユーザーワーカーに委任するオプションを備えている。
ユーザーワーカーは、特定のエッジ関数を実行可能な独立したJSコンテキストであり、APIは制限されるほか、ユーザーワーカーが実行できるメモリと時間の制御に対応する。
そのほか、サーバの動作時にEdge Runtimeのメインワーカーがバックグラウンドで動作することから、メインワーカーを定期的なタスクの実行に使えるようになるほか、Edge Runtimeによって使用可能なグローバルオブジェクトを制御できるようになっている。
今後は、他のSupabaseサービスへのAPIゲートウェイとして機能するEdge Runtimeを、Kongの代わりに使用する予定であり、Edge Runtimeの使用によってセルフホスティングのセットアップが簡素化されるとともに、JavaScriptを使用してリクエストの前処理と後処理が可能になる。
- 関連リンク
この記事は参考になりましたか?
- この記事の著者
-
CodeZine編集部(コードジンヘンシュウブ)
CodeZineは、株式会社翔泳社が運営するソフトウェア開発者向けのWebメディアです。「デベロッパーの成長と課題解決に貢献するメディア」をコンセプトに、現場で役立つ最新情報を日々お届けします。
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です