Open
8

VercelからMySQL/PostgreSQLに接続したい場合にどういうアーキテクチャにするのが最適か

ピン留めされたアイテム

Issue

  • VercelへのリクエストからServerless Functions が実行されると新規にDBに接続し、終了時にコネクションを切断する
  • 一般的なコネクションプールを使ったアーキテクチャよりDB接続コストの影響を受ける
  • Amazon RDS ProxyやCloud SQL Proxyのようなプラットフォームが提示する解決策がまだない

Digital Ocean を使え

BlitzのドキュメントではDigital OceanのPostgresクラスタがホストするコネクションプールにパブリックに接続することを推奨している

RDSのData APIで叩く

Discussion #3684 で言及されている方法。

デメリットとしてはSQLをHTTP経由で実行する仕組みなので、任意のORMが使えるようになるわけではない

EC2やGCEにインスタンスを立てて内部ネットワークにプロキシする

同じく Discussion #3684 より。

Aurora ServerlessやCloud SQL Proxyにアクセスすることを想定しているのだと思われる。PgBouncer等を使用してがんばれ。と方向性は似ている。

DB接続が単一障害点になってしまうのでサーバーレスアーキテクチャの利点が弱くなってしまうか。

Vercelに金を払う

my talks with them to achieve VPC peering with our NextJS stuff it sounds like this is offered under enterprise pricing tier.

金の弾丸である

Supabase

Going serverless with SQL? #5696 をチェックしたところ、Vercelの人はDigital Ocean を進めていたが supabase.io の中の人もコメントしていた。

彼等は PostgREST という仕組みをSupabase のバックエンドで提供しているようだ。

名前から想像するとData API のようにHTTP経由でクエリを送る仕組みで、通常Supabaseの提供するライブラリを利用する。

Data API と同じく既存ORMは使えないがSQL命令をこなせる、という要件なら選択肢に入るかもしれない。

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