「サーバーレス」という言葉は、これまで関数やAPIに使われてきましたが、現在ではデータベースにも広がっています。これまでの「サーバーレス」と同様に、この言葉はサーバーが存在しないことを意味するわけではありません。サーバーのことを意識する必要がなくなるという意味です。その理由は、サーバーレスデータベースが、リソースのプロビジョニング、スケーリング、キャパシティプランニングを自動的に行い、開発者がインフラの運用ではなく、アプリケーション開発に専念できるようにするためです。これまでRDSのインスタンスサイズを検討したり、読み取りレプリカを手動で調整したりしてきたチームにとって、この変化は大きく感じられるかもしれません。本記事では、サーバーレスデータベースの仕組みを解説するとともに、代表的なサービスを紹介し、Navicatがその環境でどのような役割を果たすのかについて説明します。
サーバーレスデータベースとは?
サーバーレスデータベースを特徴づけるポイントは、ストレージとコンピューティングが分離されていることです。従来のデータベースでは、この2つは密接に結び付いています。データベースインスタンスには、CPU、メモリ、ディスク容量があらかじめ割り当てられており、処理能力を向上させるには、インスタンス自体をアップグレードする必要があります。一方、サーバーレスアーキテクチャでは、ストレージはコンピューティング層から切り離されています。そのため、それぞれを独立してスケールさせることができます。例えば、アクセスが集中した際にはコンピューティングリソースを自動的に増やし、負荷が落ち着けば再び縮小できます。また、アイドル状態の間はコンピューティングリソースをゼロまで縮小することも可能です。一方で、データはそのまま保持され、引き続き利用できます。
この仕組みには、開発者にとって実用面で2つのメリットがあります。第一に、ピーク時に備えてあらかじめ余分な処理能力を確保しておく必要がなく、実際に使用した分だけ料金を支払えば済みます。第二に、データベースが自動的に処理能力を調整するため、インスタンスのサイズが適切かどうかを気にする必要がなくなります。
Amazon Aurora Serverless
Aurora Serverless v2は、Amazon Aurora向けに提供されるオンデマンド型の自動スケーリング機能で、MySQL互換版とPostgreSQL互換版の両方で利用できます。0.5 Aurora Capacity Unit(ACU)という細かな単位でスケールできるほか、アクティブな接続やトランザクションを中断することなく、幅広い範囲で柔軟にスケールできます。また、コールドスタートによる遅延が大きな課題だった初代Aurora Serverless v1とは異なり、v2ではよりスムーズなスケーリングを実現しています。さらに、マルチAZ構成、グローバルデータベース、リードレプリカなど、Auroraが備える主要な機能も利用できます。
Aurora Serverless v2は、開発環境やステージング環境、イベント駆動型アプリケーション、あるいはアクセスや負荷が不定期に急増するシステムなど、ワークロードの変動が予測しにくいアプリケーションに適しています。また、AWSの各種サービスとの連携に優れているため、すでにAWS上でインフラを運用しているチームにとって、自然な選択肢となるでしょ
Neon
Neonは、オープンソースのサーバーレスPostgreSQLプラットフォームです。その基盤には、Neonが「Lakebaseアーキテクチャ」と呼ぶ仕組みが採用されています。このアーキテクチャでは、ストレージとコンピューティングが完全に分離されており、データはクラウドのオブジェクトストレージに保存されます。一方、コンピューティングノードは、アイドル状態になるとゼロまで縮小できます。新しいクエリが送信されると、コンピューティングノードは数秒で起動し、既存のデータ履歴に接続して処理を開始します。そのため、データを移動することなく利用できます。
Neonの開発者向け機能の中でも特に使いやすいのが、データベースブランチです。Gitのブランチと同様に、Neonではコピーオンライト(Copy-on-Write)方式を利用して、特定の時点のデータベースの独立したコピー(ブランチ)を作成できます。データ自体は複製されないため、ブランチは瞬時に作成でき、コストもほとんどかかりません。そのため、新機能の開発用にブランチを作成し、そのブランチ上でスキーマ変更(マイグレーション)を実行した後、不要になれば削除するといった運用を、本番環境に影響を与えることなく簡単に行えます。Neonは、これまでのPostgreSQL環境をそのまま活かしながら、クラウドネイティブならではの柔軟性を求めるチームに人気の高い選択肢となっています。
PlanetScale
PlanetScaleは、MySQLをサーバーレス環境で利用できるようにしたことで注目を集めました。その基盤には、YouTubeの大規模なトラフィック処理にも採用されている、MySQLを大規模に分散運用するための技術「Vitess」が使われています。PlanetScaleの大きな特徴の一つは、データベースブランチを利用して、サービスを停止することなくスキーマ変更を進められる開発ワークフローです。本番環境で直接ALTER TABLEを実行して問題が起きないか不安を抱えながら待つ代わりに、まずブランチを作成してスキーマを変更します。その後、デプロイリクエストを作成し、準備が整った段階で本番環境へマージ(反映)します。
近年、PlanetScaleは大きく方向転換しています。2024年には無料のHobbyプランを終了し、現在はエンタープライズ向けサービスへ重点を移しています。有料プランは月額39ドルから提供されています。また、MySQLだけでなく、高速ストレージ(NVMe)を採用し、シャーディング(データを複数のサーバーに分散して処理する仕組み)に対応したPostgreSQLのマネージドサービスも提供するようになりました。現在のPlanetScaleは、個人利用者向けの無料サービスというよりも、大量のデータ処理が求められる企業向けの、高性能で大規模運用に適したデータベースプラットフォームとして位置付けられています。
その他の代表的なサービス
サーバーレスデータベースには、ここまで紹介した3つ以外にもさまざまな選択肢があります。
- Supabaseは、PostgreSQLを基盤とし、サーバーレスデータベースのホスティングに加えて、認証機能、ストレージ機能、データ更新時のリアルタイム通知などを備えたバックエンドプラットフォームを提供しています。
- CockroachDB Serverlessは、データを複数のリージョン(地域のデータセンター)に自動的に分散(シャーディング)して管理できる分散SQLデータベースを提供しています。
- Tursoは、SQLiteから派生したlibSQLを基盤として構築されており、利用者に近い場所で処理を行う「エッジ環境」での利用を目的としています。データベースごとに独立した環境を提供しながら、非常に短い応答時間を実現しています。
それぞれ異なる特徴や強みを持つサービスです。
Navicatを使ったサーバーレスデータベースへの接続
サーバーレスデータベースを利用するうえでの課題の一つは、開発者が普段使っているツールをこれまでどおり使い続けられるかどうかという点です。幸いなことに、多くのサーバーレスデータベースは、基盤となるデータベースエンジンとの通信プロトコル(ワイヤープロトコル)の互換性を維持するよう設計されています。そのため、MySQLやPostgreSQLに接続できるクライアントであれば、サーバーレスデータベースにも接続できます。もちろん、Navicatもその一つです。
Navicat Premiumは、組み込みのAmazon AWS接続を利用してAmazon Auroraへ直接接続できます。Aurora用の接続設定を行うことで、従来のMySQLやPostgreSQLと同様に、クエリエディター、データビューアー、スキーマ管理、データ転送などの充実した機能を利用できます。一方、NeonとPlanetScaleは、それぞれNavicatの標準的なPostgreSQL接続およびMySQL接続を使用して接続します。両サービスとも管理画面(ダッシュボード)で標準的な接続情報(接続文字列)を提供しており、ホスト名、ポート番号、データベース名、認証情報をNavicatの接続設定画面に入力し、必要に応じてSSLを有効にすることで接続できます。
つまり、サーバーレスデータベースが実現する開発を素早く繰り返しながらブランチを作成し、安全にスキーマ変更を行うワークフローを、Navicatのクエリ解析、実行計画の可視化(Visual Explain)、データ同期、スキーマ比較などの機能と組み合わせて利用できます。これにより、サーバーレスインフラの運用の手軽さを享受しながら、プロフェッショナル向けデータベース管理ツールならではの高度な機能も活用できます。
注意しておきたいポイント
サーバーレスデータベースは、あらゆる場面でプロビジョニング型データベースより優れているわけではありません。まず、コールドスタートは、応答時間に敏感なアプリケーションでは依然として考慮すべき課題です。新しいプラットフォームでは大幅に改善されていますが、この問題が完全になくなったわけではありません。また、接続の管理方法も従来とは異なる場合があります。コンピューティングリソースがゼロまで縮小され、その後再び起動される可能性があるため、コネクションプーリングはこれまで以上に重要になります。ほとんどのプラットフォームではこの機能が標準で提供されていますが、本番環境へ導入する前に、利用するプラットフォームが接続をどのように管理しているのかを理解しておくことが重要です。最後に、サーバーレスデータベースでは利用量に応じて料金が決まるため、毎月一定額で利用するプロビジョニング型データベースに比べて、コストを予測しにくい場合があります。特に、継続的に大量の処理を行うアプリケーションでは、プロビジョニング型データベースの方が費用対効果に優れることもあります。
結論
サーバーレスデータベースは大きく進化し、現在では開発環境だけでなく、幅広い本番環境のワークロードにも対応できる、十分に実用的な選択肢となっています。Aurora Serverless v2、Neon、PlanetScaleは、それぞれ異なるアプローチでサーバーレスデータベースを実現しています。そのため、どのサービスを選ぶべきかは、利用したいデータベースエンジン、必要な拡張性、そして重視する開発ワークフローによって異なります。一方で、これらに共通しているのは、サーバーの運用や管理にかかる手間を大幅に減らせることです。さらに、いずれも標準的なMySQLまたはPostgreSQLとの互換性を維持しているため、Navicat から接続・管理する際にも、特別な設定を行う必要はなく、利用できる機能が制限されることもありません。

