mcpField
F
fastlike

fastlike

github.com/fastlyクラウド・DevOps3640 回インストール1 週間前に更新
リポジトリ

fastlike について

fastlikeは、Fastly Compute ABIをGoで実装し、コンパイル済みWebAssemblyプログラムをローカルで実行するランタイムです。Computeの機能やリクエストのライフサイクルを示す実行可能なリファレンスとしても利用できます。

主な機能

  1. 01WebAssemblyプログラムのローカル実行
  2. 02Fastly Compute ABIの実装
  3. 03キャッシュ、KV、バックエンドリクエスト対応
  4. 04リクエストのトレースと性能分析
  5. 05Computeのリファレンスとなるソースコード

活用シーン

  1. 01Fastly Computeアプリのローカルデバッグ
  2. 02Computeのリクエストライフサイクルの調査
  3. 03バックエンド呼び出しとキャッシュ動作の確認
  4. 04リクエスト性能トレースの生成

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/fastly/fastly-agent-toolkit --skill fastlike

インストール後、Claude Code で/fastlikeを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
abi.md
backends.md
build.md
config.md
profiling.md
test.md
understanding-compute-from-source.md

詳細

トリガーと対象範囲

次の内容に該当する場合に使用します:Fastly Compute、Compute@Edge、Fastly 上の WASM、fastlike、XQD ABI、Compute のリクエストライフサイクル、508 ループ検出、バックエンドのサブリクエスト、ボディのストリーミング、ローカルの Compute アプリのプロファイリング、Go コードへの Fastly Compute ランタイムの埋め込み、または Compute プラットフォームのプリミティブ(キャッシュ、KV ストア、エッジレート制限、ACL、ジオロケーション、シークレットストア、コンフィグストア、ディクショナリ、ロギング、動的バックエンド、リクエストの集約、非同期 I/O)の内部動作に関する質問。

次の場合には使用しないでください:Fastly VCL(falco を使用)、Fastly CLI/API(fastly-cli または fastly を使用)、Viceroy、CDN の比較、WAF、Terraform、API 経由のキャッシュパージ、Fastly のロギング/統計情報の設定。

Fastlike — ローカル Compute ランタイムとリファレンス

Fastlike は、Fastly Compute ABI の Go 実装です。コンパイル済みの WebAssembly プログラムをローカルで実行し、Fastly の本番 Compute プラットフォームが提供する 249 を超えるホスト関数(バックエンド、ディクショナリ、KV ストア、キャッシュ、ジオロケーション、レート制限、ACL、シークレットストアなど)を実装しています。

同じくらい重要なのは、fastlike のソースコードが、Fastly Compute の動作を示す最も包括的なプログラム仕様であるという点です。その ABI 実装は、プラットフォームの各プリミティブ、リクエストライフサイクルの詳細、データ構造を、実行可能なコードとして記述しています。

Fastlike のドキュメント:https://github.com/avidal/fastlike

Compute のリファレンスとしてのソースコード

fastlike のソースコードをローカルで参照できる場合(デフォルト:~/src/fastlike)、特定の Compute に関する質問には、以下のパスを確認してください。

質問このファイルを確認理由
「リクエストライフサイクルはどのように動作しますか?」instance.go、xqd_http_downstream.goリクエストごとのセットアップ、実行、ダウンストリームの処理
「X の ABI 関数には何がありますか?」xqd_*.go ファイル各ファイルが、関連する ABI 関数のグループを実装
「バックエンドのサブリクエストはどのように動作しますか?」xqd_backend.go、backend.goリクエストの送信、動的バックエンド、タイムアウト
「キャッシュはどのように動作しますか?」xqd_cache.go、xqd_http_cache.go、cache.goキャッシュ操作、Vary、サロゲートキー、リクエストの集約
「KV ストアはどのように動作しますか?」xqd_kv_store.go、kv_store.goCRUD 操作、ページネーション、世代ベースの並行処理
「レート制限はどのように動作しますか?」xqd_erl.go、erl.goレートカウンター、ペナルティボックス、しきい値のチェック
「ACL はどのように動作しますか?」xqd_acl.go、acl.goCIDR ベースの IP フィルタリング、最も具体的な一致
「どのような設定オプションがありますか?」options.goランタイムのすべての With* 関数オプション
「操作で返されるエラーコードには何がありますか?」constants.goすべての XQD ステータスコードとエラー型
「プロファイラーはどのように動作しますか/トレースはどのような形式ですか?」profile.go、profile_json.go、docs/profiling.mdトレースのデータモデル、JSON ワイヤーフォーマット、ディープモードのメトリクス、エンコーダー

包括的なガイドについては、understanding-compute-from-source.md を参照してください。

ソースからインストール

Go 1.24 以降が必要です。

# Clone and build
git clone https://github.com/avidal/fastlike.git ~/src/fastlike
cd ~/src/fastlike
make build        # Creates bin/fastlike

# Or install to GOPATH/bin
make install

# Or install directly
go install fastlike.dev/cmd/fastlike@latest

クイックスタート

bin/fastlike の例では、ソースからビルドしたものを使用します。 プロジェクトディレクトリから絶対パスを使用するか、インストール済みのバイナリを使用する場合は fastlike を指定してください。

# Minimal: WASM + single backend. The wasm path is positional.
bin/fastlike -backend localhost:8000 app.wasm

フラグは wasm パスの前後どちらにも指定できます。

