InfoQ ホームページニュースPayPalが1日3,500億回のリクエスト処理を支えるキーバリューストアをオープンソース化
PayPalが1日3,500億回のリクエスト処理を支えるキーバリューストアをオープンソース化
2023年7月12日読了時間3分
PayPalは先日、RocksDBを基礎ストレージエンジンとする分散型キーバリューストアであるJunoDBをオープンソース化した。可用性が高くセキュリティに特化したデータベースであるJunoDBは、PayPalで毎日3,500億件のリクエストに対応している。
Golangで書かれたJunoDBは、プロキシベースのアーキテクチャを持ち、リニアな水平接続のスケーリングが可能である。このデータベースは、一貫したハッシュを使用してデータを分割し、クラスタを拡張、縮小する際のデータ移動を最小限に抑える。ダウンタイムゼロを実現するために、JunoDBはデータセンター内およびデータセンター間のレプリケーションを使用する。また、クォーラムベースのプロトコルと2フェーズコミットにより、データの一貫性を確保している。PayPalのプリンシパルMTSであるYaping Shi氏は、次のように書いている。
PayPalでは、ログインからリスク、最終的なトランザクション処理まで、ほぼすべてのコアバックエンドサービスがJunoDBに依存しています。JunoDBを使えば、アプリケーションはデータを効率的に保存・キャッシュして、リレーショナル・データベースや他のサービスの高速アクセスや負荷軽減を実現できます。
JunoDBは、3つの主要コンポーネントで構成される。JunoDBクライアントライブラリ(さまざまな言語で利用可能)、JunoDBクライアントプロキシ(ストレージサーバーと接続し、シャーディングを担当するロードバランサー)、JunoDBストレージ(高性能組み込みデータベースRockDBを搭載し、インメモリとディスクの両方を永続化ストレージとして提供)。
ノードが故障した場合でも、自動的かつ瞬時にフェイルオーバーが行われるため、リーダーの再選択やデータの再分配は必要ない。
この新しいNoSQLソリューションの使用例としてが提案されているのは、ユーザー設定、アカウント詳細、API応答などの情報を保存するキャッシング、操作が冪等であることを確認し重複する処理を排除すること、地理的に離れているデータベース間のレプリケーション遅延を解決するレイテンシーブリッジなどである。Shi氏は、このプロジェクトが社内でどのように発展していったかを説明した。
当初はシングルスレッドのC++プログラムでしたが、その後Golangで書き直され、高度な並行処理とマルチコアに対応しました。また、JunoDBは、インメモリ型の短いTTL(Time To Live)データストアから、長いTTLをサポートする永続データストアへと進化し、デフォルトでディスク上の暗号化と転送中のTLSが有効になっておりデータセキュリティを向上させています。
Mercado LibreのシニアソフトウェアエンジニアであるNahim Felicito Gomez氏は次のようにコメントしている。
JunoDBをGolangで書き直すことで、PayPalはこの言語の並行処理とマルチコア機能を活用し、JunoDBクライアントライブラリを構築するのに理想的な選択となりました。
Hacker Newsでは、多くのユーザーがこのプロジェクトとキーバリューストアの利点について、JunoDBとFoundationDBなどの他のデータベースと比較しながら議論しているが、ユーザーのgregwebs氏は発表データがないことに疑問を呈している。
ベンチマークや、何らかの数値の言及があるといいのですが。TiKVは、ほとんど同じアーキテクチャのCNCF寄贈プロジェクトで、200ノードよりも大きなクラスタに導入されています。
JunoDBは、オープンソースプロジェクトとしてGitHubでApache 2ライセンスで公開されている。開発者がこのデータベースを効果的に活用できるように、PayPalはサーバーのセットアップとクライアント構築のチュートリアル動画を公開した。Golangによるクライアントや、Kubernetes用のJunoDBオペレータもロードマップにある。
関連記事
関連スポンサーコンテンツ
特集コンテンツ一覧
効率的なモバイルストリーミングアプリケーションの構築
投稿日2025年5月5日 午後3時5分AIトレンドがソフトウェアチームに変革をもたらす
投稿日2025年5月5日 午後3時0分アーキテクチュラル・インテリジェンス – 次のAI
投稿日2025年1月9日 午前12時8分プラットフォーム・エンジニアリングによる開発者エクスペリエンス向上
投稿日2024年12月5日 午後12時49分バーチャルパネル:大規模言語モデルを採用する際の考慮点
投稿日2024年11月19日 午前5時30分スタッフ・エンジニアへの道におけるリスクと失敗
投稿日2024年10月7日 午前4時35分
InfoQ ニュースレター
毎週火曜日に前週のまとめコンテンツをお送りいたします。(日本語版は不定期リリース)25万人のシニアな開発者コミュニティーにぜひご参加ください。サンプルを見る