K8sで動く次世代PostgresプラットフォームXata

データの重力に縛られてきた私たち

「本番相当のデータを使ってテストしたいんですが、ダンプのリストアに一晩かかります」。若手エンジニアからそう相談されたのは、もう10年以上前のことだ。当時はストレージも高価で、開発チーム全員に本番規模のデータベース環境を割り当てるなど夢物語に近かった。ダミーデータの生成スクリプトを職人芸のようにメンテし続けるか、あるいは共用の巨大な検証DBを誰かのテストと衝突しないよう恐る恐る触るか。アプリケーションがどれほどアジャイルになろうと、私たちは常にデータベースという「重力」に縛られていた。

現代はどうか。コンテナとKubernetesがインフラの抽象化を推し進めたとはいえ、ステートフルなデータ、特にテラバイト級のリレーショナルデータベースの扱いは未だに泥臭い。Pull Requestごとに独立したデータベース環境(プレビュー環境)を立ち上げたいというモダンな開発フローの要求に対し、ただPostgresのコンテナを起動するだけでは解決にならない。真に欲しいのは「本番と同じデータセットを、一瞬で、コストをかけずに用意できる魔法」だからだ。

その魔法を、自分たちのKubernetesクラスタの上に構築できるオープンソースのプラットフォームが公開された。それが「Xata」だ。

「息をするように」データベースを分岐させる

Xataは、大規模なPostgresインスタンスをKubernetes上でセルフホストするためのクラウドネイティブ・プラットフォームだ。もともとフルマネージドなサーバーレスDBとして知られるXata Cloudの裏側を支えていた技術がOSSとして解放された形になる。

最大の目玉は、ストレージレベルでのCopy-on-Write(CoW)を活用した高速なブランチング機能だろう。テラバイト級のデータセットであっても、文字通り数秒で「コピー(ブランチ)」を作成できる。物理的にデータを複製するのではなく、変更された差分だけを書き込むCoWの恩恵だ。

さらに見逃せないのが「Scale-to-zero」の組み込みだ。いくらCoWでストレージ容量を節約できても、立ち上げたプレビュー環境の数だけPostgresのコンピュートリソース(CPUとメモリ)が常時稼働してはインフラ費用が跳ね上がる。Xataはアクセスがないアイドル状態のインスタンスのコンピュートリソースをゼロにスケールダウンし、新たな接続要求が来た瞬間に自動で立ち上げ直す。これにより、数百のプレビュー環境を極めて低コストで維持できるようになる。

マネージドRDB (例: RDS) 素のK8s Operator (CloudNativePG等) Xata (OSS版)
巨大DBのクローン スナップショット復元(遅い・重い) ストレージやCSIの実装に依存 CoWにより数秒で完了
アイドル時のコスト 常時稼働で課金され続ける コンピュートリソースは常時占有 Scale-to-zeroで劇的に削減
社内DBaaS化 高コストにつき非現実的 自力でのAPI/権限管理の実装が必要 REST APIとRBACが標準装備

巨人の肩に乗り、車輪の再発明を避ける

Xataのアーキテクチャを覗いてみると、彼らが非常に賢明な技術的選択をしていることがわかる。ゼロからすべてを自作するのではなく、Kubernetesエコシステムの強力な標準技術を土台にしているのだ。

高可用性、フェイルオーバー、バックアップといったPostgresの運用の中核は「CloudNativePG」という実績あるOperatorに委ねている。そして要となるストレージ基盤には「OpenEBS」を採用している。Xata自身は、これらの上に構築された「コントロールプレーン」として機能する。分離されたコンピュートとストレージをオーケストレーションし、APIキーによる細粒度のRBAC(ロールベースアクセス制御)や、HTTP/WebSockets経由でSQLを叩けるサーバーレスドライバーといった「開発者体験(DX)」の層を付加しているのだ。

素のKubernetes Operatorを直接叩いて社内DB環境を構築・運用したことがあるエンジニアなら、そこにどれほどの「接着剤となるコード」が必要か身に染みているはずだ。Xataは、企業が自前で「社内Postgres-as-a-Service」を作る際の、最も分厚くて厄介な中間層を一手に引き受けてくれる。

「何をやらないか」を定義する潔さ

私がこのリポジトリに強く惹かれたのは、技術的な優位性もさることながら、彼らが「Xataを使うべきではないケース」をREADMEで明確に定義している点だ。

彼らは「単一のPostgresインスタンスが欲しいだけならオーバースペックだからやめろ」と切り捨てている。さらに「不特定多数の顧客に提供するパブリックなDBaaSを作りたい場合も非推奨だ」と明言している。なぜなら、悪意あるテナントが混在するマルチテナント環境に対する高度なセキュリティ機能は、クローズドソースとして手元に残しているからだ。

自分たちのプロダクトが「社内の開発者向けDBaaS」や「CI/CDにおける使い捨てのプレビュー環境」というユースケースにおいて最大の威力を発揮することを深く理解し、それ以外の用途に無理に適用させようとしない。この境界線の引き方には、長く運用現場を戦い抜いてきたエンジニアリングチーム特有の誠実さが滲み出ている。

データは重い。しかし、インフラの進化はその重さを開発者から隠蔽しつつある。Xataは間違いなく、その進化の最前線に立つプラットフォームのひとつだ。

参考リポジトリ: xataio/xata

Photo by Growtika on Unsplash

コメントする