こんにちは!ぬこすけです!
個人開発をしていると「データベースはどこで立てようか...」というのは悩みの種です。
「無料でデータベース使いたい」「あんまりデータベースの構築に時間をかけたくない」などアレコレ考えてしまいます。
そんなあなたに、無料かつ楽にRDBを作れる「PlanetScale」をお勧めしたい!と言いたいところですが、 なんと2024年4月8日に無料枠が廃止されてしまいます 。
かくいう私も技術書をランキング形式で紹介するサイトを昔作っていたのですが、データベースはPlanetScaleを使っていたため打撃をくらってしまいました...。
このような事態を受け、私のサイトではPlanetScaleの代替として Neon というサーバーレスなデータベースを提供しているサービスに乗り換えてみました。
みなさんの参考になるように、PlanetScaleと比較しながら体験談を共有できればなーと思います。
想定読者
趣味やポートフォリオ構築などの個人開発でデータベース構築にあたって次のようなお考えの方
- 無料枠がある
- 開発者体験を高くしたい
- RDBを使いたい
- 脱PlanetScale!
Neonとは
NeonはサーバーレスなPostgresデータベースを提供するDBaaS(Database as a Service)です。
もちろん、この記事で紹介するからには 無料枠 があります。
記事執筆時点(2024/3/14)では0.5GiB(512MB)のストレージ、0.25CPU、1GBのRAMがあります。
また、PlanetScaleのようなブランチ機能もありますが、1プロジェクト、10ブランチまでの制限のようです。
個人開発で使う分には十分なスペックかなーと思います。
Neonに乗り換えて良かったこと
ブランチ作るとデータごと親ブランチからコピーしてくれる!
ほぼこれが一番デカい機能 だと思っています。
PlanetScaleと同じく、 Neonにはブランチ機能 があります。
ブランチ機能はGitのようにブランチを作成して、例えば本番のデータベースとは別にデータベース環境を作成することができます。
この機能のおかげで、開発用のデータベースを作れるわけです。
(Neonの公式サイトより引用)
同じブランチ機能でもPlanetScaleと違うところは、 Neonはデータごと親
ブランチからコピーしてくれる ところです。
なので、すぐに本番環境と同じデータを含んだ開発用データベース環境を構築できます。
PlanetScaleにもデータごとコピーしてくれる機能はあるにはあるのですが、有料の機能のようでした。
また、 いつでも本番のデータを開発用のブランチ(データベース)に同期することができます 。
開発を進めていく中で本番のデータと乖離が出てきても、Web上からボタンポチで開発用のデータベースも本番のデータに変更することができます。
Web上からテーブル確認やクエリ実行できる!
NeonではWeb上からデータベースやテーブルの確認、SQLの実行もできます 。
ローカルでpgAdminやDataGripでデータベースと接続するでももちろん大丈夫ですが、シュッとテーブルを確認したい時やSQL実行したいときは便利です。
私のサイトをPlanetScaleからNeonに移行するときもポチポチWeb上からSQL投げてました。
PlanetScaleと比べた注意点
ブランチのマージ機能はない
開発環境で作ったスキーマを本番環境のデータベースに適用したい場面はたくさんあるでしょう。
PlanetScaleはGitHubのようなPullRequestのような形で、スキーマの変更をメインのブランチに適用させることができました。
Neonの場合はスキーマの変更をPullRequestのような形でメインブランチにマージできるような機能ありません。
なので、Neonを使う場合は手動でマイグレーションを実行する必要がありそうです。
東京リージョンがない
日本向けにWebサイトを作るなら、速度的な面でデータベースはできるだけ日本で立てたいでしょう。
PlanetScaleでは東京のリージョンに対応していました。
一方でNeonは日本のリージョンに対応していません。
できるだけ日本に近いところでデータベースを立てるなら、記事の執筆時点では シンガポール になります。
同時接続数が少ない
PlanetScaleの同時接続数は1000なのですが、 Neonはデフォルトで100 ほどのようです。
実際、 SHOW max_connections;
を実行したところ 112
でした。
私のアプリケーションでもPlanetScale利用時は同時接続数でエラーが起こることはなかったのですが、Neonに切り替えてからエラーが出るようになりました。
Neonではデータベースの同時接続数を気にする必要がありそうです。
[2024/3/16追記]
-pooler
というエンドポイントを使うことで同時接続数の制限を最大10,000に増やせる ようです。
設定は無料枠でも可能&楽にできました。
Pooled connection というチェックボックスを入れると -pooler
付きのエンドポイントが発行されました。
まとめ
個人開発で無料のデータベースを求めるならNeon!終わり!
なお、PlanetScaleからの脱却にあたっての乗り換え先サービスの検討は次の記事が参考になりました!感謝!
また、私が今回Neonに移行した Webサービス について、古い記事ですがバズった記事もあるのでぜひ!