Oracle Databaseのマルチテナント機能はマイクロサービスにもサーバーレスにも最適
Q:Oracle Databaseは、マイクロサービス化した新しいクラウドネイティブなアプリケーションの開発や運用には向いていないとの話もありますが。
フー氏:それは誤解です。Oracle Databaseはマイクロサービスに最適なデータベースです。他のクラウドベンダーのように、目的ごとにさまざまなデータベースを用意するのは得策ではありません。たとえばAmazon Web Services(AWS)では、シングル・パーパスなデータストアをたくさん用意しており、使いこなすにはユーザーはそれら異なるデータベースを全て扱える必要があるでしょう。また、それぞれのデータストア用に、データもコピーしなければなりません。結果的にデータ基盤のアーキテクチャは複雑になり、さらにリアルタイム性も損なわれます。データの一貫性を保つのも難しくなり、外部からの攻撃ポイントも増えるはずです。データストアがたくさんあれば、それぞれにパッチを当てるのも大変です。
Facebookのような大規模なSNSを自分たち運用できるような企業であれば、そういった複雑なアーキテクチャでも問題ないかもしれません。しかしながら一般の企業ではそうではありません。対してOracleでは、かつての携帯電話やデジタルカメラなどの技術動向から学んでいます。それらの技術は、今は全てスマートフォンに集約されています。つまりスマートフォンは、コンバージド型デバイスになっているからこそこれだけ普及しているのです。
Oracle Databaseもコンバージド型のデータストアです。1つのデータベースで、さまざまなことができます。データタイプが異なっても、データは1つのOracle Databaseに集約されます。集約されているデータを使って分析もできれば、機械学習を使い予測もできます。目的ごとにデータストアを用意する必要はなく、1つのデータストアでさまざまなことができるので、運用管理は容易でデータの一貫性も保たれます。Oracleでは目的ごとに専用のデータベースを持つよりコンバージド型が良いと考えています。これは、調査会社のガートナーなども同じような見解です。
Q:コンバージド型のOracle Databaseでクラウドネイティブなコンテナベースのアプリケーションは、どのようにして構築することになるのでしょうか。
フー氏:Dockerコンテナの中にアプリケーションがあり、Kubernetesがコンテナオーケストレーションする構成は他のクラウドベンダーなどと同じです。この構成では、それぞれのアプリケーションが個別のデータベースにアクセスします。その際にOracle Databaseなら、マルチテナント・データベースの機能を使いマイクロサービスのアプリケーションごとにプラガブルデータベース(PDB)与えます。これはマイクロサービスの分散型アーキテクチャと、1つのデータベースの中でマルチテントの構成が撮れるOracle Databaseの「いいとこ取り」となります。複数のアプリケーションごとに個別のデータベースを持っているように見えますが、管理するのは1つのOracle Databaseで良いのです。
このような使い方をしている事例が既にあります。中国の電力会社では、中国に住む11億人の人たちに安定した電力を供給するために、拡張性と可用性の高いアプリケーション環境が必要でした。アプリケーションの拡張性と可用性はマイクロサービス化で確保し、データベースの可用性はOracle DatabaseのPDBを使ったデータベース・シャーディング技術で担保しているのです。
Q:クラウドネイティブなアプリケーションとしては、サーバーレスも話題です。Oracle Databaseではサーバーレスにはどのように対応するのでしょうか。
フー氏:サーバーレスにも、マイクロサービスと同じマルチテナントのアーキテクチャで対応できます。仮に6つの種類のデータストアがあれば、サーバーレスの仕組みでそれらにアクセスするためには、データストアごとに異なる6種類のAPIを使うことになるでしょう。また利用したいデータが複数のデータストアに跨がっていれば、どこかのデータストアに一旦データを転送し、そのデータストアに合わせ変換する必要もあるかもしれません。マイクロサービスのアプリケーションでも、サーバーレスでの処理でも、たくさんのデータストアがあればデータアクセススのための複雑さは変わらないのです。
また、「エラスティック・スケーリング」と呼ばれるような柔軟な拡張性を実現するために、要求があったときにだけサーバーを立ち上げ処理することもできます。これにはOracle Autonomous Databaseで、既に応えています。たとえば使わない週末は、データベースを落としておくことが可能です。マイクロサービスでもサーバーレスでも、データがストレージにあることには変わりはないのです。