Shoeisha Technology Media

CodeZine(コードジン)

特集ページ一覧

Oracleデータベースクラウドサービスの3本柱「マルチテナント」「REST API」「開発フレームワーク」の概要

Oracle Database Cloudでいってみよう! ~ モダンな企業向けクラウドアプリを一番かんたん・安全につくる方法 【第1回】

  • ブックマーク
  • LINEで送る
  • このエントリーをはてなブックマークに追加
2015/11/24 14:00

 RDBMSは長年の歴史があり、多くの企業システム、企業向けパッケージでは心臓部として採用されています。今、時流に乗ってこのRDBMSもクラウドサービス化が徐々に進んでいます。Oracle Databaseはソフトウェアそのものにクラウドを強く意識した機能を組み込んでおり、それがクラウドサービスとしてのOracle Databaseを特徴づけています。本稿では、Oracleのクラウド「Oracle Database Cloud」で提供されているデータベースサービスの特徴を説明します。

Oracle Database Cloudの概要

PaaSで提供されるOracle Databaseはクラウドの基本的な恩恵を受け、次のような特性を持っています。

  • インスタンスを作成するとすぐに利用可能
  • スケールアップおよびスケールダウンが可能
  • 従量課金
  • 無料トライアルを提供(こちらのページ右上の[試してみる]ボタンからサインアップできます)

サービスのタイプとしては次の3種類[1]が用意されており、システムの規模や、どのくらいデータベースを自己管理したいかに応じて、適切なものを選択できます。

  • スキーマサービス(Database Schema Serivce)
  • インスタンスサービス(Database as a Service)
  • H/W占有サービス(Exadata Service)

それぞれのサービスの特徴を見ていきましょう。

[1]: カッコ内はhttps://cloud.oracle.com/ja_JP/databaseにある正式なサービス名。

スキーマサービス(Database Schema Service)

「スキーマサービス」はその名のとおり、1つのスキーマが提供されるサービスで、MySQLやPostgreSQLではデータベースに近い要素です。ユーザーは1つのスキーマを自由に利用可能で、バックアップなどのデータベースの管理はすべてクラウドに任せることができます。また、データベースに格納するデータは、デフォルトですべて暗号化されます。

スキーマサービスは、数あるDBaaS(Database as a Service)の中でも、管理の手間が最小レベルになっています。小規模なアプリケーション、またはデータベース管理者をアサインせずアプリケーション開発に集中したいSaaSプロバイダー、パッケージメーカーに向いています。

インスタンスサービス(Database as a Service)

「インスタンスサービス」ではセットアップ済みのOracleインスタンスが提供され、このインスタンスを使って自由にデータベースを作成・設定できます。また、このサービスは、バーチャルマシンのサービス上でOracleデータベースを稼働させるという構成となっており、OSのrootユーザー権限も与えられるため、かなり自由度の高いサービスといえます。データベースに格納するデータは、デフォルトですべて暗号化されます。

また、インスタンスサービスの特筆すべき機能の1つにマルチテナントがあります。例えば、SaaSプロバイダーはこの機能を使うと、アプリケーション側で対応せずとも、自社のデータベースサービスをマルチテナント化(1つのデータベースサービスで複数の顧客環境を安全に提供)することができます。

これまで「パッケージ」という形でサーバーとセットで製品を提供していたメーカーは、顧客からのクラウド化の要望に、バーチャルマシンレベルのクラウドサービスに自社製品をインストールして提供するという、いわば即席クラウド化で対応しているケースがしばしば見受けられます。

従来パッケージを即席クラウド化で対応
従来パッケージを即席クラウド化で対応

このような形態では、ほとんど変更を加えることなく、パッケージをクラウド上で提供できるものの、顧客ごとにインストール作業や、バーチャルマシン、データベースの用意が必要です。そのため、メンテナンス作業やプラットフォーム費用が、パッケージ数に比例して増えていきます。

顧客ごとにインストール作業や、バーチャルマシン、データベースの用意が必要に
顧客ごとにインストール作業や、バーチャルマシン、データベースの用意が必要に

