より少ないコードでより多くをエッジで実現 : expressly のご紹介
Compute@Edge が馴染みのあるフレームワークと同様の方法で使用できるようになりました。Fastly は先日、Compute@Edge 上で動作する JavaScript アプリケーション用の軽量でシンプルなルーティングレイヤー、expressly をリリースしました。これは、広く普及している Node.js のフレームワーク、Express から着想を得て開発されたものです。
Compute@Edge は基盤となるプラットフォームであるため、開発者はライブラリを使用して好みの言語で迅速にイテレーションを実行できます。例えば同僚の Kailan は先日、Rust で Edge Side Includes 向けのライブラリを作成して同様のことを行いました。
expressly によって、Compute@Edge で JavaScript を使ってより簡単に構築することが可能になり、開発者はビジネスロジックに専念できるようになりました。expressly は、以下を含む便利な機能を豊富に備えています。
Express スタイルのパス文字列を使用した、複雑なルーティングロジックの簡素化
パスパラメーターの定義
Cookie の管理
検索パラメーターの操作
ミドルウェア関数やエラー処理ミドルウェア関数を使用したリクエストフローのコントロール
Vary ヘッダーと Surrogate-Key ヘッダーの操作の簡素化
その他さまざまな機能
より少ないコードでより多くを実現
私たち開発者にとって、大量のコードを削除するほど嬉しいことはありません。expressly を使用して Fastly の Developer Hub のコードサンプルをいくつか書き換えているうちに、喜びがこみ上げてきました。
expressly を使用して Compute@Edge アプリケーションを構築するイメージを掴んでいただけるように、次の要件に沿ってアプリケーションシナリオを考案しました。
/base64/[something]
へのリクエストURL パスのセグメントを読み込む
読み込んだセグメントを Cookie に書き込む
デコードしてレスポンスボディに格納する
デコードが失敗した場合は500のステータスコードを返し、レスポンスボディにエラーメッセージを含める
/status/[anything]
へのすべてのリクエストをオリジンサーバーに転送するその他の場合は、状況に応じて
405
(Method Not Allowed) のレスポンス、または404
(Not Found) のレスポンスを送信する
expressly を使用せずにこのシナリオを実装する方法を見てみましょう。
次に、同じアプリケーションロジックで、expressly を使用した場合の例を見てみましょう。
こちらの方がスマートですよね。expressly のルートマッチャー、ビルトインのパスパラメーターパーサー、デフォルトのエラー処理ミドルウェアによって、想定した複雑なシナリオの実装がよりシンプルになります。ぜひご自身で試してみてください。undefined
expressly を使用するには
Node.js と JavaScript の Compute@Edge サービスをまだセットアップしていない場合は、セットアップから開始します。
expressly のインストール
npm レジストリから expressly をインストールします。
npm i @fastly/expressly
初めての expressly アプリケーション
Compute@Edge アプリケーションの src/index.js
の内容を次のように変更します。
import { Router } from "@fastly/expressly";
const router = new Router();
router.get("/", async (req, res) => {
return res.send("Hello world!");
});
router.listen();
実際に試してみる
アプリケーションをローカルで起動します。
fastly compute serve
これにより、http://localhost:7676 でサービスが開始されます。
準備はできましたか?
@fastly/expressly@1.0.0-alpha.x
は現在、開発テスト用に提供されています。Fastly は今後も expressly を使用したコードサンプルを集めて、Developer Hub でご紹介していきます。発想を広げるためにぜひ参考にしてください。
実際に試してみたい場合は、このブログ記事の2番目の fiddle のクローンを作成し、Fastly のアカウントを作成せずにご自身のオリジンサーバーでテストしてください。完全なグローバルサービスを公開する準備ができたら、Compute@Edge の無料トライアルに登録してください。すぐに expressly の使用を開始できます。