2024年10月29日

Prisma Postgres®: ユニカーネルとマイクロVMを使用したモダンなPostgreSQLサービスの構築

Prismaでは、データベースのデプロイはNotionに新しいページを追加するのと同じくらい簡単であるべきだと考えています。本日、このビジョンに向けた最初のマイルストーンを共有できることを嬉しく思います。Prisma Postgres®は、独自のアーキテクチャ設計により、開発者に常時稼働従量課金制のデータベースを提供します。今すぐお試しください!

Prisma Postgres®: Building a Modern PostgreSQL Service Using Unikernels & MicroVMs

要するに

Prisma Postgresの発表を嬉しく思います。これは、開発者にストレージとクエリに対し常時稼働かつ従量課金制の料金モデルを提供するマネージドPostgreSQLサービスです(固定費用やコンピューティング費用はかかりません)。これはサーバーレスデータベースのようなものですが、コールドスタートがなく、豊富な無料枠があります!

これらの機能を持つサービスを構築するため、当社はベアメタルマシン、画期的なミリ秒単位のクラウドスタック、そして超軽量マイクロVMとして実行されるユニカーネル(「超専門化されたオペレーティングシステム」と考えてください)を用いた独自のアーキテクチャを設計しました。

Prisma製品とのファーストクラスな統合により、Prisma Postgresは、接続プーリング、キャッシング、およびクエリ最適化の推奨機能をそのまま利用できます。

Prisma Postgresがアーリーアクセスで利用可能になりました 🎉


Prisma Postgresを試す

「サーバーレス」PostgreSQLの新時代

当社の新しいアーキテクチャは、既存のクラウドプロバイダーや他のサーバーレスデータベース製品と比較して、データベースのプロビジョニングに根本的に異なるアプローチを採用しています。このセクションでは、サーバーレスデータベースのトレンドと、Prisma Postgresがこのカテゴリにどのように適合するかを説明します。当社のアーキテクチャや技術的な詳細に関心がある場合は、次のセクションに進んでください。

サーバーレスデータベースとは?

サーバーレスデータベース(AWS Aurora Serverless、Azure Cosmos DB、Neon、Tursoなど)は、サーバーレスコンピューティングにおける対応するものと同様のモデルに従います。その主な約束は、開発者をデータベースインフラストラクチャの管理から解放し、費用対効果の高い「従量課金制」の料金モデルを提供することです。

サーバーレスデータベースを使用する場合、データベースはアプリケーションのニーズに応じて自動スケーリングするため、開発者はリソース(ストレージやコンピューティングなど)のプロビジョニングについて考える必要がありません。

コールドスタート:サーバーレスデータベースの主な欠点

自動スケーリングの約束は、多くの場合、データベースがゼロにスケールダウンできる、つまり一時停止することを意味します。これは、データベースが非アクティブ状態から「起動」する必要がある場合に、高いクエリレイテンシと劣悪なユーザーエクスペリエンスにつながる可能性があります。

Source: <a href="https://vercel.com/docs/storage/vercel-postgres/limits#vercel-postgres-cold-starts">Vercel Docs | Vercel Postgres Limits</a>

出典: Vercel Docs | Vercel Postgresの制限

データベースプロバイダーによっては、一時停止したデータベースを起動するために開発者による手動操作を必要とする場合さえあります。サーバーレスデータベースには利点がありますが、コールドスタートは大きな欠点です!

サーバーレスデータベースプロバイダーは非常に限られた無料枠しか提供できません

無料枠は、開発者がデータベースサービスを探索し、趣味のアプリケーションを構築し、概念実証を作成するために不可欠です。

しかし近年、無料枠の提供はデータベースプロバイダーにとって大きな課題となっています。AWSのような主要プロバイダーからのインフラストラクチャの再販に依存したり、高価でリソースを大量に消費するコンテナベースのシステムを必要とする技術設計のため、これらのプロバイダーは実現可能な無料枠を維持するのに苦労しています。

Prisma Postgres®: ユニカーネルとマイクロVMを使用したモダンなPostgreSQLサービスの構築

この困難により、PlanetScaleHerokuのような企業は、無料枠の提供を完全に中止しました。

Prisma Postgres: 豊富な無料枠とコールドスタートなしの「サーバーレス」データベース

限られた無料枠やコールドスタートといった欠点なしに、「サーバーレス」のすべてのメリットを享受できたらどうでしょうか?当社は、マネージドPostgreSQLサービスをゼロから構築することで、このビジョンを実現しています。

