Cloud RunとSupabaseで低コスト運用しようと思ったら無理だった話。

要約
Cloud Run と Supabase の無料枠を組み合わせれば低コスト運用できると思ったが、 セキュリティ要件を満たすには Load Balancer や Cloud NAT が必要となり、 月25ドル程度の固定費が発生する。 結果として、この構成は個人開発向けの低コスト運用
意見はこのエリアに表示されます

Cloud Run と Supabase。
どちらも 「無料枠が大きい」 という評判をよく耳にするサービスだ。

実際、自分も
「うまく組み合わせれば、ほぼ無料で Web サービスを運営できるのでは?」
と考え、低コスト運用を目的にこの構成を選んだ。

結論から言うと、思っていたほど低コストにはならなかった。
むしろ、いくつかの点で 「これは相性が良くない」 と感じる部分すらあった。

この記事では、
なぜ Cloud Run × Supabase という “強そうな構成” が、
自分の想定した 「低コスト運用」 からズレていったのか、
実際にハマったポイントを正直に書いていく。

同じように
「無料枠でなんとかしたい」
「個人開発だからコストは極力かけたくない」
と考えている人の参考になれば幸いだ。

やりたかったこと

Supabase の無料枠

項目内容
API リクエスト無制限
月間アクティブユーザー50,000 MAU
データベース容量500 MB
実行環境Shared CPU / 500 MB RAM
データ転送(egress)5 GB
キャッシュ付き egress5 GB
ファイルストレージ1 GB
サポートCommunity support

Cloud Run の無料枠

項目内容
リクエスト数200 万リクエスト / 月
メモリ使用量360,000 GB 秒 / 月
vCPU 使用量180,000 vCPU 秒 / 月
アウトバウンド通信1 GB / 月(北米)
備考その他の制限は Cloud Run の料金表に準拠

当初の目論見

これら 2 つの 無料枠を組み合わせることで

  • 最大 200 万リクエスト / 月
  • DB サイズ 〜 5 GB 程度
  • アプリケーションサーバーは Cloud Run
  • DB・認証・ストレージは Supabase

という構成を、ほぼ 0 円で運営することを狙っていた。

現実

Supabase に関して押さえておきたい前提条件

  1. Cloud Run などのバックエンドサーバーからアクセスする場合は、Data API を使わずに DB へ直接アクセスするのが望ましい
    Supabase が提供している Data API(PostgREST)は手軽に使える一方で、
    バックエンドサーバー経由のアクセスでは レイテンシやオーバーヘッドが増えやすい
    このため、Cloud Run などのサーバーサイドから利用する場合は
    Data API ではなく 直接 DB に接続する構成を選ぶのが一般的になる。

これに関して詳しくこちらの記事にまとめた。

  1. Supabase の無料枠では Database Connection の上限が 42 本と比較的厳しい
    Supabase の無料プランでは、利用できる 同時接続数(Database Connection)に明確な上限がある。
    デフォルトでは 15 本 に制限されており、
    設定を変更することで最大 42 本 まで引き上げることは可能だが、
    それでも スケーラブルなバックエンド構成としてはかなり少なめである。
    特に Cloud Run のように 同時に複数のインスタンスが起動する環境では、
    接続数の管理を意識せずに使うとすぐに上限に達する。

これに関して詳しくこちらの記事にまとめた。

  1. DB へ直接アクセスする場合、接続元 IP アドレスでアクセス制限をかけたい
    Supabase の DB をインターネット越しに直接公開する以上、
    誰でも接続できる状態にしておくのはセキュリティ的に避けたい
    そのため、実運用では
    • 接続元 IP アドレスを限定する
    • 想定外のアクセスを遮断する
      といった対策を取るのが前提になる。

