Fastly Compute を便利に使う Tips (3) 公式から公開されているソースコードやベストプラクティス
この記事は Fastly Compute (旧 Compute@Edge) 一人アドベントカレンダー 24 日目の記事です。
Fastly が公式に公開している Compute のコードやデモは多岐にわたっているのですが、配信方法が多岐に渡っていて Web サイトや GitHub リポジトリ、コミュニティサイトなど様々な方法で公開されていてすぐに全容を掴むことが難しいと感じることがあります。本稿ではソースコードやベストプラクティスという観点で公式情報を見る場合にはどのページを見ればよいかというガイドとリンク集を作るつもりで、個人的に気になる内容を中心に紹介していきます。
GitHub (github.com/fastly)
GitHub 上の Fastly org 上では様々なリポジトリが公開されていますが、Starter Kit や各言語の API クライアントなど Compute 以外の用途のリポジトリも数多く公開されています。Compute に絞った形で見ていくと、2023 年末現在で以下のようなリポジトリが見つかります。
- File Server
- JakeChampion/compute-file-server - KVStore にデータを格納する方式
- fastly/compute-js-static-publish - 特別な外部ストレージは利用せずに .wasm ファイルの中にファイルを格納する方式(ブログ記事)
- ESI(Edge Side Includes)
- fastly/compute-js-esi - JS による ESI の実装例 (Rust 版よりも対応タグ数が多い)
- fastly/esi - Rust による ESI の実装例(ブログ記事)
- Frontend
- fastly/next-compute-js - Next.js を動かすためのライブラリ(ブログ記事, example)
- fastly/remix-compute-js - Remix を動かすためのライブラリ(ブログ記事)
- Fanout
- fastly/fanout-compute-js-demo - JS で実装された Fanout のデモ
- fastly/fanout-chat-demo - edge 側は JS、サーバサイドは Python で実装されたチャット実装のサンプル。サンプルのサーバサイドは Glitch で動作しているためすぐにコピー(Remix)して使い始められる。
- fastly/fanout-leaderboard-demo - edge 側は JS、サーバサイドは Node.js で実装されたチャット実装のサンプル。こちらもサンプルのサーバサイドが Glitch で動作しているためすぐにコピー(Remix)して使い始められる。
- Security
- fastly/compute-hibp-filter - hibp を使って予め生成された漏洩パスワードのハッシュのためのフィルタを事前に KVStore に登録しておきパスワードの脆弱性チェックを行うことができる(デモ)
- fastly/CaptchaOnEdge - captcha クレートを利用したシンプルなキャプチャのデモ
- テストやベンチマーキング
- fastly/js-compute-testing - Fastly Compute での利用を想定した Node.js ベースの E2E テスト用へルパライブラリ。テストランナーや言語 SDK との依存関係はないのでどのランナーや言語 SDK を利用していても使える(例:Jest を使って Rust SDK で構築したアプリを E2E テストするような用途にも利用可能)
- fastly/compute-js-opentelemetry - JS での OpenTelemetry 実装
- その他
- fastly/url-shortener - Rust で書かれた URL 短縮サービスのデモ(KVStoreベース)
- fastly/http-compute-js - Node.js の http.IncomingMessage クラスや http.ServerResponse クラスと同様のインターフェースを Fastly Compute でも提供するためのライブラリ(ブログ記事)
- fastly/compute-segmented-caching - VCL で利用可能だったセグメントキャッシュの Compute 版実装
- fastly/compute-ll-hls - LL-HLS (Low Latency HLS) のプレイリストを配信するサーバの Rust 実装
Developer Hub
Fastly の Developer Hub(https://developer.fastly.com/) は Compute 周りの開発に関する情報量が最も多い Web サイトで、Getting Started ガイド、API リファレンス、チュートリアルやデモなどあらゆる情報が公開されていて、今回の一人アドベントカレンダーの中でも何度も紹介させてもらっています。中でも Core Concepts と呼ばれる章は Fastly を使いこなす上でベストプラクティスがまとめられている章になっていて、使い込んでいくと何度も参照することになります。
Develoer Hub の中でソースコードや Demo が確認できる主なページは以下の通りです;
-
Solutions > Code examples
- 大量のサンプルコードが公開されています。
- 画面左のサイドバーで言語カテゴリを選んでサンプルをみていくことになります(検索性が低いのが玉に瑕ですが・・)
-
Solutions > Tutorials
- GraphQL、 Waiting room などの開発チュートリアルが公開されています
-
Solutions > Starter kits
-
Rust や JavaScript での OAuth2.0 の実装をはじめとした開発初期のテンプレートとして使えるリポジトリが紹介されています(
$fastly compute init
で初期化する際に利用されるテンプレートの中身も確認できます)
-
Rust や JavaScript での OAuth2.0 の実装をはじめとした開発初期のテンプレートとして使えるリポジトリが紹介されています(
-
Solutions > Demos
- Captcha の例や TensorFlow Lite を使った Edge ML の例、Fanout を使ったリアルタイム処理の実装例など各種動作を体験できるデモが公開されています
Fastly コミュニティ
Fastly Connect(https://community.fastly.com/) と呼ばれるコミュニティサイトでは掲示板形式で Compute 含む Fastly 全般について情報交換や質問、議論などが行われていて、コードが思ったように動かない時などに GitHub の Issue 等以外でもこちらの場で質問や議論などをすることができます。英語でのコミュニケーションにはなってしまいますが比較的回答がつく確率は高いと思いますので、もし何か気になる内容があればこちらで尋ねてみるのもよいかと思います。
まとめ
本稿では Fastly の公式サイトや GitHub 上でで公開されているソースコードやベストプラクティス等のコンテンツについて個人的に気になる内容を中心に紹介しました。最終日の次回の記事内容は未定です(※投稿が完了したらこちらも更新するかもしれません)
Discussion