マイクロサービス時代に最適なデータベース環境とは何か ─SRA OSSから2つの提案 「YugabyteDB」&「Pgpool-II on Kubernetes」

2023年7月14日(金)
Think IT編集部

はじめに

近年、コンテナなどのクラウドネイティブな技術を使ってビジネスを支える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であるというわけだ。

SRA OSS合同会社 OSS事業本部 技術部基盤技術グループチーフエンジニア兼Pgpool-II開発者 彭 博(Bo Peng)氏

では、そもそもマイクロサービス化、あるいはコンテナ化を巡るデータベースの課題とは何なのだろうか。その課題を彭氏は以下の3点に集約している。

  1. 運用管理を巡る課題:マイクロサービス化(データベースのコンテナ化)によってデータベースの数が増えていくと、バックアップやリカバリなど、可用性を担保するための仕組みが複雑化し、運用管理の手間とコストが増大する。
  2. データの永続化を巡る課題:データをどう処理するかのビジネスロジックを記述しただけのアプリケーションはコンテナ化が容易だが、データベースは「ステートフル」なシステムであり、自らの状態を保持し、その変化にもとづいてリクエスト(クエリ)に対するレスポンスを返さなければならない。そのためデータベースの可用性を担保するだけではなく、「データ永続化」の仕組みもコンテナに実装する必要がある。
  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 on Kubernetesのシステム構成

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

“オープンソース技術の実践活用メディア” をスローガンに、インプレスグループが運営するエンジニアのための技術解説サイト。開発の現場で役立つノウハウ記事を毎日公開しています。

2004年の開設当初からOSS(オープンソースソフトウェア)に着目、近年は特にクラウドを取り巻く技術動向に注力し、ビジネスシーンでOSSを有効活用するための情報発信を続けています。クラウドネイティブ技術に特化したビジネスセミナー「CloudNative Days」や、Think ITと読者、著者の3者をつなぐコミュニティづくりのための勉強会「Think IT+α勉強会」、Web連載記事の書籍化など、Webサイトにとどまらない統合的なメディア展開に挑戦しています。

また、エンジニアの独立・起業、移住など多様化する「働き方」「学び方」「生き方」や「ITで社会課題を解決する」等をテーマに、世の中のさまざまな取り組みにも注目し、解説記事や取材記事も積極的に公開しています。

連載バックナンバー

プロジェクト管理技術解説

失敗しないプロジェクトマネジメントに必要なこと 基礎知識やポイントを解説

2024/1/23
新規事業や新商品開発などで立ち上がるプロジェクトは、プロジェクトマネジメントがしっかりとできていれば成功しやすくなります。この記事ではプロジェクトマネジメントの基本的な知識と、失敗しがちな例をご紹介します。
教育技術解説

ゲームプログラマーを目指すにはどんな準備が必要? パソコンのスペックは? 学ぶべき言語は?

2024/1/17
ゲーム開発には、プログラミング言語などの知識とスキルが求められます。ゲーム作成にあたって初心者が知っておきたいことについて解説するので、参考にしてください。

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています