はじめに
※この記事は2024年11月6日時点の内容です
SupabaseとNeonはともにPostgresを中心におくBaaSですが、それぞれ特徴があります。
なかなか日本語の記事でNeonを紹介しているものがなかったため、ここではSupabaseと比較してNeonというサーバレスプラットフォームについて紹介していきたいと思います。
Neonの公式サイト: https://neon.tech/
Neonとは?
まずはNeonの概要です。
Neon は、Postgres を中心としたサーバレスプラットフォームで下記のアーキテクチャ上で動きます。
自動スケール、高速性、ブランチ管理など様々な便利な特徴を持っています。
Supabaseとの比較
自動スケーリング
Supabase
Supabaseでは同時接続数の増加に合わせてSupavisorを利用して負荷分散を行う仕組みを作ることができます。
しかし、いわゆるコンピューティング資源の自動スケーリング機能はなく、そちらは手動で増加させる必要があります。
https://neon.tech/_next/image?url=%2Fdocs%2Fintroduction%2Fmulti_tenant_storage.png&w=828&q=75&dpl=dpl_GDsrcny4AYKHo4v6g3M2V8qEuAsL
Neon
NeonはAWS Auto Scalingとよく似た直感的に設定できる自動スケーリング機能を持っています。
https://neon.tech/docs/introduction/autoscaling
直感的なGUI上で自動スケーリングの設定を行うことができます。
AWS Auto Scaling: https://aws.amazon.com/jp/autoscaling/
どちらが良いか
この点においては自動スケーリング機能をしっかりもっているNeonのほうに強みがあります。
ブランチング
Supabase
Supabaseのローカル開発のgitと連携し、ブランチ管理を行うことができます。
ローカル開発で行った変更のPRが出されるたびにそのPRのプレビューブランチが作られ、安全な開発を提供してくれています。
https://supabase.com/docs/guides/deployment/branching
Neon
Neonはローカル開発環境がまだ存在しない代わりに自由に開発用のブランチを作成してそちらと接続することができます。
親ブランチのデータを自動でインポートしてくれるので設定なしでいきなり立ち上げることが可能です。
https://neon.tech/docs/introduction/branching
どちらが良いか
こちらは開発者の体験としてはSupabaseのほうに大きな強みがあります。
ローカルで環境を立ち上げられるのは大きなメリットです。
バックアップ
Supabase
Supabaseは有料版から日単位でのバックアップ、拡張機能でポイントインタイムのバックアップを行い、数秒単位でのバックアップが取得できます。
https://supabase.com/docs/guides/platform/backups
Neon
Neonは現在自動バックアップ機能を持っていません。
pg_dumpを利用した手動のバックアップがあるのと、
組み込みのポイントインタイム復旧機能があり、無料プランだと最大24時間、launchだと7日、scaleだと14日、businessプランだと30日のバックアップを保存できます。
https://neon.tech/docs/manage/backups
どちらが良いか
Neonにはバックアップ機能がまだないため、Supabaseのほうに強みがあります。
言語サポート
利用しようと思えばそれぞれ下記サポート言語以上にいろいろな環境で利用できるはずですが、公式がガイドを提供しているものに絞って話します。
Supabase
Supabaseは下記の環境のクイックスタートをドキュメントとして持っています。
- Next.js
- React
- NuxtJS
- Vue
- Flutter
- iOS SwiftUI
- Android Kotlin
- SvelteKit
- Laravel PHP
- Ruby on Rails
- SolidJS
- RedwoodJS
- refine
Neon
Neonは下記URLにフレームワークごとのガイドの一覧が並んでいます。
https://neon.tech/docs/get-started-with-neon/frameworks
- Astro
- Django
- Express
- Laravel
- NestJS
- Next.js
- Node.js
- Nuxt
- new
- Phoenix
- Quarkus (JDBC)
- Quarkus (Reactive)
- React
- Reflex
- Remix
- Ruby on Rails
- SolidStart
- SQLAlchemy
- Symfony
加えて、下記URLに各言語ごとのサポート情報があります。
https://neon.tech/docs/get-started-with-neon/languages
- Elixir
- Go
- Java
- Javascript
- Python
- Rust
どちらが良いか
Neonの方が数が多いです。しかし、モバイル環境におけるサポートが薄いので始めるのに苦労するかもしれません。
SupabaseはWeb, Mobileに特化した内容になっています。これに関しては一長一短という形です。
Auth系機能
Supabase
Supabaseはかなり高機能なAuthサポートをもち、
https://supabase.com/docs/guides/auth
デフォルトで多くのソーシャルログイン機能があるなど利便性が高いです。
Neon
NeonはまだAuth関係に関してはサポートが小さめで、
をJWTで利用する方法がメインという形です。
どちらが良いか
Authに関しては機能の多さと実装の楽さからSupabaseの圧勝といえます。
AI関係
Supabase
Supabaseはpgvector
を利用してAIアプリを作るためのサンプルやチュートリアルをサイト内に多数そろえています。
https://supabase.com/docs/guides/ai
Neon
Neonも同じくpgvector
ベースではあるものの、情報量はかなりすくなめです。
https://neon.tech/docs/ai/ai-intro
(できることは同じなので、逆にシンプルでよいのかもしれませんが)
どちらが良いか
同じツールを使っているためできることは同じですが、情報量で考えるとSupabaseのほうが上手でしょうか。
料金
Supabase
Supabaseは無料プランから利用開始できます。
- 無制限のAPIリクエスト
- 月間50000人までのアクティブユーザ
- RAM500MBの共有CPU
- 5 GBの帯域
- 1 GBのファイルストレージ
制約としてプロジェクトは二つまでしか同時に動かせず1週間で停止されてしまいます。
有料プランに月25ドルのProプランと、月599ドルのTeamプランがあります。どちらも制約がなくなるのと、より多くのリソース利用と各種サポート機能が追加されるイメージです。
Neon
Neonも無料から利用できます。
無料プランだと、下記リソースを利用できます。
- 10プロジェクト
- 0.5 GBのストレージ
- 190時間のコンピュート利用時間
- 2vCPU, 8GBRAMまでオートスケーリング可能
また、月19ドルのLaunchプラン、月69ドルのScaleプラン、月700ドルのBusinessプランがあり、こちらもSupabaseと同じく価格が上がるにつれより多くのリソースが利用できるようになります。
どちらが良いか
こちらはかなりユースケースによる形です。
ファイルストレージやその他便利な機能が欲しければSupabaseのほうが良いですが、
オートスケーリングやデータベースに特化した機能が欲しければNeonのほうが良いと思います。
SupabaseにできてNeonにできないこと
Neonはデータベースに特化しているため、Supabaseよりも機能はありません。
Supabase側にしかない機能として下記があります。
Realtime
https://supabase.com/docs/guides/realtime
NeonはWebサーバを構築しているわけではないため、SupabaseにおけるWeb Socketサーバを代替できる機能はないです。
Edge Functions
https://supabase.com/docs/guides/functions
サーバサイドに関数をホスティングする機能ですが 、これももちろんNeonにはありません。
Storage
https://supabase.com/docs/guides/storage
NeonにはSupabaseにおけるファイルストレージを代替する機能はありません。
ローカル開発
https://supabase.com/docs/guides/local-development
SupabaseではDockerを利用したローカル開発ができますが、Neonにその機能はありません。
まとめ
Supabaseの用途
- モバイルアプリやWebアプリの開発に適している
- 豊富な認証機能やリアルタイム機能、ストレージ管理など、アプリ開発に必要な機能が充実
- AIアプリ開発にも役立つ機能が用意されている
neonの用途
- 自動スケーリングが可能で、必要に応じてリソースを柔軟に調整できる
- データベースに特化したサービスで、高速性や柔軟なブランチ管理などの特徴がある
- 幅広い言語/フレームワークをサポートしているため、様々な開発環境で利用可能
つまり、Supabaseはアプリ開発向けのサービスで、neonはデータベース管理に特化したサービスといえます。
用途に合わせて適切なサービスを選択することでより良い開発体験を得られると思います。
是非両方とも試してみてください。
- Next.js + SupabaseでTodoアプリ作成 CRUDの基本を学ぼう
- FirebaseとSupabaseの機能、料金、セキュリティ、AI観点などを含めて徹底比較
- Next.js とSupabaseで求人マッチングアプリを作る①
- 素早くアプリを作りたい! Vercel+Supabaseでプロジェクト開発
- Supabaseの機能一覧・解説 オープンソースのFirebase代替mBaaS
- Supabase CLIコマンド一覧
- Supabase RealtimeのBroadcast, Presenceを利用したキャンバス共有アプリを作る
- Supabaseのローカル開発環境を構築して開発体験を向上させつつ料金も節約
- Next.js + Supabaseでリアルタイムチャットを作ろう
- Next.js + Supabaseでソーシャルログインを実装する方法
- Next.js+Supabaseで認証機能を実装しよう【コード付き完全ガイド】
- Supabase + Next.jsで画像投稿アプリを最適化する(画像圧縮、ファイルサイズ制限、ファイルのアップロード数制限)
- OpenAI Embeddings API+ Supabase Vector Database + Next.jsでベクトル検索を実装する
- Supabase + AWS CognitoでAmplifyを利用せずサードパーティ認証する
- Supabaseでデータ更新があった時にSlack通知を送る
- Supabase Branchingでプレビュー環境を手に入れて開発体験を向上する
- Next.js + SupabaseでGraphQLを利用する方法
- SupabaseのEdge FunctionsとSendGridでメールを一斉送信する
- Supabaseで匿名認証とアカウントの本登録への昇格の方法
- Next.js + SupabaseでStorageを利用した画像投稿アプリ作成
- Next.js + SupabaseでRLSを利用して安全なアプリを作ろう。
- Next.js + SupabaseでAuth + Storageのストレージサービスを作る方法
- Next.jsとSupabaseで認証機能ありのリアルタイムチャットを作成する。
- Next.jsとSupabaseで認証つきチャットアプリを作成する(SNS風UI)
- Next.js + SupabaseでSMS認証を作成する方法
- Next.jsとSupabaseで全文検索を実装する方法
- Next.jsとSupabaseで作成したチャットアプリにお知らせ機能を実装する
- Nextjs + SupabaseでSupabaseのStorage Image Transformationsを利用する方法
- Supabase vs Neonの比較。機能や料金、セキュリティ、AIを徹底比較
- Supabaseのセルフホスティングをできるだけ安く行う方法
- Supabase + Cognitoの連携で外部連携を試す
- Supabase CLIのTesting機能を利用する
- Supabaseを利用する際に設定しておきたい項目