楽天モバイルが認めた、新基準のオープン・ソース分散SQLデータベース「YugabyteDB」〜高可用性、パフォーマンス等、妥協なきプラットフォームの実現
![](https://thinkit.co.jp/sites/default/files/styles/main_image_730x/public/main_images/rep_yugabytedb_main.png?itok=1jCPy4Eh)
2021年11月17〜19日にオンラインで開催された「DB TECH SHOWCASE」にて、分散データベース「YugabyteDB」が紹されていたので、レポートしたいと思います。
YugabyteDBは、Google Spannerに着想を得て開発されたトランザクションやクラウドネイティブアプリケーションのための分散SQLデータベースです。インタフェースはPostgreSQL及びCasaandra互換で、分散ということで水平方向へのスケーリングが得意なだけではなく、トランザクションも担保できるようになっています。また、ノード数が増えても高可用性を維持し、問題発生時の回復力も充実しています。グローバルでも採用事例が増えてきているそうです。
YugabyteDBの3人の設立者は、RDBMS分野、特にOracle DBの技術者としての実績をもとに、Facebookでスケールするデータプラットフォームを構築する中で、アーキテクチャがどうあるべきかということを模索し、CassandraやHBaseといった成果物を生み出してきました。その後、ハイパーコンバージドインフラストラクチャーを提供するNutanixにて、エンタープライズで利用されるために必要とされる機能を蓄積し、生み出されのがYugabyteDBです。
クラウドネイティブというアプローチが広がる中、アプリケーションはスケールしやすいのに、DBはなかなかスケールできていないということが課題になってきていました。DBがスケールできないことにより、マイクロサービス化され、スケールしたアプリケーションからの要求にエラーが発生しないようにキャッシュやAPIを活用するという方法をとることになりますが、これだけでは根本的な問題の解決にはつながりません。
本来は、アプリケーションに合わせてDBもスケールできると良いわけですが、DBインスタンス同士の連携が必要になり、現状では機能を追加したり、クラウド側のサービスを活用したりすることで対応できます。しかし、単一のクラウド環境でも複雑な対応が必要であるのに、マルチクラウドになると更に話は複雑になり 、クラウド間で連携しなければいけないという大きな問題が発生します。現状では、このようにアプリケーションのスケールやアクセスパターンの変化にデータベースが追随できないというのが現状です。
この課題を解決するために開発されたのがYugabyteDBで、これを活用することで、アプリケーションのスケールに柔軟に対応することや、アクセスパターンに応じたシームレスな連携が可能になります。また、マルチクラウド環境でも異なるクラウド間のインスタンスにも一貫性のあるアクセスが可能になります。モノリシックなデータベースには「スケールしにくい」というような問題があり、一方、KVSのように「スケールしやすい」NoSQLでは、トランザクションには見劣りする部分があったり、SQLが使えないというのが弱点になりますが、これら一見すると相容れない要件を1つのプロダクトとして昇華させた形で提供できるのがYugabyteDBの強みです。
アーキテクチャとしては、シンプルでQueryを処理する部分とデータを処理する部分に分かれています。Query処理部分は基本的にPostgreSQLやCassandraの実装をそのまま利用しています。DocDBは、Facebookで実装されたものに影響されて開発したものです。このようにQuery部分を分けたことにより、今後新しいQueryに対応する場合もその部分のみを開発することで新しいQueryに対応できるようになります。
ドキュメントストアレイヤでは、tabletと呼ばれるシャーディングの単位でレプリケーションを実施しています。下図にあるように、各ノードの中からleaderが1つ選ばれ、他のノードがfollowerノードになります。さらにこのleaderが特定のノードに集中しないように配置される仕組みになっています。
次に、ユースケースとして以下の3つのパターンの紹介がありました。
- 既存システムの拡張を想定した、ビジネスクリティカルなデータ運用
Eコマースやペイメントシステムのようなクリティカルな環境でもサービスの状況に柔軟に対応しなければいけない場合やモダナイゼーションでレガシーDBを分散DBへの移行のニーズ場合 - 予測しにくいデータアクセスに対するトランザクションプラットフォーム
IoTやテレメトリ管理などのようにインフラが異なっても同じ操作性でアクセスやクラウドネイティブの環境にデプロイしたい場合 - ビジネス継続のためのマルチクラウド、地理的分散同期・非同期データ連携
グローバルでデータ連携をする必要があったり、散在したデータ資産を統合したいような場合
具体的には、ウォルマート、Amazonに次ぐ米国小売業3位のスーパーマーケットチェーンであるKrogerでは、shopping listサービスの導入時はSpannerや他の技術も検討されましたが、特定ベンダーのプロプライエタリな技術にロックインされることを回避すると同時に、クラウドサービスで起こり得る大規模障害から自社サービスへの影響を最小化できることを理由にYugabyteを採用しました。これが、Yugabyteの最初のお客様だそうです。また、米国シリコンバレーで各種金融機関にマーケット情報を提供するXigniteでは、1日あたり14Billionリクエストを全世界100箇所以上の取引所間で処理しています。さらに、ネット通販の配送・返品をサポートするNarvarでは、ブラックフライデーなどでの予測できないアクセスに対して、マルチクラウドとマルチアベイラビリティゾーンで対応しているそうです。
国内における事例としては、楽天モバイルにおける大規模導入事例が紹介されました。同社VP of Engineering Data & AI PlatformのJoji John氏から、国内の複数データセンターに跨った大規模クラスタの紹介、また導入に至った経緯として、通信事業を支えるサービスを提供するために、予測できないワークロードとハイパフォーマンス、回復性、複数拠点、クラウドネイティブといった課題を克服する必要があり、キャリアグレードの厳しい選定基準も設けながらも、最後まで残ったのがYugabyteDBだったという説明がされていました。
最後に、Yugabyteの目指すところが示されました。単なる分散データベースではなく、さまざまなワークロードに対応し、柔軟にスケールするような環境を提供することで、マルチクラウドでのデータ管理を実現する分散データプラットフォームの実現です。使い慣れたPostgreSQLのようなインタフェースで簡単に分散化できる環境が構築できれば、これまでクラウド移行を阻む要因となることの多かった従来型のデータベース技術に置き換わる新しい選択肢として、企業のクラウドジャーニーが加速されることが期待できるのでは、と考えます。
連載バックナンバー
Think ITメルマガ会員登録受付中
全文検索エンジンによるおすすめ記事
- 米YugabyteのCTOを務めるKarthik氏が語る、クラウド時代の分散SQLデータベース「YugabyteDB」の使いどころ
- マイクロサービス時代に最適なデータベース環境とは何か ─SRA OSSから2つの提案 「YugabyteDB」&「Pgpool-II on Kubernetes」
- CloudNative Days Tokyo 2023から、DBaaSの現在とマルチクラウドの可能性を解説
- 新しいPostgreSQLクラスタ
- PingCAP CEOのMax Liu、米HTAP Summit 2022でHTAP登場の背景を語る
- NoSQLとNewSQLの技術革新、マルチテナンシーの実現と高いスケーラビリティを提供
- PostgreSQLクラスタの動向
- Oracle Cloud Hangout Cafe Season4 #4「Observability 再入門」(2021年9月8日開催)
- NoSQL&RDBMSクラスタ MySQL Cluster
- MySQL Clusterの特徴とアーキテクチャ