無料枠でSaaSポータルを運用する — Cloudflare Pages、Supabase、Upstash
固定費を抑えながら公開サイトを運用するためのGRAXELの考え方です。
無料枠でSaaSポータルを運用する — Cloudflare Pages、Supabase、Upstash
ある日、私のメールボックスに届いた1通の請求書。それは、わずか1日100人しかアクセスしない実験的なトイプロジェクトに対する、AWSからの「45ドル」という無慈悲な課金通知でした。RDSインスタンスと小さなEC2を起動していただけで、コーヒー10杯分の資金が消し飛んだのです。資金力のない1人開発者にとって、固定インフラ費は心理的な死の宣告に等しいものです。私は即座にすべてのサービスを、極限までコストを切り詰めた「ゼロコスト・アーキテクチャ」へと移行することを決意しました。
ゼロ円を支える三種の神器
現在、GRAXELポータルは実運用トラフィックを受けながらも、インフラ費用は月に1ドル程度(後述するストレージ超過分のみ)に抑えられています。これを実現しているのが以下の強力なスタックです。
- フロントエンド: Cloudflare Pages & Workers
Next.jsベースのアプリケーションをエッジで実行します。月間10万回のリクエストまでは完全に無料であり、グローバルCDNの恩恵で表示速度も圧倒的です。 - データベース: Supabase Free Tier
500MBのPostgreSQLデータベースを無料で利用できます。認証管理やユーザーメタデータの保存に十分すぎるスペックです。 - キャッシュ & レート制限: Upstash Redis
ログイン試行の制限やセッション管理のために利用。1日1万リクエストの無料枠で、悪意のあるボットからの攻撃をエッジで防いでいます。
背筋が凍った失敗:800万リクエストの暴走
しかし、「無料」という言葉の裏には常に落とし穴があります。今年の春、私はフロントエンドのReactコード内で、useEffectの依存関係配列(Dependency Array)の指定を一つ間違えるという、初心者レベルのミスを犯しました。
これが引き金となり、本番環境にデプロイされた直後から、アクセスした数百人のユーザーのブラウザが、毎秒単位で無限にCloudflare Workers KV(Key-Valueストア)へ読み込みリクエストを送信し始めたのです。翌朝、私が眠い目をこすりながらダッシュボードを開くと、KVへのリクエスト数は一晩で驚愕の「800万回」を突破していました。無料枠の10万回など一瞬で吹き飛ぶ数値です。幸い、事前にCloudflare側で厳格な「Billing Limit(請求上限)」を10ドルに設定していたため、システムが自動的に機能制限に入り、破産は免れました。もしAWSのLambdaであったなら、私は今頃クラウド破産していたでしょう。
生存のための運用ルール
このトラウマを経て、私はいくつかの厳格な運用ルールを設けました。ログ出力(console.log)はWorkersの請求に直結するため極限まで減らすこと。そして、静的なアセットだけでなく、頻繁に変更されないAPIレスポンスもCloudflare Cacheのレイヤーで積極的にキャッシュすることです。
1人開発者にとって、インフラの無料枠は「製品が市場に受け入れられるか(PMF)」を検証するための貴重な猶予期間です。私たちの開発体制や、なぜこのようなアーキテクチャを選んだのかについては、私自身のプロフィールや技術ガイドでも詳しく解説しています。もしコスト最適化で悩んでいる方がいれば、ブログの他の記事もぜひ参考にしてください。
共有
関連記事
同じテーマやタグに基づき、GRAXELの運用文脈を続けて確認できます。
Oracle Cloud Always Free ARMで本番APIを動かす
GRAXELが重いバックエンド処理をポータルから分離して運用する理由です。
クラウド無料インフラ完全ガイド — 月$0でSaaSサービスを運営する方法
Cloudflare、Supabase、Oracle Free Tier... 合法的に月$0で本番レベルのインフラを構築する方法。
Cloudflare Pages 無料枠で 1 年運用してみた — 5 サービスの実支出は 1.25 ドル
1人開発者がCloudflare Pages無料枠で5サービスを1年間運用した実支出を公開。実際の数字と失敗談、再現可能な節約パターンを整理しました。