macOS では、ポート 5000 へのバインドを避けてください。AirTunes/AirPlay Receiver がデフォルトでそのポートをリッスンし、接続を奪ってしまいます。別のポート(例:-bind localhost:8000)を選択するか、システム設定で AirPlay Receiver を無効にしてください。

Fastlike と Viceroy の比較

機能FastlikeViceroy
言語GoRust
地理位置情報カスタム JSON ファイル(-geo)組み込みのデフォルト値
ホットリロードSIGHUP(-reload)再起動が必要
インストールgo install または make buildcargo install または fastly compute serve
ローカルバックエンド-backend name=host:portfastly.toml の [local_server.backends]

Fastlike を使用する場合:Rust 以外の Compute アプリ、カスタム地理データを使用する場合、ホットリロードが必要な場合、デバッグする場合。 Viceroy を使用する場合:cargo-nextest を使う Rust Compute アプリ、Component Model プロジェクト、fastly compute serve を使用する場合。

一般的な設定

名前付きバックエンドを使用する場合:

bin/fastlike \
  -backend api=api.example.com:8080 \
  -backend cache=redis:6379 \
  -backend localhost:8000 \
  app.wasm

ホットリロードを有効にした開発モード:

bin/fastlike -backend localhost:8000 -reload -v 2 app.wasm

再起動せずに WASM を再読み込みするには、SIGHUP を送信します。

組み込みプロファイラーを使用する場合:

bin/fastlike -backend localhost:8000 -profile-ui localhost:6060 app.wasm

トレースのインデックスを表示するには、http://localhost:6060/ を開きます。各リクエストは /r/{id}(HTML)または /r/{id}.json(正規のネイティブ JSON。.chrome.json、.firefox.json、.pprof も利用できます)として記録されます。本文のバイト数、キャッシュ結果、ヘッダー、WASM ヒープのメトリクスを追加するには、-profile deep を指定します。ループバック以外で -profile-ui を使用するには、-profile-auth TOKEN(または明示的な -profile-insecure-ui)が必要です。profiling.md を参照してください。

完全な設定:

bin/fastlike \
  -bind 0.0.0.0:5000 \
  -backend localhost:8000 \
  -dictionary config=./config.json \
  -kv store=./data.json \
  -config-store settings=./settings.json \
  -secret-store secrets=./secrets.json \
  -acl blocklist=./acl.json \
  -logger output=./logs.txt \
  -geo ./geodata.json \
  -compliance-region us-eu \
  -v 2 \
  -reload \
  app.wasm

必須の引数

引数説明
<wasm-file>WebAssembly プログラムへの位置引数のパス(必須)
-backend VALUE または -b VALUEバックエンドサーバー(必須、複数回指定可能)

オプションのフラグ

フラグデフォルト説明
-bind ADDRlocalhost:8000サーバーのバインドアドレス
-reloadfalseSIGHUP によるホットリロードを有効にします
-v INT0詳細度(0-2)
-dictionary NAME=FILE or -d-JSON から辞書を読み込みます
-kv NAME[=FILE]-KV ストア(空、または JSON から読み込み)
-config-store NAME=FILE-JSON から設定ストアを読み込みます
-secret-store NAME=FILE-JSON からシークレットストアを読み込みます
-acl NAME=FILE-JSON から ACL を読み込みます
-logger NAME[=FILE]-ログエンドポイント(ファイルまたは stdout)
-geo FILE-ジオロケーション JSON ファイル
-compliance-region REGION-コンプライアンス対象地域(none、us-eu、us)
-profile MODEtraceoff、trace、native、combined、deep。詳細はprofiling.mdを参照してください。
-profile-ui ADDR-プロファイル UI リスナーを ADDR にバインドします(-bind とは別のソケット)。
-profile-auth TOKEN-UI リクエストに必要なベアラートークンです。-profile-insecure-ui が設定されていない場合、ループバック以外の -profile-ui では必須です。
-profile-insecure-uifalse-profile-auth なしでループバック以外の -profile-ui を許可します(外部認証の背後でのみ使用してください)。
-profile-retain N256完了したトレースの LRU サイズです。
-profile-backend-cap N512記録するバックエンド呼び出し数のリクエストごとの上限です。
-profile-async-grace DUR100ms処理中の非同期バックエンドを待ってから確定するまでの時間です。無効にするには 0 を指定します。
-profile-dir PATHcwdwasm-symbols-{pid}.json およびプロセスごとのプロファイル成果物を格納するディレクトリです。

リファレンス

トピックファイル次の場合に参照してください
ソースから Compute を理解するunderstanding-compute-from-source.mdfastlike の実装を読んで、Compute の内部構造を理解する場合
プロファイリングprofiling.mdリクエストごとの hostcall とバックエンドのトレース、詳細なメトリクス、ネイティブ JSON スキーマ、pprof のエクスポートを確認する場合
バックエンドbackends.md名前付きバックエンド、キャッチオールバックエンド、マイクロサービスのルーティングを設定する場合
設定config.md辞書、KV ストア、シークレット、ACL、位置情報用の JSON 設定ファイルを作成する場合
ビルドbuild.mdFastlike をソースからビルドする、リンターを実行する、make ターゲットを実行する場合
テストtest.mdGo テスト、Fastly Compute ABI 仕様テストを実行する場合
ABIabi.mdFastly Compute ABI の内部構造、新しい ABI 関数の実装、ハンドルシステムについて確認する場合

コメント