データベースのサーバーレス課金は、把握し正確に予測することが非常に難しいことで知られています。Prisma Postgresのこの料金に関するジレンマをどう解決するか考えたとき、私たちは物事を簡単にすることを目指しました。当社のオペレーションベースのモデルは、料金体系を簡素化し、リソースサイズや抽象的なコンピューティング時間(コンピューティングタイム)の指標について考える必要をなくします。
データベース料金のよりシンプルなアプローチ
アプリケーションがクラウドに移行するにつれて、最初に人気を博した料金モデルは「サーバフル課金」と呼ばれました。これらの固定サイズサーバインスタンスで実行する場合、将来のトラフィックをすべて予測して事前に適切なリソースサイズを選択する必要があるだけでなく、複雑なスケーリングメカニズムを自分で実装することも求められました。これにより、完全に制御できるようになりましたが、閑散期には過剰なプロビジョニングを行い、ピーク時にはリソースを確保するために奔走することを意味しました。
この料金方式の欠点を克服するため、「サーバーレス・コンピューティング時間課金」が登場しました。これは、事前のプロビジョニングの負担をなくし、データベースがアクティブだった時間に対してのみ課金することで、アイドル時のコストを大幅に削減しました。しかし、依然としてCPU秒やコンピューティング時間といった抽象的な単位で課金されるため、正確に予測することは非常に困難です。また、固定されたリソース制限を持つティアを選択する必要があり、ある種のインフラ作業を別の種類の作業と交換するようなものでした。さらに、コンピューティングの効率、ひいてはその実行時間は、基盤となるシステムに依存し、ユーザーの制御の範囲外でした。
Prisma Postgresは、オペレーションベースの課金によって、料金に関する騒動全体をよりシンプルで公平にするための異なるアプローチをとっています。つまり、お客様の利用状況は、使用するコンピューティングリソースやデータ帯域幅に関係なく、オペレーション数(詳細は以下で説明します)に基づいて請求されます。このモデルでは、リソースをプロビジョニングしたり、アイドル時やピーク時の負荷を考慮したりする必要がなく、システムが自動的にスケールします。これにより、コストがアプリケーションの動作に直接結びつき、退屈なインフラの決定から解放され、最も重要なこと、つまり機能の構築とユーザーの獲得に集中できます。
オペレーションベースの課金がどのように機能するのか、そしてこの料金モデルでコストを計算する方法について掘り下げてみましょう。
オペレーションとは?
本質的に、オペレーションとは、Prisma Postgresデータベースに対して実行するアクションのことです。それは作成 (create)、読み取り (read)、更新 (update)、削除 (delete) のいずれであっても、あるいはキャッシュされた読み取り (cached read) であってもです。
Prisma ORMはデータベースと対話するために使用する主要なクライアントであるため、当社ではこれをPrisma ORMを介して発行するクエリ(略して「Prismaクエリ」)としてカウントしています。これは、他のデータベースプロバイダーが独自のクライアントを提供しているのと同様ですが、Prisma ORMは、優れた型安全な開発者エクスペリエンスと、マイグレーションなどの追加機能によって、データベースの操作を簡素化します。つまり、Prisma Postgresで作業する際に優れた開発者体験(DX)を提供する大きな要素であり、それを介して実行するすべてのクエリがオペレーションとしてカウントされます。
このアプローチを選択した理由は、非常にシンプルだからです。舞台裏では、複雑なPrismaクエリが複数のSQLステートメントにつながることがありますが、課金目的ではそれは1つのオペレーションとして扱われるため、ユーザーはそれを考慮する必要がありません。複数のJOINを含むシンプルな作成や複雑な読み取りは、完了までに異なる時間を要する場合がありますが、それも考慮する必要はありません。また、それらが使用するデータ転送帯域幅についても同様です。
例を通して単一のオペレーションを見てみましょう。以下のPrismaクエリは1つのオペレーションとして請求されますが、これは複数の(以下の例では8つの)SQLステートメントに変換されます。
オペレーションベースの料金モデルが優れている理由とは?
実際には、これは皆様の考え方を転換させるものであり、私たちは良い意味での転換だと考えています。「このエンドポイントはどれくらいのコンピューティング時間を使用するのか?」や「このローンチでCPUやRAMが限界に達するようなトラフィックが発生したらどうしよう?」と問う代わりに、「このユーザーインタラクションはどれくらいのオペレーションを生成するのか?」と問うようになります。これは理解しやすく、予測しやすいだけでなく、チームがインフラの動作ではなく、製品の動作に集中できるようになります。
オペレーションに基づく課金は、次のことを意味します
- データベース操作に必要なコンピューティングについて何時間も考える必要はありません。データベースへの単純な書き込みであろうと、複数のJOINを含む複雑なクエリであろうと、それは単なる1つのオペレーションです。
- 書き込みが多いワークロードでも追加料金はかかりません。書き込みと読み取りは等しく請求されます。
- データ転送は料金に影響しません。そのため、エグレスが少量であろうと大量であろうと、クエリのコストは同じです。
- キャッシュされたクエリも単にオペレーションとしてカウントされ、はるかに低いレイテンシーと予測可能な料金の恩恵を受けます。
- ストレージの請求は他の使用量コストとは分離されており、これにより、より透明性が高く、理解しやすくなっています。
計算例
オペレーションベースの課金が実際にどのように機能するかを見るため、一般的な中規模アプリケーションの請求例を見てみましょう。
計算の前提となる基本条件と事実を以下に示します
- 月間400万オペレーション(月間アクティブユーザー数3,000の一般的なアプリケーションの場合)
- 毎月10万オペレーションが無料(料金プランによる)
- 100万オペレーションあたり18ドル(無料の10万オペレーションを超える分)
- 使用ストレージ1.2GB(中規模アプリケーションの一般的な使用量)
- 毎月1GBのストレージが無料(料金プランによる)
- 月額固定費用なし(基本プラン料金)
これらの前提に基づくと、請求額の計算は以下のようになります
無料の10万オペレーション + (390万オペレーション × $18/100万) + 無料の1GBストレージ + (0.2GBストレージ × $2/GB) + 基本プラン料金$0
= (3.9 × $18) + (0.2 × $2)
= 月額$70.6
注:この計算はStarterプランに基づいています。上位プランにアップグレードすると、100万オペレーションあたりの料金は段階的に減少します。さらに、無料で含まれるものも増え続けます。つまり、BusinessプランではStarterプランよりも100万オペレーションあたりの料金が安くなり、より多くのストレージが無料で含まれます。その他のプランの違いに関する機能は、当社の料金ページでご確認ください。
最後に
料金設定は製品開発において不可欠な考慮事項であり、これまでいただいたフィードバックから、当社のオペレーションベースのアプローチは肯定的な変化であると確信しています。
この説明が、Prisma Postgresのオペレーションベースの料金モデルに関して、お客様が抱える疑問の解消に役立つことを願っています。
この機会に、ぜひPrisma Postgresをお試しください。皆様がPrisma Postgresで何を構築されるか、楽しみにしています!
次回の投稿もお見逃しなく!
Prismaニュースレターに登録