loading...
+ - 0:00:00
Notes for current slide
Notes for next slide

日野澤歓也 @ Deno Land Inc.

#edge_study Deno Deploy - 1 / 62

スピーカー

  • 日野澤 歓也 (ひのさわよしや)
    • twitter @kt3k

Deno 社コアメンバー (2021 -)

  • Deno の Node.js 互換機能の開発
  • Deno Deploy フロントエンドの開発
#edge_study Deno Deploy - 2 / 62

#edge_study Deno Deploy - 3 / 62

Deno Deploy

  • いわゆるサーバーレスホスティングサービス
  • JavaScript、TypeScript、Wasm をサポート
  • API は Web 互換 API + Deno 互換 API
#edge_study Deno Deploy - 4 / 62

Deno Deploy

  • 世界35リージョンに自動配信、Anycast 技術で一番近いリージョンに自動的にルーティングされる
  • コールドスタートは Tokyo は 170ms 程度 (EU, US, ASIA は大体この前後の数値)

#edge_study Deno Deploy - 5 / 62

Deno Deploy で出来ること

  • HTTP リクエストのサーブ
#edge_study Deno Deploy - 6 / 62

Deno Deploy で出来ること

  • HTTP リクエストのサーブ
  • 外向き HTTP リクエスト (fetch)
#edge_study Deno Deploy - 7 / 62

Deno Deploy で出来ること

  • HTTP リクエストのサーブ
  • 外向き HTTP リクエスト (fetch)
  • 外向き TCP コネクション (Deno.connect)
    • mysql, postgres, redis, etc と直接通信可
#edge_study Deno Deploy - 8 / 62

Deno Deploy で出来ること

  • HTTP リクエストのサーブ
  • 外向き HTTP リクエスト (fetch)
  • 外向き TCP コネクション (Deno.connect)
    • mysql, postgres, redis, etc と直接通信可
  • WebSocket のサーブ
#edge_study Deno Deploy - 9 / 62

Deno Deploy で出来ること

  • HTTP リクエストのサーブ
  • 外向き HTTP リクエスト (fetch)
  • 外向き TCP コネクション (Deno.connect)
    • mysql, postgres, redis, etc と直接通信可
  • WebSocket のサーブ
  • 外向き WebSocket 接続
#edge_study Deno Deploy - 10 / 62

Deno Deploy で出来ること

静的ファイルの配信

#edge_study Deno Deploy - 11 / 62

Deno Deploy で出来ること

静的ファイルの配信

  • プロジェクトに任意の量の静的ファイルをバンドルすることが出来る
    • (今の所データ量の制限は無し)
#edge_study Deno Deploy - 12 / 62

Deno Deploy で出来ること

静的ファイルの配信

  • プロジェクトに任意の量の静的ファイルをバンドルすることが出来る
    • (今の所データ量の制限は無し)
  • Deno.readFile API でそれらのファイルを読み込み可能
    • 内部的には Cloud Storage へのネットワークアクセスに読み替えられる
#edge_study Deno Deploy - 13 / 62

Deno Deploy の静的ファイル配信

#edge_study Deno Deploy - 14 / 62

Deno Deploy の静的ファイル配信

詳細はブログポスト参照
#edge_study Deno Deploy - 15 / 62

Deno Deploy の中身

#edge_study Deno Deploy - 16 / 62

よくある誤解

#edge_study Deno Deploy - 17 / 62

Deno Deploy って Cloudflare Workers で動いてるんでしょ?

#edge_study Deno Deploy - 18 / 62

A. 違います

#edge_study Deno Deploy - 19 / 62

Deno Deploy の中身

  • Rust 製のカスタムランタイム
  • OSS の Deno のコア部分は rusty_v8 / deno_core という crate として切り出されている
  • それらの crate を再利用する形でスクラッチから作られた runtime
#edge_study Deno Deploy - 20 / 62

余談: deno_core

  • deno_core はカスタムな JS runtime を作るためのインフラ、応用例:
    • chiselstrike (ORM)
    • astrodon (デスクトップアプリフレームワーク)
    • aurea (システムデーモン管理システム)
#edge_study Deno Deploy - 21 / 62

余談: deno_core

  • deno_core はカスタムな JS runtime を作るためのインフラ、応用例:
    • chiselstrike (ORM)
    • astrodon (デスクトップアプリフレームワーク)
    • aurea (システムデーモン管理システム)