Oracle Database Cloudのマルチテナント機能を利用すれば、1つのデータベースサービスで、完全に分離された複数のデータベースを利用できます。つまり、パッケージを何ら変更せずにクラウド化することができ、かつ管理するのは1つのデータベースサービスで、課金が発生するのも1つのデータベースサービスのみで済みます。

Oracle Database Cloudのマルチテナント機能の強み
Oracle Database Cloudのマルチテナント機能の強み

これまで、100の顧客環境を作るには、100のバーチャルマシンとデータベースが必要でした。Oracle Database Cloudのマルチテナント機能を利用すれば、1つのデータベースサービスですべてまかなえます。試算すれば、コストパフォーマンスが高く、管理性にも優れていることもわかります。

さらに、マルチテナント環境下ではデータベースごとに性能を設定したり、リソースが均等に割り当てられるようにコントロールしたりできます。これにより、ある顧客のデータベースが、別の顧客のデータベースの性能に影響を与えないように制御することができます。

H/W占有サービス(Exadata Service)

「H/W占有サービス」は、データベースマシン[2]としてOracleが販売している「Exadata」をまるごとクラウドで提供するというものです。

H/W占有サービス
H/W占有サービス

H/W(ハードウェア)を占有する形で提供されるため、ユーザーは、オンプレミスと同様の安定したパフォーマンスを享受できます。提供される単位には「1/4ラック」「1/2ラック」「フルラック」の3つがあり、CPUコア[3]を4個単位で追加できます。

くどいようですが、このサービスでも、データベースに格納するデータはデフォルトですべて暗号化されます。

[2]: ハードウェアとソフトウェアの一体型製品。

[3]: 厳密にはOracleが定義するVirtual Core。

コラム「データベースを暗号化することの重要性」

本文で繰り返し、暗号化について言及しましたが、これはセキュリティ事故が致命的な影響をおよぼす企業ユーザーがクラウドを利用するにあたり、Oracleは「データは常に暗号化すべき」と考えているからです。

これまで、暗号化やセキュリティの機能に対して「性能劣化とのトレードオフである」という考え方がありましたが、Oracleは暗号化処理を行うチップを開発し、H/Wに組み込むことによって、暗号化処理による性能劣化の課題を克服しました。これにより、Oracle Cloudではデフォルトでデータを暗号化して保存する仕様にできています。

Oracle Database CloudのREST API

ここまで、各データベースサービスの特徴を個々に説明してきましたが、すべてのデータベースサービスで共通する特徴もあります。それは「データベースサービスにREST APIがバンドルされている」という点です。

HTML5ベースのWebアプリケーションでは、JavaScriptによるAjaxコールが多用されており、それに対応するため、バックエンドはAPIを実装する必要があります。モバイルネイティブアプリケーションでもデータの保存、共有にクラウド側APIは欠かせません。また、クラウドの普及に伴い、オンプレミスとクラウドを連携させるハイブリッド構成や、サードパーティクラウド同士を連携させるようなエコシステムもますます現実的になっています。そうした中で、APIはその連携の屋台骨といえます。

これまで、こうした連携のためのAPIはアプリケーションサーバー上で、PHPやJava、Rubyなどにより実装されてきました。近年ではNode.jsを用いたAPIレイヤーの実装例も増えています。また、APIの作成に特化したクラウドサービスも提供され始めています。

連携のためのAPIはアプリケーションサーバー上に実装されてきた
連携のためのAPIはアプリケーションサーバー上に実装されてきた

ただし、いずれの実装でもデータベースサービスのほかに、APIのために別のクラウドサービスが必要です。

Oracle Database Cloudは、REST APIを標準で提供している点で極めてユニークです。つまり、データベースサービスさえ契約すれば、APIを提供するのに他に何もいらないのです。

Oracle Database CloudはREST APIを標準で提供している
Oracle Database CloudはREST APIを標準で提供している

データベースサービスの管理コンソールには、REST APIを作成するためのツールが含まれています。このツールによってREST APIのURIフォーマットを定義し、データを取得、更新するためのSQLを設定できます。また、認証方式やアクセス権限設定、レスポンスのフォーマット、CORS設定もこのツール上で行えます。

