Share
Embed
Transcript
25 slides
-
3 世界中のエッジネットワーク(DC)で動くサーバーレスJavaScriptプラット フォーム ・Service Worker 風の API をサーバーサイドに持ち込んだ仕組み ・Chrome V8のIsolateを利用し実行環境の隔離を実現
速習Cloudflare Workers How Workers works https://developers.cloudflare.com/workers/reference/how-workers-works/ -
4 分散型のオブジェクトストレージ Cloudflare Workers 上のメモリ状態を永続化する機能を持つ (Workers KVとは異なり強整合を保証) 速習Durable Objects Zero-latency
SQLite storage in every Durable Object https://blog.cloudflare.com/sqlite-in-durable-objects/ -
5 2024年4月のCloudflare Developer Weekで発表されたCloudflare Worker上で実行されるワークフロー機能(現在Public beta) 概要 Cloudflare Workflows Data
Anywhere with Pipelines, Event Notifications, and Workflows https://blog.cloudflare.com/data-anywhere-events-pipelines-durable-execution-workflows/#durable-execution -
6 従来のWorkersやQueueのみでは実装難度が高かったマルチステップでの 耐久性の問題を克服 ・ステップごとに 自動的にリトライを行い回復性を持たせたい ・独立したステップごとに依存関係を持たせ、実行順序を制御したい ・ステップごとに状態を永続し、冪等性を持たせでワークフローを再開し たい...etc 概要 Cloudflare
Workflows ※厳密には全く別物だが、AWSのLambdaとStepFunctionsでステートマシンを組むイメージ に近い(あくまでイメージ) -
7 マルチステップの実行状態の保持のためにDurable Objects+SQLiteが使 用されている 仕組み(簡易版) Cloudflare Workflows Build durable applications
on Cloudflare Workers: you write the Workflows, we take care of the rest https://blog.cloudflare.com/building-workflows-durable-execution-on-workers/#durability -
8 マルチステップの実行状態の保持のためにDurable Objects+SQLiteが使 用されている 仕組み(簡易版) Cloudflare Workflows Build durable applications
on Cloudflare Workers: you write the Workflows, we take care of the rest https://blog.cloudflare.com/building-workflows-durable-execution-on-workers/#durability ワークフローが失敗すると DOのSQLiteに対してステップの実行 状態が記録される -
9 マルチステップの実行状態の保持のためにDurable Objects+SQLiteが使 用されている 仕組み(簡易版) Cloudflare Workflows Build durable applications
on Cloudflare Workers: you write the Workflows, we take care of the rest https://blog.cloudflare.com/building-workflows-durable-execution-on-workers/#durability 同じインスタンス ID(ワークフローの実行単位 )を指定し再度実行 すると前回成功したステップはキャッシュされている -
10 マルチステップの実行状態の保持のためにDurable Objects+SQLiteが使 用されている 仕組み(簡易版) Cloudflare Workflows Build durable applications
on Cloudflare Workers: you write the Workflows, we take care of the rest https://blog.cloudflare.com/building-workflows-durable-execution-on-workers/#durability 冪等性を保ったままワークフローの特定のステップの処理を再開 できる -
16 脱線: Bindingsについて Cloudflare Workflows Cloudflare Workersから他のCloudflarのリソース(D1, Queue… etc)へ のアクセスはBinding経由で行うことができる
wrangler.tomlに設定を記載するのみで、同一ゾーンであれば認証等の設 定なし環境変数経由でアクセスが可能(Cloudflare 内部のネットワークを 通るので公衆インターネット網は通らない) -
17 脱線: Service Bindingsについて Cloudflare Workflows Workersの別のWorkersの呼び出しの際に使用できるService Bindingsと いう仕組みがある RPC機能を使用することで実体としてはリモートのWorkersにアクセスし
ているが、シリアライズ等不要でローカルに定義された関数と同等に扱う ことができる(!?) Introducing Services: Build Composable, Distributed Applications on Cloudflare Workers https://blog.cloudflare.com/introducing-worker-services/ -
18 Embeddingのプロセスをワークフロー化 非同期I/Oが多いためリトライ制御や耐久性を持たせた実行をできるのが嬉しい ユースケース①(公式) Cloudflare Workflows Data Anywhere with Pipelines,
Event Notifications, and Workflows https://blog.cloudflare.com/data-anywhere-events-pipelines-durable-execution-workflows/#durable-execution -
19 個人開発しているアプリ内でCloudflare WorkerflowsとCron Triggerを 利用しようとしている(鋭意リプレイス中) ・Youtube/Twitch/ツイキャス/(Niconico/Bilibili)等からの定期的な動 画、配信者情報の取得 ・動画情報の翻訳 ・Discordチャンネルに対しての一斉配信 …etc
ユースケース②(動画情報取得/翻訳タスク/Discordへ配信) Cloudflare Workflows -
22 全体構成 サーバーサイドを CloudflareStackに ユースケース②(動画情報取得/翻訳タスク/Discordへ配信) Cloudflare Workflows バックグラウンドの Jobを全てWorkflows経由に リトライ制御をしたい独立した非同期
I/Oが多いので Promise.allSettledで複数 ステップを実行