Cloudflare Workersは軽量でサーバーレスな実行環境として人気ですが、その裏側には独特の制約があります。今回はMongoDBに繋ごうとしてハマった話です。
衝撃の事実:CloudflareからMongoDBに繋げない
個人開発でCloudflare Workersを使おうとした矢先、「あれ?MongoDBに接続できない!?」という壁にぶつかりました。調べてみるとこういうことでした。
- MongoDBは基本的にTCP接続を前提としたデータベース
- Cloudflare Workersは従来のTCP接続が制限されている(V8 Isolatesで動く環境のため)
つまり、「Workersから直接 mongoose などのドライバーで繋ぎに行く」という普通のやり方が使えないわけです。
対処法を考える
解決策としてはこんな選択肢があります。
- MongoDB Atlas Data APIを使う(HTTPでMongoDBにアクセス)
- Cloudflare D1 / KV / Durable Objects に切り替える
- Supabase / PlanetScaleなど、Workers親和性の高いDBを選ぶ
- TCPサポートが解禁された
connect()APIを使う(2024以降)
学び:技術選定はランタイム相性を見よ
「Cloudflare Workersは速い・安い・便利」と飛びつきがちですが、実行環境の制約を知らずに組み合わせると痛い目に遭うことを痛感しました。
特にエッジ環境では、従来のNode.jsで当たり前にできていたことができなかったり、挙動が違ったりします。アーキテクチャを決める前に、DBとランタイムの相性を調べるのが大事だと学びました。

コメント