Zenn
Open1

NextjsのランタイムとCloudflare workersについて(個人メモ)

takigontakigon

Next.jsのランタイム

エッジランタイムとは

  • エッジサーバーでコードを実行するための環境
  • 従来のサーバーサイドとは異なり、地理的に分散したエッジサーバー上でコードが実行されるため、低レイテンシ、動的なコンテンツ生成、サーバー負荷軽減などのメリットがある
  • NextjsのRSCやmiddlewareやapi routeを実行することが可能
  • 主にはJavaScriptやWeb Assemblyが動く

メリット

  • レイテンシの低下・パフォーマンス向上
  • オリジンサーバーの負荷を低減できる

デメリット

  • リソースの制限
    • バンドルサイズの制限やCPUの利用制限が通常のwebサーバーに比べて厳しい。なので、重い処理などには向かない
    • 例えば、Vercel 上の Edge Runtime で実行されるコードは、1MB から 4MB を超えることはできません

主要なエッジランタイムプロバイダー

  • Cloudflare
  • Vercel
    • Edge Functions: Next.js の Middleware や API Routes、Server Components をエッジで実行可能にする機能。
    • Edge Config: エッジで環境変数を管理するサービス。
  • Netlify
    • Edge Functions: Next.js や Astro、その他のフレームワークの関数をエッジで実行可能にする機能。
    • Background Functions: 長時間実行可能な関数。

Cloudflare × hoge

  • Next.js
    • 一部のNode.js APIのみサポートしている
    • canaryの動作は不安定
    • edge runtimeとしてexportしないと使えないのが少し面倒
    • Cloudflare Builder Day 2024にて、OpenNextとのコラボレーションが発表された
      • 新しいアダプター@opennextjs/cloudflareを使用することで、Node.jsランタイムのNext.jsアプリをWorkers上で実行できるようになった
      • new Node.js compatibility layer で動く
      • プレビュー段階なので、nodejsを完全に互換しているわけではなく、バグも全然あるっぽい
      • 試しにアプリをデプロイしてみたが、firebase-adminのimportでエラーになった。
  • Remix
    • エッジランタイムで完全に動作するらしい。Nextよりも相性が良い
    • 蛇足だけど最近ChatGPTがNextからRemixに移行した

参考

ログインするとコメントできます