REST APIを作成するためのツール。REST APIのURIフォーマットを定義し、データを取得、更新するためのSQLを設定できる
REST APIを作成するためのツール。REST APIのURIフォーマットを定義し、データを取得、更新するためのSQLを設定できる

この機能を活用することで、Oracle Database Cloudが提供するRDBMSに格納したデータに、API経由でも安全にアクセスできます。繰り返しになりますが、この機能を利用するために必要なのはデータベースサービスのみです。

活用方法は多岐にわたりますが、例えば、現在オンプレミスで運用しているデータベースがあった場合、Oracle Database Cloudに移行するか、あるいは既存システムはそのままでデータをクラウド側にレプリケートするだけで、既存のデータベースを基にしたAPIサービスが提供可能です。また、モバイルアプリケーションのバックエンドとしても利用価値が高いでしょう。

オンプレミスで運用しているデータベースを基にしたAPIサービスを簡単に実現できる
オンプレミスで運用しているデータベースを基にしたAPIサービスを簡単に実現できる

Webアプリケーション開発フレームワークもバンドル

データベースサービスにはもう1つ、バンドルされているものがあります。「Webアプリケーション開発フレームワーク」です。

百聞は一見に如かずということで、こちらのリンクから、サンプルアプリケーションにアクセスしてみてください[4]

データベースサービスにバンドルされているWebアプリケーション開発フレームワークを使ったサンプルアプリケーション
データベースサービスにバンドルされているWebアプリケーション開発フレームワークを使ったサンプルアプリケーション

このアプリケーションには、データベースサービスにバンドルされているWebアプリケーション開発フレームワークが使われているのですが、構築するのにプログラムコードを1行も書いていません。左のサイドバーにあるCustomer(顧客)、Product(製品)、Order(受注)はそれぞれデータベースに存在するテーブルに該当します。テーブル構造と、ユーザーが指定したカラムに応じて自動的にこのような一覧画面、フォームを生成してくれます。

さらに、左サイドバーのReport(レポート)タブを開くと、様々なタイプのグラフを用いたレポートが確認できます。これらが簡単かつ短時間で作成できるのが、このフレームワークの魅力です。社内を見回すと、こういった機能でまかなえる比較的小規模な業務アプリケーションがいろいろとありませんか? それらは、このノンプログラミング開発フレームワークでクラウドアプリ化できます。

また、このアプリケーションはレスポンシブデザインになっています。そのため、ブラウザ幅を縮めると、それに反応してモバイル用のレイアウトに自動的に切り替わります。

このように、データベースサービスにバンドルされているWebアプリケーション開発フレームワークは、単なるおまけ機能ではなく、リッチなWebアプリを構築可能な開発環境なのです。

[4]: こちらのサンプルは読み込み専用としていますので、一部更新系の画面は本来と異なります。

まとめ

Oracleのクラウドでまず特徴的なのは、すべてのサービスでデータを暗号化して保存するという仕様でしょう。これはソフトウェアに加えてハードウェアを自社開発するOracleならではのアプローチといえますが、Oracleは、既存のソフトウェアをそのままクラウドにのせたものをサービスとして提供するのではなく、ハードウェアとソフトウェアをクラウド向けに開発し、サービスとして提供しています。

その際たる例が、本稿で説明の焦点を当てたマルチテナント、REST API、Webアプリケーション開発フレームワークであり、すべての企業ユーザーの関心事であるセキュリティに対して「データは常に暗号化。セキュリティ機能は常にON。」というOracleのアプローチです。

「Oracleクラウドの特徴は?」と問われたときの端的な答えは、ここにあります。

  • ブックマーク
  • LINEで送る
  • このエントリーをはてなブックマークに追加

著者プロフィール

  • 中嶋 一樹(ナカジマ カズキ)

    日本オラクルのエバンジェリスト。Cloud Platformに関するエンジニアリングと啓蒙活動を担当。クラウドのビルディングブロックを使ったモダンなアプリケーションの開発、エコシステムの構築をライフワークにしている。公私ともに何かを開発していることが多い。

All contents copyright © 2005-2019 Shoeisha Co., Ltd. All rights reserved. ver.1.5