Deno Deploy はこの deno_core インフラを応用した JS runtime の一つと見ることが出来る

#edge_study Deno Deploy - 22 / 62

Deno Deploy の中身

#edge_study Deno Deploy - 23 / 62

Deno Deploy の中身

  • Deploy の runtime を Linux VM に載せてデプロイしている
#edge_study Deno Deploy - 24 / 62

Deno Deploy の中身

  • Deploy の runtime を Linux VM に載せてデプロイしている
  • Kubernetes で VM のスケーリングを管理
#edge_study Deno Deploy - 25 / 62

Deno Deploy はどういう使い方をして欲しいか

#edge_study Deno Deploy - 26 / 62

Deno Deploy 推奨する使い方

#edge_study Deno Deploy - 27 / 62

Deno Deploy 推奨する使い方

  • プロクシなどの用途も良いですが・・・
#edge_study Deno Deploy - 28 / 62

Deno Deploy 推奨する使い方

  • プロクシなどの用途も良いですが・・・
  • アプリケーションを直接デプロイして欲しい
#edge_study Deno Deploy - 29 / 62

Deno Deploy 推奨する使い方

  • プロクシなどの用途も良いですが・・・
  • アプリケーションを直接デプロイして欲しい
  • (言い換えると) Edge as origin な使い方をして欲しい
#edge_study Deno Deploy - 30 / 62

Deno Deploy の
Edge as origin な使い方を支える
フレームワーク

#edge_study Deno Deploy - 31 / 62

Fresh

  • Deno 公式フレームワーク
  • Next.js に似た構成
    • ファイルベースルーティング
    • SSR サポート
    • Preact ベース
#edge_study Deno Deploy - 32 / 62

Fresh

  • Deno 公式フレームワーク
  • Next.js に似た構成
    • ファイルベースルーティング
    • SSR サポート
    • Preact ベース
  • 実績多数 (後述)
#edge_study Deno Deploy - 33 / 62

Aleph

  • Next.js / Remix に似た構成
    • SSR サポート
    • React サポート
#edge_study Deno Deploy - 34 / 62

Aleph

  • Next.js / Remix に似た構成
    • SSR サポート
    • React サポート
    • Vue サポート(!)
#edge_study Deno Deploy - 35 / 62

Aleph

  • Next.js / Remix に似た構成
    • SSR サポート
    • React サポート
    • Vue サポート(!)
    • Yew サポート(!) (<- Rust で書ける React)
#edge_study Deno Deploy - 36 / 62

Aleph

  • Next.js / Remix に似た構成
    • SSR サポート
    • React サポート
    • Vue サポート(!)
    • Yew サポート(!) (<- Rust で書ける React)
  • 実績あり (Deno Deploy 自体のダッシュボードなど)
#edge_study Deno Deploy - 37 / 62

その他のフレームワーク

  • Ultra
    • Next.js のレイヤーをカバー
  • Oak
    • Deno 界で一番古くからあるフレームワーク
    • Express のレイヤーをカバー
  • Hono
    • Bun, CF workers などでも動く
    • Express のレイヤーをカバー
#edge_study Deno Deploy - 38 / 62

事例

#edge_study Deno Deploy - 39 / 62

Deno Deploy 活用事例

https://deno.land/

  • Deno の公式ホームページ
  • 3rd パーティレジストリ、マニュアルなどを含んだ結構大きいサイト
  • Fresh 製、オープンソース
  • 8M req / day, 100+GB / day
#edge_study Deno Deploy - 40 / 62

Deno Deploy 活用事例

#edge_study Deno Deploy - 41 / 62

Deno Deploy 活用事例

他社の Edge worker

#edge_study Deno Deploy - 42 / 62

Deno Deploy 活用事例

他社の Edge worker

#edge_study Deno Deploy - 43 / 62

Deno Deploy 活用事例

他社の Edge worker

#edge_study Deno Deploy - 44 / 62

Deno Deploy 活用事例

他社の Edge worker

これらは内部的には Deno Deploy で動いている

#edge_study Deno Deploy - 45 / 62

Deno Deploy 活用事例

他社の Edge worker

これらは内部的には Deno Deploy で動いている

実際、Netlify Edge Function からのリクエストは Deno Deploy 全体のリクエストのかなり(50%以上)の割合を占めている

