Edge Forms
Worker、ストレージ、キュー、ワークフロー、Actorの設定と振る舞いを定めるForm定義です。コードのバージョン、トラフィック、データ、実行のきっかけを分けて組み合わせ、変更したい部分を指定できます。各ページで用途、組み合わせ、設定項目、正確なパッケージ参照を確認できます。
共通モデルとAPIの説明先
このサイトでは、Edge Formsの公開元が提供する契約と、パッケージに含まれる正確な例を確認できます。公開元に共通するモデルとHost APIは、別のTakoformのサイトとHost APIリファレンスで説明しています。FormごとのdefinitionVersionはAPIプロトコルの版とは別です。クライアントライブラリとTerraform/OpenTofuプロバイダーも、それぞれ独立した版で公開されます。これらを同期させる独立した仕様の版はありません。
Workerアプリケーション
ModuleWorker → WorkerVersion → WorkerDeploymentの順に、アプリケーションの識別子、コードと設定のバージョン、トラフィックの割り振りを定義します。 WorkerBundleはコードの成果物を特定します。WorkerEndpointとWorkerCustomDomainは、デプロイへの接続方法を定義します。
やりたいことから選ぶ
- HTTP APIやWebサイトを公開する: ModuleWorker 0.1.0 + WorkerBundle 0.1.0 + WorkerVersion 0.3.0 + WorkerDeployment 0.2.0 → WorkerEndpoint 0.1.0 / WorkerCustomDomain 0.1.0
- コードと一緒に静的ファイルを配信する: StaticAssetBundle 0.1.0 → WorkerVersion 0.3.0
- アプリケーションのデータを保存する: SQLiteDatabase 0.1.0 / ObjectBucket 0.1.0 / EdgeKVNamespace 0.1.0 → WorkerVersionの型付きBinding
- 依頼を受け付け、後で処理する: AtLeastOnceQueue 0.1.0 + QueueConsumer 0.1.0
- 決まった時刻に処理する: WorkerCronTrigger 0.1.0 → Workerのscheduledハンドラー
- IDごとの状態を管理する: ActorNamespace 0.1.0
- 複数段階の処理を再開する: DurableWorkflow 0.1.0
- データベースのスキーマを変更する: SQLiteMigrationSet 0.1.0 → SQLiteMigrationApplication 0.1.0 → SQLiteDatabase 0.1.0
ストレージは、SQLでの検索やトランザクションならSQLite、オブジェクト本体と書き込み後の強い読み取り一貫性ならObjectBucket、反映の遅れを許容できるキー・バリューデータならEdgeKVNamespaceを選びます。
Queue・Workflow・Actorの違い
- AtLeastOnceQueue 0.1.0: 画像処理などの独立したジョブを貯め、受信側で処理する。順序を保証しない、少なくとも1回の配信。重複を安全に処理する。
- DurableWorkflow 0.1.0: レポート生成 → 承認待ち → 配信など、進捗を保って続きを実行する。記録済みの結果を再利用するが、記録前の副作用は重複し得る。冪等性とコード変更時の再実行互換性が必要。
- ActorNamespace 0.1.0: 部屋やセッションのIDごとに状態を持ち、呼び出しを順番に扱う。Formで設定するのは名前空間とクラス。ActorのIDごとにインフラのリソースを作らない。
組み合わせの流れ
- HTTP:Workerの識別子を作り、コードのArtifactを確定し、両方を参照するバージョンを作成します。Deploymentでトラフィックを割り当て、EndpointまたはCustomDomainでそのWorkerの有効なデプロイへHTTPを接続します。バージョンを作るだけでは公開されません。
- Queue:WorkerVersionの送信側Binding → AtLeastOnceQueue → QueueConsumer → ModuleWorkerのqueueハンドラー。送信と受信は別の接続で、QueueConsumerは送信側Bindingではありません。送信側と受信側に別のWorkerを使えます。
- SQL:順序付きSQLをマイグレーションのArtifactとして定義し、SQLiteMigrationSetで特定し、SQLiteMigrationApplicationでそのセットとデータベースを指定します。コードからの接続は、別にWorkerVersionのBindingで行います。Applicationを削除してもSQLは元に戻りません。
現在のForms
署名付きのEdge Formsは17種類です。公開パッケージの内容を取得して検証済みです。
| Form | 用途 |
|---|---|
| ActorNamespace 0.1.0 | IDごとに状態を保存し、処理を順番に実行するActorの名前空間を定義します。 |
| AtLeastOnceQueue 0.1.0 | 順序を保証せず、少なくとも1回配信するメッセージをキューに保存します。 |
| DurableWorkflow 0.1.0 | プロセスが終了しても、インスタンスの処理を再開できる複数段階のワークフローを定義します。 |
| EdgeKVNamespace 0.1.0 | キーと値のバイト列を、結果整合性のストレージに保存します。 |
| ModuleWorker 0.1.0 | Workerアプリケーションに、変わらない識別子を付けます。 |
| ObjectBucket 0.1.0 | 書き込み後の強い読み取り一貫性を持つオブジェクトを保存・ストリーミングします。 |
| QueueConsumer 0.1.0 | キューのメッセージをWorkerのqueueハンドラーに配信します。 |
| SQLiteDatabase 0.1.0 | edge.sql Interfaceを通してリレーショナルデータを扱います。 |
| SQLiteMigrationApplication 0.1.0 | 一つのデータベースに、指定したマイグレーションセットを適用します。 |
| SQLiteMigrationSet 0.1.0 | 順序が固定された、変更不可のSQLマイグレーション履歴を指定します。 |
| StaticAssetBundle 0.1.0 | Workerと一緒に配信する、変更不可の静的ファイルを指定します。 |
| WorkerBundle 0.1.0 | Workerコードの変更不可のビルド成果物を指定します。 |
| WorkerCronTrigger 0.1.0 | UTCのcronスケジュールに従ってWorkerのscheduledハンドラーを呼び出します。 |
| WorkerCustomDomain 0.1.0 | 管理しているホスト名を、Workerの有効なデプロイに接続します。 |
| WorkerDeployment 0.2.0 | トラフィックを受け取るWorkerのバージョンを選びます。 |
| WorkerEndpoint 0.1.0 | 有効なデプロイを、Hostが割り当てたHTTPSアドレスで公開します。 |
| WorkerVersion 0.3.0 | コード・ハンドラー・設定の組み合わせを、変更不可のバージョンとして定義します。 |
定義を使う
Formを選び、利用するHostがその正確なバージョンに対応しているかを確認し、設定のスキーマをクライアントで使います。掲載している例はJSONデータであり、OpenTofuの設定や完全なHost APIリクエストではありません。
まず設定例を見る場合は、パッケージに含まれるWorkerVersion 0.3.0のJSON例をご覧ください。どの例も設定の形を示すデータで、Host APIのリクエストやOpenTofuの設定ではありません。
Hostの対応や受け入れ判断は、パッケージの公開とは別です。パッケージを読むだけでリソースが作成されたり、ホスティングが提供されたりすることはありません。 検証方法はTakoformの導入ガイド、クライアントやHostの実装は実装ガイドを参照してください。
- アプリを作る:利用するHostのドキュメントで接続先・認証・対応する正確なFormRefを確認し、そのHostで使うOpenTofuの案内またはGoクライアントの手順へ進みます。ここに載せたJSONは設定の形を読む例で、配備手順ではありません。
- Hostやクライアントを実装する:Coreの実装ガイドで共通APIと検証の手順を確認します。各Formの振る舞いを実装する必要があり、Schemaの検証だけでは対応済みになりません。
- 定義を検証する:各ページのパッケージ参照から、正確なタグ・ダイジェスト・Schemaを照合します。パッケージ検証は利用するHostへの接続なしで試せます。
過去のバージョン
以前の定義も元のURLで取得できます。現在の署名セットには含まれません。