マイクロサービス時代に最適なデータベース環境とは何か ─SRA OSSから2つの提案 「YugabyteDB」&「Pgpool-II on Kubernetes」
はじめに
近年、コンテナなどのクラウドネイティブな技術を使ってビジネスを支えるITシステムをマイクロサービス化する企業の動きが活発化している。そうしたなか、SRA OSSではマイクロサービスアーキテクチャに適合したクラウドネイティブのデータベースソリューションとして「YugabyteDB」と「Pgpool-II on Kubernetes」の活用を提唱・提案している。これら2つのソリューションによって、データベースのあり方がどう変わり、それによってどのようなベネフィットが企業にもたらされるのだろうか。
マイクロサービス化を巡るデータベースの課題
SRA OSSが導入支援に力を注いでいる「YugabyteDB」と「Pgpool-II on Kubernetes」は、ともにコンテナ運用管理ツール「Kubernetes」など、クラウドネイティブな技術に対応したオープンソースソフトウェア(OSS)製品だ。
SRA OSSのチーフエンジニア兼Pgpool-II開発者の彭 博氏によれば、これら2つの製品は「ビジネスを支えるITシステムのマイクロサービス化」という潮流にデータベースを適合させるためのソリューションでもあるという。言い換えれば、マイクロサービス化を巡るデータベースの課題を解決するための製品がYugabyteDBであり、Pgpool-II on Kubernetesであるというわけだ。
では、そもそもマイクロサービス化、あるいはコンテナ化を巡るデータベースの課題とは何なのだろうか。その課題を彭氏は以下の3点に集約している。
- 運用管理を巡る課題:マイクロサービス化(データベースのコンテナ化)によってデータベースの数が増えていくと、バックアップやリカバリなど、可用性を担保するための仕組みが複雑化し、運用管理の手間とコストが増大する。
- データの永続化を巡る課題:データをどう処理するかのビジネスロジックを記述しただけのアプリケーションはコンテナ化が容易だが、データベースは「ステートフル」なシステムであり、自らの状態を保持し、その変化にもとづいてリクエスト(クエリ)に対するレスポンスを返さなければならない。そのためデータベースの可用性を担保するだけではなく、「データ永続化」の仕組みもコンテナに実装する必要がある。
- データの一貫性と拡張性を巡る課題:データベースにおけるデータの一貫性、ないしはトトランザクション処理のACID特性(*1)を担保するうえでは、RDBを使用するのが適切だ。ただし、RDBは元来、1台のサーバ上で実行するように設計され、複数のサーバ(ノード)を使い水平方向で拡張することは困難であり、データベースへのデータの書き込みを分散して処理できない。一方で、 NoSQLデータベースは、水平方向の拡張は容易だが、ACID特性を持ったトランサクション処理を実現するのは難しい。
*1:ACID特性とは、Atomicity(原子性)、Consistency(一貫性)、Isolation(独立性)、 Durability(永続性)という、トランザクション処理の4つの特性を指す
データベースの課題を抜本解決するYugabyteDB
YugabyteDBとPgpool-II on Kubernetesのうち、YugabyteDBは上に示した3つの課題を抜本的に解決しうる分散SQLデータベースだ。
クエリを処理するレイヤとデータを処理するレイヤの2層から成り、その構造の中で「PostgreSQL互換のSQLクエリ」のサポートをはじめ「トランザクション処理におけるデータの一貫性(ACID特性)」の確保、NoSQLデータベースと同様の「水平方向の柔軟な拡張性」、さらには「シンプルな構成での高可用性・耐障害性」などを実現している。まとめれば、RDBとNoSQLデータベースの特性を併せ持った分散SQLデータベースが、YugabyteDBであるわけだ。
そのYugabyteDBでは、標準搭載の機能だけで迅速にSQLデータベースのクラスタを構築して可用性を高めることができる。障害発生時における系統切り替えの処理も不要で、ダウンタイムなくデータベースの運用を続行することが可能だ。また、YugabyteDBは、オンプレミスのデータセンターやマルチクラウド環境、Kubernetesといった多様なプラットフォーム上で動作することができ、さまざまなスケールでデータベースの高い可用性と耐障害性を確保することができる。
YugabyteDBには、データベースノードを水平方向で自由に拡張(スケールアウト)し、負荷分散による性能向上を図れるというメリットもある。しかも、どのノードでもデータベースに対するデータの読み取り(参照)、書き込み(更新)が行え、かつ、データの一貫性も担保できる。さらに、ノードの拡張のみならず、縮小(スケールイン)も可能としている。
彭氏によれば、YugabyteDBの適用範囲は幅広く、ユースケースはさまざまに想定できるという。そのユースケースの1つは、一般生活者に使用される大規模eコマースサイトや金融機関のシステムなど、データの一貫性とデータベースの高い可用性・拡張性が同時に求められるシステムへの適用だ。こうしたシステムのデータベースをYugabyteDBに切り替えることで、システムのマイクロサービス化がスムーズに、かつ、多大な手間やコストをかけずに実現できるようになる。さらに、YugabyteDBは、OSS製品であるがゆえに、特定のベンダーにロックインされるリスクも回避できる。
「こうしたYugabyteDBのメリットから、米国を代表する大手小売りチェーンが大規模eコマースサイトのデータベースをYugabyteDBに切り替え、サイトの耐障害性を向上させたという例があります」と、彭氏は明かす。
また、ビッグデータやIoTデータを管理するシステムの性能を上げたり、グローバルに展開しているシステムの拡張性や柔軟性、可用性を高めたり、データベースの可用性や耐障害性を担保する仕組みをシンプル化するうえでも、YugabyteDBの活用は有効であると彭氏は付け加える。
PostgreSQLクラスタのクラウドネイティブ化を実現する
Pgpool-II on Kubernetes
一方、Pgpool-II on Kubernetesは、PostgreSQLクラスタに「読み取り負荷分散」や「コネクションプーリング」(*2)の機能を提供する仕組みだ。PostgreSQLデータベースは、Kubernetes上で構築することは可能であるものの、読み取り負荷分散やコネクションプーリングの機能は備えていない。その2つの機能を、Kubernetesに対応し、コネクションプーリングの機能や読み取り負荷分散の機能を備えた多機能クラスタ管理ミドルウェア「Pgpool-II」によって実現し、全体のスループットを向上させるのがPgpool-II on Kubernetesの役割であり、最大の特長といえる。
そうしたPgpool-II on Kubernetesの全体構成は、図に示すとおりだ。この図からもわかるとおり、PostgreSQLのクラスタは、プライマリノードで読み取り(参照)、書き込み(更新)の両処理を行い、レプリカノードでは読み取りの処理のみが実行できる構成になっている。
Pgpool-IIはクライアントアプリケーションとPostgreSQLクラスタの間に位置し、PostgreSQLに対するアプリケーションからのクエリを解析し、そのクエリが読み取りであるか書き込みであるかを判断して適切なデータベースノードに自動的に振り分ける。この仕組みによってアプリケーションのソースコードを変更することなく、読み取りの負荷分散が実現される。加えて、Pgpool-IIには自動フェールオーバなど、 PostgreSQLの可用性・耐障害性を運用の手間をかけずに担保する機能も備わっている。
*2:コネクションプーリングとは、データベースへの確立された接続を維持(プーリング)し、再利用を可能にする機能のこと。この機能によってデータベース接続のためのオーバヘッドを減らし、システム全体のスループットが向上する
「YugabyteDBはデータベースそのものをモダナイズしてITシステムのマイクロサービス化を容易にする仕組みですが、Pgpool-II on Kubernetesは、PostgreSQLを使ったシステムのマイクロサービス化や可用性・拡張性・スループットの向上を支えるものです。 PostgreSQLをそのままに、ITシステムの構造をマイクロサービスアーキテクチャへとスムーズに移行させる現実解といえるでしょう」と彭氏は説明する。
さらに彭氏は、Pgpool-II on KubernetesとYugabyteDBを使用する意義について次のようにまとめ、話を締めくくる。
「コンテナ技術を使ったITシステムのマイクロサービス化は、ビジネスの俊敏性を向上させる一手でもあり、今後も多くの企業が、その実現に向けて取り組むはずです。その取り組みを支える技術の選択肢はさまざまですが、コンテナ技術と同じオープンなテクノロジーを活用するのが最良の選択であるというのが当社の考え方です。実際、 YugabyteDBやPgpool-II on Kubernetesを活用すれば、特定ベンダーの独自技術に依存することなく、マイクロサービス化されたシステムの拡張性と可用性を高めていけます。そのベネフィットを少しでも多くの企業に享受してもらうべく、これからもYugabyteDBとPgpool-II on Kubernetesの強化に貢献し、その普及を後押ししていきたいと考えています」
<お問合せ先>SRA OSS合同会社
URL https://www.sraoss.co.jp/
Email sales@sraoss.co.jp
連載バックナンバー
Think ITメルマガ会員登録受付中
全文検索エンジンによるおすすめ記事
- pgpool-IIのインストール方法
- SRA OSS、PostgreSQLの多機能ミドルウェア「pgpool-II」のサポートサービスを開始
- PostgreSQL9.0の安定性と高い可用性を実証 アシストによるPostgreSQL検証セミナーレポート
- pgpoolの可能性
- 主要なPostgreSQLクラスタ
- クラウドデータベース完全ガイド 2023
- レプリケーション&負荷分散!
- 楽天モバイルが認めた、新基準のオープン・ソース分散SQLデータベース「YugabyteDB」〜高可用性、パフォーマンス等、妥協なきプラットフォームの実現
- クラスタリングでPostgreSQLの可用性と信頼性を高める
- 米YugabyteのCTOを務めるKarthik氏が語る、クラウド時代の分散SQLデータベース「YugabyteDB」の使いどころ