Cloud Run に関して押さえておきたい前提条件

  1. セキュリティの都合上、Cloud Run の前段に Load Balancer を置く必要がある
    Cloud Run はインターネットから直接公開することも可能だが、
    実運用を考えると その構成はあまり推奨されない
    例えば、

    • WAF による攻撃対策
    • アクセス制御やレート制限
    • HTTPS 証明書の一元管理
      といった要件を満たそうとすると、
      Cloud Load Balancer を前段に置く構成が事実上の前提になる。
      特に、不特定多数からアクセスされる Web サービスでは、
      Load Balancer を置かない選択肢は取りづらい。
  2. 複数の VM を起動して水平スケールできるのが Cloud Run の強み
    Cloud Run の大きなメリットは、
    トラフィックに応じて 自動的にインスタンス数を増減できる点にある。
    リクエストが増えれば複数の VM が起動し、
    負荷が下がれば自動的にスケールダウンする。
    これにより、インフラ管理をほとんど意識せずに
    高いスケーラビリティを実現できる

    ただし、この仕組み上、
    Cloud Run 単体では送信元の IP アドレスを固定できない
    インスタンスが増減するたびに IP が変わるため、
    接続元 IP による制限を前提とした構成とは相性が悪い。

これらを考慮した実際の構成

上記の前提条件をすべて満たそうとすると、構成は次のようになる。

  1. Load Balancer(固定 IP)
  2. Cloud Run
  3. Cloud NAT(固定 IP)
  4. Supabase

※ 実際には DNS、証明書、Cloud Router などの設定も必要になるが、話を簡単にするためここでは省略する。

Cloud NAT を置いている理由は、
Supabase 側で接続元 IP アドレスを制限するためである。


この構成のデメリット

1. コストが思ったより高い

少なく見積もっても

  • Load Balancer: 約 18 ドル / 月
  • Cloud NAT: 約 7 ドル / 月

合計 25 ドル / 月程度 は発生する。

これが、
「Cloud Run と Supabase で低コスト運用しようと思ったら無理だった」
と感じた 最大の理由 である。


2. Supabase と Cloud Run の相性が悪い(セキュリティ面)

Cloud Run はリクエストに応じて 複数の VM を動的に起動する

そのため、

  • 接続元 IP を制限したい
  • 固定 IP を使いたい

という要件を満たすために、
本来不要な Cloud NAT を挟まざるを得ない構成になる。

もし固定の VM(例: Compute Engine)であれば、
この問題は発生しない。


3. Supabase と Cloud Run の相性が悪い(パフォーマンス面)

Cloud Run の最大のメリットは、
高いスケーラビリティを簡単に実現できることにある。

しかし Supabase の無料枠では、

  • Database Connection 数に厳しい上限がある
  • 同時接続数を考慮すると VM 数を増やせない

結果として、
Cloud Run のスケール性能を意図的に制限せざるを得ない

つまり、
Cloud Run の良さを ほとんど活かせていない構成になってしまった。

Cloud Run と Supabase を使いながら回避する方法はないのか?

結論から言うと、現実的な回避策はない

  • Load Balancer を置かない
  • Cloud NAT をやめて接続元 IP 制限をかけない

といった選択肢も考えられるが、
どちらも セキュリティ上好ましくない構成になる。

特に、

  • バックエンドサーバーを直接インターネットに公開する
  • DB を IP 制限なしで外部公開する

といった状態は、
個人開発であっても避けるべきである。

そのため、
セキュリティをある程度真面目に考えるなら、この構成を簡略化することはできない
結果として、Cloud Run × Supabase での「低コスト運用」は成立しなかった。


代替案

コストをかけられる場合

コストを許容できるのであれば、
DB も含めてすべて Google Cloud 上に寄せる構成の方が、
ネットワーク設計・セキュリティ設計ともにシンプルになる。

Cloud SQL や AlloyDB を使えば、

  • VPC 内通信
  • IP 制限や IAM ベースの制御
  • Cloud Run との親和性

といった点で扱いやすい。

ただし、
個人開発用途としてはコストが高いのが正直なところだ。

個人開発向けの現実的な選択肢

そのため筆者は、
Cloudflare を活用した構成を検討している。

Cloudflare Workers や D1 などを使えば、

  • 低コスト
  • セキュリティを意識した構成
  • 運用負荷の低さ

といった点で、
個人開発用途にはより現実的な選択肢になり得ると考えている。


まとめ

Cloud Run × Supabase は安くない。

無料枠だけを見ると相性が良さそうに見えるが、
セキュリティや実運用を考慮すると
追加コストを避けられない構成になる。

「無料枠が大きい」という理由だけで構成を選ぶと、
思った以上にコストがかかることもある。

この経験が、
これから同じ構成を検討している人の参考になれば幸いだ。

Explore More
関連記事はありません。