「@IT Cloud Native Week 2024冬」の基調講演にNTTデータグループ テクニカルリード 小林隆浩氏が登壇。クラウドネイティブ環境でデータベースを選択する上での基礎知識や現在のトレンドと今後の展望を解説した。
この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。
「@IT Cloud Native Week 2024冬」の基調講演に、NTTデータグループ テクニカルリード 小林隆浩氏が登壇。「今から学ぼう!クラウドネイティブなデータベースの世界」と題して、クラウドネイティブ環境でデータベースを選択する上での基礎知識や、現在のトレンドと今後の展望を解説した。
クラウドネイティブが浸透する中、データベースをクラウドで提供するDBaaS(Database as a Service)の在り方は絶えず変化している。小林氏は「私は普段から『データベースをKubernetesで動かしましょう』という話をします。今日はその辺りの話から始め、データベースのマルチクラウド展開とはどのようなものなのか、今後どうなるのかといった話までたどり着きたい」と切り出した。
小林氏は、「Oracle Database」や「PostgreSQL」を得意としさまざまなプロジェクトで経験を積む一方、データベースや基盤技術に関するコミュニティー、国内外のカンファレンスでの多数の登壇実績を持つエンジニアだ。小林氏はまず自身がSNSで問い掛けたアンケート調査を基に、データベースがどこで使われているか、こう解説した。
「DBaaSの利用率が圧倒的に高い状況です。私も最近データベース移行プロジェクトに携わりましたが、それまで難しいとされてきた基幹システムの大規模なデータベースを、クラウドしかもDBaaSで利用する例が増えています。一方、コンテナやKubernetesでデータベースを動かす例はまだ少ない状況です」(小林氏)
小林氏によると、クラウドネイティブなアプリケーションが増える中で、データベースもそれに追随する動きが進んでいるという。
「クラウドネイティブなデータベースでポイントになるのは、アジリティ、可用性、スケーラビリティです。モノリシックなシステム構成では巨大なデータベースがあり、1〜2個の大きなアプリケーションが接続されるため、巨大なデータベースを守ることが重要です。一方、マイクロサービスの構成では、データベースは小さく分割され、サービスごとに異なる可用性やスケーラビリティが求められます。数が増えれば管理負荷も高くなり、アプリケーションからの要請も増えていきます。そうした要請に応えられる新たなデータベースとして、プラットフォームも含めた運用の新しい在り方に対応するのがクラウドネイティブなデータベースです」(小林氏)
クラウドネイティブでは、コンテナ化されたアプリケーションを「Amazon Web Services」(AWS)や「Google Cloud」「Microsoft Azure」(以下、Azure)やオンプレミス環境などの間で移行できるポータビリティを必然的に備える。それに追随するように、データベース側でもマルチクラウドにおけるポータビリティを確保できるようにする動きがあるという。
データベースにおけるマルチクラウドとポータビリティの動きを解説するに当たって、小林氏は、データベースのプラットフォームの基本事項や、クラウドベンダーのDBaaSの現状を整理した。
データベースが稼働するプラットフォームを見ると、DBMS(データベース管理システム)、コンテナやオーケストレーター、仮想マシン(VM)という複数のレイヤーで構成されている。VMレイヤーには、オンプレミスのベアメタルやVM環境、クラウドのIaaSがある。オーケストレーターにあたるKaaSとして知られているのは「Amazon Elastic Kubernetes Service」「Google Kubernetes Engine」「Azure Kubernetes Service」だ。DBaaSではそうしたレイヤーはユーザーから隠されているが内部に同様の構造を持つ。さらに、DBMSは、PostgreSQLなどがある。
「(データベースの観点から見ると)PostgresSQLが動く環境はVMだったり、クラウドの仮想サーバ(IaaS)だったり、DBaaSだったりするということです。また、コンテナのオーケストレーターツールとして広く普及しているKubernetesでデータベースを動かすこともできます。Kubernetesを自前で構築するのか、クラウドのサービスを使うのかという選択肢があります。マルチクラウドやポータビリティを考える上では、こうしたレイヤーを意識することが重要です」(小林氏)
一方、クラウドベンダーが提供するDBaaSは、主な効果として「データベースの運用を省力化し、アプリケーション開発に集中できること」が挙げられる。オンプレミスでユーザーが対応してきたバックアップやHA(高可用性)、スケール、OS管理、VMやコンテナ管理、ハードウェア管理、ラックや電源管理などをサービスベンダーに任せることができる。
「クラウドベンダーのDBaaSは、PostgreSQLを中心に見ても、多数のサービスが提供されています。AWSは『Amazon RDS for PostgreSQL』と『Amazon Aurora PostgreSQL』を、Azureは『Azure Database for PostgreSQL』と『Azure Cosmos DB for PostgreSQL』を、Google Cloudは『Cloud SQL for PostgreSQL』『AlloyDB for PostgreSQL』『PostgreSQL interface for Spanner』をそれぞれ提供しています。Oracleも『OCI Database with PostgreSQL』を提供しています」(小林氏)
小林氏は、それぞれのDBaaSの特徴や違いを解説した上で、こうまとめた。
「AWSのRDSタイプは小規模から最大で64TBくらいまでのデータベースに対応しています。それをオーバーラップする形でより高い可用性といった特徴を持つAuroraタイプのデータベースや、GoogleのAlloyDBなどがあります。また、Auroraの最大サイズである128TBを超えて拡張可能なハイパースケールなデータベースとして『Amazon Aurora Limitless Database』やAzure CosmosDB、Spannerがあります」(小林氏)
一方、クラウドベンダー以外のデータベースベンダーがDBaaSを提供するケースも増えてきた。サービス開発の流れとしては、PostgreSQLやMySQLが代表的だが、まずOSS(オープンソースソフトウェア)としてDBMSを開発し、その後、データベースとしての機能開発が一段落すると、Kubernetes対応を進め、最終的には開発したデータベースとKubernetes対応機能を使って、マルチクラウド対応のデータベースサービスとして提供する流れだ。
「さまざまな開発者に使ってもらえるようにデータベースサービスをAWSだけでなく、GoogleやAzureなどに展開していきます。ベンダーにとっては、サービスをマルチクラウドに展開することがビジネス上必須で、そのための仕組みをKubernetesが大きく手助けしているというイメージです。手助けする仕組みとしてはKubernetesのOperatorがあります」(小林氏)
データベースベンダーがKubernetes対応を進め、その後マルチクラウドでサービス化する流れの例としては、Crunchy Dataの「Crunchy Bridge」、EDBの「BigAnimal」、Temboの「Tembo Cloud」、Neon社の「Neon」、Yugabyteの「YugabyteDB Managed」、PingCAPの「TiDB Cloud」がある。
「BigAnimalはデータベースサービス内でKubernetesを使っていて、プラットフォームとしてAWS、Google、Azureのマルチクラウドでサービスを展開しています。その他にも、YugabyteDBやTiDBといったNewSQLのマネージドサービスでも内部でKubernetesを使い、同様にクラウド展開しています。Oracleのように、MySQLやOracle DatabaseをKubernetesで動かすためのOperatorの開発も進んでいます。Oracle RAC(Oracle Real Application Clusters)をKubernetesで動かせるようになってきています」(小林氏)
小林氏は、データベースの中でKubernetesを利用している例として、BigAnimalとYugabyteDBを解説した。BigAnimalは、PostgreSQL as a Serviceで、クラウド上でBigAnimalを構成するコントロールプレーンやPostgreSQL自体がKubernetesのコンテナとして稼働している。その際には「Azure Managed Disk」や「Azure Blob Storage」などクラウドベンダーのリソースを使う。また、YugabyteDB Managedは、PostgreSQL v11互換のNewSQLで、コントロールプレーンがKubernetes上で稼働し、データベースのノードはVM上で稼働する。「データプレーンはVM、コントロールプレーンはKubernetes」というのは、データベースベンダーが提供するDBaaSの内部構成パターンの一つになっている。
DBaaSの発展は、ユーザーがDBaaSを選択する際にどのような影響を及ぼすのか。小林氏はまず、データベース観点でのマルチクラウドの考え方について、自社サービスを複数クラウドに展開するマルチクラウドと、複数クラウドを利用しつつクラウド間でデータを同期、障害時にフェイルオーバーするクロスクラウドがあると指摘する。
「マルチクラウドは、ビジネス拡大の時期に自社サービスを広く顧客に使ってもらうために対応しなければならないことがほとんどです。その際に、シングルクラウドとは異なるさまざまな課題が噴出します。クロスクラウドが必要な要件は、ビジネスの継続性です。クラウドの障害でビジネスが止まることは許されないなど高い可用性が求められるケースで採用が検討されます。マルチクラウドよりも技術的な難易度は高くなります」(小林氏)
ここでポイントになるのは、マルチクラウドの採用により、技術的な負債を抱える可能性があることだ。せっかくDBaaSを使って運用を省力化したのに、ビジネス拡大のフェーズでマルチクラウド展開に取り組んだ際に、今までの省力化の取り組みが吹き飛んでしまうという。
「アプリケーション開発者は『PostgreSQLやMySQLが使えれば何でもよい』となりますが、システム運用者にとっては、1つのクラウドで作り込んだIaC(Infrastructure as Code)の仕組みや監視方法、チューニング方法が別のクラウドに行くとやり直しになってしまいます。これがかなりの手間です。IaaS周りの仕組みがクラウド間で共通化されていないことも課題です。クラウドベンダーが提供するDBaaSを使っていると、マルチクラウド展開のタイミングで大きなコストがかかってしまうケースがあるのです。結果としてクラウド間のポータビリティが失われてしまいます」(小林氏)
データベースのポータビリティを高めるポイントは、クラウドベンダー以外のDBaaSを使うことだ。
「Kubernetes上で開発されたDBaaSでは、同じサービスが乗っている状態で、他のクラウドで利用しても同じ機能、同じ使い勝手を提供します。システム運用者は共通の仕組みでデータベースを構築したり、監視したり、チューニングしたりできます。これによって、Dev(開発)とOps(運用)双方の課題が解消され、クラウド間のポータビリティが確保されます。特に海外のSaaS提供者はポータビリティを重視する傾向が強くなっています」(小林氏)
その上で小林氏は、マルチクラウドでのDBaaS構築と運用を支援するツール「Percona Everest」やクロスクラウドの展望、クラウドベンダーによるマルチクラウドDBaaSの取り組みを紹介。最後に次のようにまとめ、講演を締めくくった。
「クラウドベンダーのDBaaSを選択するのが現状では最優先で、その他のDBaaSも百花繚乱(りょうらん)の状況です。今後、マルチクラウドでのサービス展開を考えると、DBaaSにもDevOps両面のポータビリティが求められる時代になっています。今後、DBaaSを選択する際には、『マルチクラウドにおけるポータビリティが保証されるかどうか』という観点を持つことが求められます」(小林氏)
Copyright © ITmedia, Inc. All Rights Reserved.