本日、この方向への第一歩を共有できることを嬉しく思います。当社はUnikraftと提携し、コールドスタートをなくし、ミリ秒単位でのスケール・トゥ・ゼロと自動スケーリングを可能にし、数千のインスタンスを単一のベアメタルマシンで実行できるようにする画期的なミリ秒単位のクラウドプラットフォームであるUnikraft Cloudを使用してPostgreSQLインスタンスをプロビジョニングします。

コールドスタートは本当に厄介です。Unikraft Cloudは、ハードウェアレベルの分離により、数ミリ秒単位のコールドスタートを提供します。

コールドスタートよ、死ねコールドスタートよ、死ね Unikraftブログにて

この独自のアーキテクチャは、コールドスタートを排除するだけでなく、単一のマシンで数千のデータベースをサポートすることで、優れた経済性も提供します。このアプローチにより、他のデータベースプロバイダーでは提供できないような豊富な無料枠を作成することができます。

新しいPostgreSQLサービスの技術的な詳細については、読み進めてください!

ミリ秒単位のクラウドインフラストラクチャ上にマネージドPostgreSQLサービスを構築する

現代のPostgreSQLプロバイダーは通常、データベースインフラストラクチャをプロビジョニングするために、次の2つのアプローチのいずれかに依存しています。

  • AWSインフラストラクチャの上に構築する(本質的には再販
  • カスタムのコンテナベースのオーケストレーションシステムを構築する(例:Kubernetesを使用)

Prisma Postgresはそのどちらでもありません。代わりに、Unikraft Cloudを使用し、データベースを扱う際に比類のない効率性、安全性(強力なハードウェアレベルの分離による)、速度、および開発者エクスペリエンスを提供する、新しい独自のアーキテクチャに基づいています。

Unikraft Cloudスタックの概要

Unikraft Cloudのミリ秒単位のクラウドインフラストラクチャを詳しく見てみましょう。

Source: <a href="https://unikraft.cloud/how-it-works/">Unikraft Cloud Docs | How it works</a>

出典: Unikraft Cloud Docs | 仕組み

高い効率性とミリ秒単位のセマンティクスを提供するため、Unikraftチームはネットワークコンポーネント、クラウドスタック、およびアプリケーションの起動時間を最適化する必要がありました。上の図から、Unikraft Cloudの主要コンポーネントの簡単な概要を以下に示します。

  • カスタムコントローラーとプロキシ: クラス最高水準のリアクティブなミリ秒単位のセマンティクスとスケーラビリティを提供するカスタムプラットフォームコントローラーです。ネットワーク処理を高速化するため、Unikraft Cloudはこのコントローラーとカスタムプロキシを連携させ、ロードバランシングを処理し、受信リクエストに非常に迅速に反応できるようにしています。
  • Firecrackerとユニカーネルに基づく高速仮想マシンモニター(VMM): Unikraft Cloudのユニカーネルは、アプリケーション、アプリケーションの実行に必要なコードのみを含む軽量なイメージを使用し、それ以上は含みません。Firecracker VMMの修正バージョンと組み合わせることで、これらのイメージは超高速で起動します。
  • スナップショット: 最適化されたネットワーク層とクラウドスタックだけでは常に十分とは限りません。一部のアプリケーションは初期化に数秒から数分かかることがあり、プラットフォームのミリ秒単位のセマンティクスを妨げる可能性があります。これに対処するため、Unikraft Cloudはオプションのスナップショット機能を提供しています。アプリケーションが完全に初期化されるのを待ち、メモリのスナップショットを取得し、その後ゼロにスケールします(これが大規模にうまく機能するように、多くのエンジニアリングがその背後で行われています)。その後、コールドスタートはスナップショットから再開され、大規模なアプリケーションでもミリ秒単位に短縮されます。

クラウドプロバイダーなし:Prisma Postgresはベアメタル上で動作

当社はPrisma Postgresを基本原則から構築し、パフォーマンス、コスト、安全性、使いやすさの完璧なバランスを追求しています。

完全な制御を行い、主要なクラウドプロバイダーの制限、制約、および料金モデルを回避するため、当社は世界中のデータセンターで独自の物理マシンをリースすることを選択しました。

Prisma Postgresは、現代のハードウェアが驚くほど強力で安価であるという観察に基づいており、これは最近Basecampによって提唱されました。

クラウドを離れることで、5年間で700万ドルを節約できます。

クラウドコンピューティングはすべての人向けではないクラウドコンピューティングはすべての人向けではない Basecampブログにて

要するに:Prisma Postgresを使用すると、お使いのデータベースは、高CPUコア数、大量のRAM、超高速NVMeストレージに支えられた強力なサーバー上で動作します。

UnikraftとFirecrackerによるマイクロVMとして実行されるユニカーネル

当社のアーキテクチャの主要なコンポーネントの1つは、軽量なマイクロVMとして動作するユニカーネル内でのPostgreSQLのデプロイです。

ユニカーネルは、起動時間、スループット、メモリ消費といったいくつかの指標において、優れたパフォーマンスを提供することで知られています。

Unikraft: 簡単な方法で高速かつ特殊なユニカーネルを (研究論文、EuroSys 21)

過去数ヶ月間、当社はUnikraftチームと密接に協力し、彼らの開発者体験(DX)の向上とユニカーネルを開発者にとってより親しみやすいものにする取り組みに深く感銘を受けました。私たちの結論は明確です。ユニカーネルは、ついに高性能な本番ワークロードに採用される準備が整いました。

ユニカーネルを主要コンポーネントの1つとして使用するUnikraft Cloudは、クラウドネイティブアプリケーションをデプロイする最速、最も経済的、かつ安全な方法を提供します。

  • 高速: 数ミリ秒で再開するステートフルなスケール・トゥ・ゼロ
  • 経済的: アイドル状態のリソースコストがなく、最適な経済性のための優れたサーバー密度
  • 安全: コンテナと関数のハードウェアレベル分離

Unikraftは、追加のコンパイルステップを通じて、従来のフルスタックアプリケーションコンテナを、実行に必要なリソースのみを含むユニカーネルバイナリイメージに変換します。これは、個々のアプリケーションのニーズに合わせて調整された専門のオペレーティングシステムと考えることができます。

Source: <a href="https://unikraft.cloud/how-it-works/">Unikraft Cloud Docs | How it works</a>

出典: Unikraft Cloud Docs | 仕組み

Prisma Postgresユニカーネルバイナリは、元のPostgreSQLイメージの5分の1のサイズ

当社はUnikraftチームと緊密に協力し、Prisma Postgresユニカーネルバイナリイメージを作成しました。以下は、以前のUnikraftコンパイルプロセスの図ですが、Prisma Postgresに特化したものです。

Blog image

Unikraftチームは、元のPostgreSQLイメージを280MBから61MBに削減することに成功しました。以下は、Prisma Postgresイメージのコンポーネントの内訳です。

当社は、デプロイから不要なパッケージを特定し削除することで、イメージを元のサイズの約20%に削減しました。元のPostgreSQLイメージには、Prisma Postgresには必要ない汎用機能が多数含まれています。

当社のアーキテクチャでは、これらの特殊化されたバイナリイメージは、当社のベアメタルマシン上にユニカーネルとしてデプロイされます。そして、ユニカーネルは最終的に仮想マシンであるため、各PostgreSQLインスタンスは強力なハードウェアレベルの分離を提供します。

Unikraftのおかげで、単一のマシンで数千のアプリケーション(この場合はPrisma Postgres)インスタンスをホストできます。

標準仮想マシン、コンテナ、およびユニカーネルの比較

標準仮想マシン(VM)、コンテナ、ユニカーネルは、ハードウェア上に仮想環境を作成するための異なるアプローチを提供します。

ユニカーネルは、クラウドデプロイメントに基本原則のアプローチを採用しています。クラウドでは、おそらく2つのことだけが重要です。

  • 強力なハードウェアレベルの分離を提供するハイパーバイザー(およびその上で動作する仮想マシン)
  • あなたのアプリケーション

その2つの間にあるものはすべてオーバーヘッドです。ユニカーネルは、アプリケーションが最高の効率でハイパーバイザー上で実行できるように、両者の間に可能な限り薄いソフトウェア層を追加します。

Source: <a href="https://unikraft.org/docs/concepts#introduction-to-unikernels/">Unikraft Docs | Introduction to unikernels</a>

出典: Unikraft Docs | ユニカーネル入門

以下は、ユニカーネルが標準VMやコンテナと比較して持つ利点の概要です。

Blog image

Unikraftのミッションは、「最高のパフォーマンス、セキュリティ保証、および目標KPIを確保するために、すべてのアプリケーションに対して専用OSを作成できるようにする」ことです。

Prismaの当社にとって、これはPostgreSQLインスタンスを持つマシンがPostgreSQLの実行に特化していることを意味します。これは、アプリケーション(つまりPostgreSQL)とは関係のないリソースを消費する汎用オペレーティングシステム上でPostgreSQLを実行するのとは対照的です。

Prisma Postgresでコールドスタートがないのはなぜですか?

当社のアーキテクチャは、サーバーレス製品のすべての利点を提供しつつ、コールドスタートを回避することを可能にします。これは、個々のコンポーネントの軽量設計によって実現されます。

  • カスタムネットワーク層: Unikraft Cloudのカスタムプラットフォームコントローラーとカスタムプロキシは、クラス最高水準のリアクティブなミリ秒単位のセマンティクスとスケーラビリティを提供します。
  • 事前構築済みユニカーネルイメージ: 当社のPostgreSQLユニカーネルは、迅速なデプロイのために事前構築され、最適化されています。各ユニカーネルバイナリにはPostgreSQLと最小限のOSが含まれており、時間とリソースを大量に消費する初期化プロセスを回避します。
  • マイクロVMはミリ秒で起動: より大きなオーバーヘッド(BIOS、完全なOSなど)のために初期化に時間がかかる従来の仮想マシンとは異なり、当社のマイクロVMは不要なコンポーネントが取り除かれ、ミリ秒単位で起動できます。
  • マルチティアVMスナップショット: Unikraft VMは、Firecrackerの仮想マシンモニター(VMM)とユニカーネルのパッケージング特性を組み合わせています。Firecrackerにより、VMのメモリのスナップショットを作成および復元することが可能になり、マシンをハイバネーションから数ミリ秒で復元できるようになります。Prisma Postgres向けには、スナップショットを効率的に管理するマルチティアースナップショットシステムを構築しています。この機能により、短期間の非アクティブ状態の後でもデータベースを休止状態にしながら、起動オーバーヘッドを無視できるレベルでリクエストを処理できるようになります。

DB、ORM、エッジキャッシング、接続プーリングなどを備えた完全に統合されたデータ層

Prisma Postgresは、グローバルアプリケーション向けに完全に統合されたデータ層を提供するという当社のビジョンに向けた大きな一歩です。

当社のPrisma製品群は、データモデリング、マイグレーション、クエリ、あるいは複雑で高価なインフラストラクチャ(RedisやApache Kafkaなど)を心配することなく、データ駆動型アプリケーションを構築、強化、成長させることができます。

Prismaで得られるものの概要は次のとおりです。

Prisma Postgresを始める

Prisma Postgresを試す最も簡単な方法は、こちらの指示に従うことです。


Prisma Postgresを試す

データベースを設定した後、サンプルプロジェクトのダウンロードと実行に関する指示を受け取ります。

今日のPrisma Postgresで得られるもの

Prisma Postgresは本日よりアーリーアクセスで提供されます。アーリーアクセス期間中、本番環境での使用は推奨されず、いくつかの注意点があります。

  • Prisma Postgresを始めて、試行し、小規模なプロジェクトを構築できる豊富な無料枠があります 🎉
  • Prisma Postgresには常にAccelerateがバンドルされており、これにより接続プーリングとエッジキャッシングをすぐに利用できます。
  • Prisma Postgresは、クエリごと、エグレス(データ転送)、およびデータベースイベントの保存/配信に対して課金されます。詳細については、当社の料金ページをご確認ください。

Prisma Postgresの現在の制限については、ドキュメントもご確認ください。

Prisma Postgresを試す

Prisma Postgresは、迅速な起動時間、低いリソースオーバーヘッド、分離による高いセキュリティ、そして自動スケーラビリティを提供しつつ、皆様がご存知の愛するPostgreSQLデータベースであり続けます。

本日、Prisma Postgresの初回リリースが行われました。来年初頭の一般提供リリースにご期待ください!

Prismaファミリーへのこの追加に、私たちと同じくらい皆様も興奮していることを願っています。ぜひお試しいただき、XDiscordでご意見をお聞かせください!


Prisma Postgresを試す

注記: Postgres、PostgreSQL、およびSlonikロゴは、カナダPostgreSQLコミュニティ協会の商標または登録商標であり、同協会の許可を得て使用されています。

次の投稿をお見逃しなく!

Prismaニュースレターに登録

© . All rights reserved.