Cloudflare メイン

同じ SSR アプリを Cloud Run と Cloudflare Containers の両方で無改修で動かした実例 ― 違いは課金の出方・固定IP・環境の器

実践読了目安 約 12
この記事の要約

同じ Node の SSR コンテナは、Cloud Run と Cloudflare Containers のどちらでも無改修で動きました。違いはアプリ本体ではなく、その周りに集まります。

  • 課金は『待機に払う』か『使った分だけ・寝たらゼロ』か
  • 固定IPの出口は Cloud Run の得意・Cloudflare の苦手
  • 環境の器は GCP=プロジェクト、Cloudflare=Worker

今回の実験は「同じアプリを、2つのクラウドで同時に動かす」ものです。React Router の SSR サーバを詰めた Node のコンテナを、これまでの Google Cloud Run に加えて Cloudflare Containers でも動かしました。アプリ本体は1行も変えていません。

利用者
ブラウザ
Cloud Run
HTTP を直接受ける
コンテナ(SSR)
Node のアプリ本体
利用者
ブラウザ
Worker
入口(エッジ)
コンテナ(SSR)
Node のアプリ本体

各ブロックや矢印をクリックすると、その仕組みの説明がここに表示されます。

入口を挟まず HTTP を直接コンテナへ — 部品が少ない

この図をテキストで読む

構成図「同じコンテナ、届け方が2通り」。ブロック6個、つながり4本。 枠: Cloud Run(HTTP を直接コンテナへ)(ブロック3個)、Cloudflare(Worker が受けてコンテナへ)(ブロック3個)。 【ブロック】 - 利用者: ブラウザ - Cloud Run: HTTP を直接受ける - コンテナ(SSR): Node のアプリ本体 - 利用者: ブラウザ - Worker: 入口(エッジ) - コンテナ(SSR): Node のアプリ本体 【流れ】 - Cloud Run:HTTP を直接: 利用者 → Cloud Run → コンテナ(SSR) - Cloudflare:Worker 経由: 利用者 → Worker → コンテナ(SSR)

コンテナ(アプリ本体)は両者で同一。違うのは入口だけで、Cloud Run は HTTP を直接、Cloudflare はエッジの Worker が受けてコンテナへ渡します。各カードをクリックで説明が出ます。

同じイメージが両方で動くのは、Cloudflare Containers が普通の Node コンテナをそのまま動かせるからです。だから DB(Neon)への接続も、リアルタイム通信も、無改修で動きました。変わるのは中身ではなく、その周り ── 入口・課金・出口のIP・環境の分け方です。

ここから先へ

この解説とつながりのあるページ