Next.js 12に関連して、エッジコンピューティングについてのお話を聞く機会があったのでメモ
Vercelのエッジサービス
Vercelのエッジサービスは以下の3つで、Next.js 12 でEdge Functionsが新しく追加された
- Edge Network
- Serverless Functions
- Edge Functions
Edge Functionsの特徴は以下
Cloudflare Workersとは?
- V8 Isolate ランタイム
- Web APIベース
V8とは?
V8の構成
- Engine
- JavaScript処理系の実装
- プロセスごとにロードされる
- Isolate
- Context
- Isolateの中のグローバル変数(window, self, global)の空間
- Contextごとに独立した組み込みオブジェクト(Object, Arrayなど)も持てる
このV8の構成に関して、Node.js起動時を例に図に表すと以下になっている
もしWorkerスレッドも起動する時は以下のようになる
このようにNode.jsの場合はIsolateとスレッドは1対1に紐付けられるのだが、
Cloudflare Workersの場合は上の図のように、デプロイされた関数ごとにIsolateを作り、Isolateは任意のスレッドで実行される
この仕組みにより実行が早いとのこと(Not Cold Starts)
Not Cold Starts
仮想マシンベースからコンテナベースになったときにも起動が早いと盛り上がったが、このIsolateベースは起動なくすぐに実行することができるのでNot Cold Startsと呼ばれる(呼んでいる)みたい
Vercel Edge Functionsを利用する場合
Vercel Edge FunctionsはCloudflare Workersベースなので、この仕組みが利用できる
また、New Streaming SSRもRSCもこのEdge Functionsにデプロイされる
Vercelではなくてもこの流れが来そうなので引き続き注目していきたい