#edge_study Deno Deploy - 46 / 62

Deno Deploy 活用事例

他社の Edge worker

これらは内部的には Deno Deploy で動いている

実際、Netlify Edge Function からのリクエストは Deno Deploy 全体のリクエストのかなり(50%以上)の割合を占めている

実はこれらの製品は Deno Deploy の通常とは違うモードを使って実装されています

#edge_study Deno Deploy - 47 / 62

#edge_study Deno Deploy - 48 / 62

Deno Subhosting

  • Deno Deploy をバックエンドとして、自社の Edge worker サービスとして再販出来る仕組み
#edge_study Deno Deploy - 49 / 62

Deno Subhosting

  • Deno Deploy をバックエンドとして、自社の Edge worker サービスとして再販出来る仕組み
  • エンタープライズ向け
#edge_study Deno Deploy - 50 / 62

Deno Subhosting

  • Deno Deploy をバックエンドとして、自社の Edge worker サービスとして再販出来る仕組み
  • エンタープライズ向け
  • ランタイムは Deno Deploy そのもの。ユーザーのソースコードを任意に編集することで、自社製品との親和性が高い Edge worker 作ることが出来る
#edge_study Deno Deploy - 51 / 62

Deno Subhosting

  • Deno Deploy をバックエンドとして、自社の Edge worker サービスとして再販出来る仕組み
  • エンタープライズ向け
  • ランタイムは Deno Deploy そのもの。ユーザーのソースコードを任意に編集することで、自社製品との親和性が高い Edge worker 作ることが出来る

使いたい方(法人)は deploy@deno.com まで

#edge_study Deno Deploy - 52 / 62

Deno Deploy の開発環境

  • Deno Deploy の API は OSS の Deno のサブセットになっている
#edge_study Deno Deploy - 53 / 62

Deno Deploy の開発環境

  • Deno Deploy の API は OSS の Deno のサブセットになっている
  • Deploy で動くものは Deno で動く
#edge_study Deno Deploy - 54 / 62

Deno Deploy の開発環境

  • Deno Deploy の API は OSS の Deno のサブセットになっている
  • Deploy で動くものは Deno で動く
  • OSS の Deno 自体が Deploy の開発環境
#edge_study Deno Deploy - 55 / 62

Deno Deploy はベンダーロックイン?

#edge_study Deno Deploy - 56 / 62

Deno Deploy はベンダーロックイン?

  • Deno Deploy の API は OSS の Deno のサブセットになっている
#edge_study Deno Deploy - 57 / 62

Deno Deploy はベンダーロックイン?

  • Deno Deploy の API は OSS の Deno のサブセットになっている
  • Deploy で動くものは Deno で動く
#edge_study Deno Deploy - 58 / 62

Deno Deploy はベンダーロックイン?

  • Deno Deploy の API は OSS の Deno のサブセットになっている
  • Deploy で動くものは Deno で動く
  • Deploy 用に書いたアプリケーションはそのまま OSS の Deno でセルフホストできる
#edge_study Deno Deploy - 59 / 62

Deno Deploy はベンダーロックイン?

  • Deno Deploy の API は OSS の Deno のサブセットになっている
  • Deploy で動くものは Deno で動く
  • Deploy 用に書いたアプリケーションはそのまま OSS の Deno でセルフホストできる
    • ベンダーロックインではない
#edge_study Deno Deploy - 60 / 62

Pricing

#edge_study Deno Deploy - 61 / 62

以上、ご清聴ありがとうございました

https://deno.com/deploy

#edge_study Deno Deploy - 62 / 62

スピーカー

  • 日野澤 歓也 (ひのさわよしや)
    • twitter @kt3k

Deno 社コアメンバー (2021 -)

  • Deno の Node.js 互換機能の開発
  • Deno Deploy フロントエンドの開発
#edge_study Deno Deploy - 2 / 62
Paused

Help

Keyboard shortcuts

, , Pg Up, k Go to previous slide
, , Pg Dn, Space, j Go to next slide
Home Go to first slide
End Go to last slide
Number + Return Go to specific slide
b / m / f Toggle blackout / mirrored / fullscreen mode
c Clone slideshow
p Toggle presenter mode
t Restart the presentation timer
?, h Toggle this help
Esc Back to slideshow