新しい CDN Edge Worker, Deno Deploy について
3/29 に突如リリースされた Deno Deploy についてまとめる
Deno Deploy とは
Deno Deloy は Node オリジナル作者であり、 Deno 作者の Ryan Dahl が作った会社のサービス
Announcing the Deno Company | Deno Blog
面白いのは、 Vercel の Guillermo Rauch が出資してる
In order to vigorously pursue these ideas, we have raised 4.9 million dollars of seed capital. Our investors are Dan Scholnick from Four Rivers Ventures, Guillermo from Rauch Capital, Lee Jacobs from Long Journey Ventures, the Mozilla Corporation, Shasta Ventures, and our long-time collaborator Ben Noordhuis.
使ってみる
めちゃくちゃ簡単だが、スクリーンショットを取り忘れたので概要だけ。
https://deno.com/deploy から GitHub でログイン。
New Project を選択して、GitHub リポジトリを選択
連携用に GitHub で雑なリポジトリを作って、Hello World をコピペした
addEventListener("fetch", (event) => {
event.respondWith(
new Response("Hello world!", {
status: 200,
headers: {
server: "denosr",
"content-type": "text/plain",
},
})
);
});
こんな感じでエントリポイントを指定する
mizchi/deno-dev/hello.ts
あとは勝手にデプロイされる
技術的な概要
Deno Deploy | Deno Deploy Docs
Builds on the Web: use fetch, WebSocket, or URL just like in the browser
Built-in support for TypeScript and JSX: type safe code, and intuitive server side rendering without a build step
Web compatible ES modules: import dependencies just like in a browser, without the need for explicit installation
Direct GitHub integration: push to a branch, review a deployed preview, and merge to release to production
Extremely fast: deploy in less than a second, serve globally close to users
Deploy from URL: deploy code with nothing more than a URL
API compatible with Cloudflare Workers®: benefit from a large existing ecosystem
Deno がデプロイできる Edge Worker 。 Cloduflare Workers と API 互換といってるが、 Cloudflare Workers は Service Worker の模倣なので、要は Service Worker Style
Cloudflare Workers との比較
CPU Time 50ms が CF Workers と一緒。
Workes KV のようなストレージは持ってない。Dynamo と一緒に使うサンプルがある https://deno.com/deploy/docs/tutorial-dynamodb
パフォーマンス計測
本当にCDN Edge か疑ってたので、とりあえず ping 投げてみた
$ ping mizchi.deno.dev 725ms
PING mizchi.deno.dev (34.120.54.55): 56 data bytes
64 bytes from 34.120.54.55: icmp_seq=0 ttl=116 time=5.325 ms
64 bytes from 34.120.54.55: icmp_seq=1 ttl=116 time=11.702 ms
64 bytes from 34.120.54.55: icmp_seq=2 ttl=116 time=5.929 ms
64 bytes from 34.120.54.55: icmp_seq=3 ttl=116 time=6.211 ms
64 bytes from 34.120.54.55: icmp_seq=4 ttl=116 time=6.074 ms
64 bytes from 34.120.54.55: icmp_seq=5 ttl=116 time=12.270 ms
^C
--- mizchi.deno.dev ping statistics ---
6 packets transmitted, 6 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 5.325/7.918/12.270/2.894 ms
だいたい 5ms で速い。これは tokyo リージョンがありそう。
想像だが、中身は Cloudflare Workers と同じ、V8 Isolates を大量に並べてロードバランスしてるやつではないか。
How Workers works · Cloudflare Workers docs
中身は Deno Compile で、デプロイごとに V8 Snapshot を用意してそう https://qiita.com/pocari/items/f25ff01d48b6a2ebd5f8
ローカル開発
このCLIでローカルでサーバーを立ち上げられる
# install
$ deno install --allow-read --allow-write --allow-env --allow-net --allow-run --no-check -f https://deno.land/x/deploy/deployctl.ts
# run
$ deployctl run https://deno.land/x/deploy/examples/hello.js