
こんにちは。CData Software Japan の色川です。
CData Virtuality は、CData がお届けするエンタープライズグレードのデータ仮想化プラットフォームです。CData Virtuality によるデータ仮想化は、さまざまなSaaS やアプリケーションに分散して複雑化しているビジネスデータを統合・整理して、誰もがデータの意味を理解し活用できる「セマンティックレイヤー」を提供します。
昨今では多くのビジネスアプリケーションでクラウドサービスが利用されるようになってきていますが、企業のデータ基盤となるVirtuality へ仮想統合したいデータソースの中には、オンプレミスなどのプライベートネットワークで運用されているモノも多いと思います。CData Virtuality では、オンプレミスやIaaS など任意の環境に導入できる「インストールタイプのSelf-hosted」と「CData のフルマネージドサービスとして提供されるVirtuality Cloud」のラインナップを提供していますが、例えば「Virtuality Cloud からオンプレミスにあるデータソースを利用したい場合」や「Self-hosted で導入したVirtuality から支社や支店など異なるネットワークにあるデータソースを利用したい場合」などにおいては、それぞれのプライベートネットワークのファイルウォールを越えてデータ接続・データ統合するためのアプローチが必要です。そのような構成条件の場合に便利なのが、CData Virtuality が提供する「Cloud Agent(クラウドエージェント)」機能です。
この記事では、CData Virtuality からファイアウォールで保護されたプライベートネットワーク上のデータソースを利用したい場合に便利な「Cloud Agent(クラウドエージェント)」についてご紹介します。
Cloud Agent(クラウドエージェント)の概要
CData Virtuality のCloud Agent(クラウドエージェント)は、Virtuality が存在するネットワークとは異なるネットワーク(ファイアウォールで保護されたネットワーク)上にあるデータソースをVirtuality から利用する場合に便利な機能です。
CData Virtuality が提供するCloud Agent パッケージをデータソースと同じネットワークにインストールして起動すると、Cloud Agent はプロパティファイルで指定されたCData Virtuality に対してWebSocket での接続を開始します。その後、CData Virtuality はWebSocket 接続をトンネルとして使用して、プライベートネットワーク内にあるデータソースに接続します。
Cloud Agent では、エージェント自体の設定管理やデータソースごとの設定管理、実際の通信など、用途や目的ごとに複数のWebSocket 接続を利用します。このアーキテクチャにより、仮に1つのWebSocket 接続が何らかの理由で過負荷や切断が発生しても、正常に機能し続ける他の接続には影響しない仕組みになっています。
この記事のシナリオ
この記事では、CData Virtuality Cloud から、Cloud Agent を使ってオンプレミスネットワークにあるSQL Server をデータソースとして利用します。

具体的には、SQL Server 上に構成したNorthwind サンプルデータベースをVirtuality のデータソースとして利用します。

Cloud Agent の導入と構成
それでは、Cloud Agent を使ってオンプレミスネットワークにあるSQL Server をデータソースとして利用するまでの流れを試してみます。
Cloud Agent パッケージのダウンロード
Cloud Agent 機能の有効化(無効化)や、Cloud Agent パッケージのダウンロードは、Preferences の「Connection Configuration」タブで行えます。[Download Package] をクリックすると「CloudAgent.zip」がダウンロードされます。これが「Cloud Agent パッケージ」の本体です。コマンドラインアプリケーションとして提供されます。

API Key の取得
CData Virtuality に接続するために、Cloud Agent は有効なAPI Key を提供する必要があります。なお、Virtuality Cloud から[Download Package] したパッケージ(CloudAgent.zip)内のプロパティファイル(master_configuration.properties)には、接続対象となるVirtuality のURL(dvsaas.ws.url)と、API Key(client.api.key)が構成されていますので、この記事ではそのまま利用します。
なお、Cloud Agent で利用するためのAPI Key は、Virtuality のグローバルオプションを保持するSYSADMIN.OptionValues システムテーブルから取得することができます。詳しくはこちらも参考にしてください。



Cloud Agent プロパティファイル(.properties)の設定
Cloud Agent の振舞いは、Cloud Agent の設定ディレクトリ(デフォルトでは作業ディレクトリ内のconfig ディレクトリ)にあるプロパティファイル(.properties)で指定します。設定ディレクトリにある.properties ファイルがすべて読み込まれます。なお、プロパティファイルの変更は(Cloud Agent を再起動しなくても)一定の間隔で動的に検出されロードされます。
プロパティファイルには、CData Virtuality への接続方法と、Cloud Agent によって中継されるデータソースに関する情報が含まれます。この記事では、Cloud Agent によって中継されるデータソースに関する情報として、datasources ディレクティブを含め、以下のように追記しました。

Cloud Agent の起動
Cloud Agent パッケージには起動用のスクリプトも同梱されています。この記事では、Windows 環境上にSQL Server とCloud Agent パッケージを導入していますので、start.bat でCloud Agent を起動します。起動するとCData Virtuality との間でWebSocket 接続が確立します。

データソースの作成
CData Virtuality 側で、Cloud Agent 経由でアクセスするデータソースを作成します。通常のデータソース作成時においてデータソースのホストやネットワークポートを指定する部分は「cloudAgent=TRUE」ディレクティブに置き換えて指定します。

Cloud Agent のトンネリングは透過的であり、CData Virtuality 側の観点では、あたかもVirtuality と同じホスト(localhost)にあるデータソースインスタンス(この記事ではSQL Server)に接続しているかのように扱います。Cloud Agent のトンネリングについて詳しく知りたい方は、こちらも参考にしてください。
Connections を確認すると、SQL Server をデータソースとした接続が作成されており、メタデータが期待通りに参照できることが確認できます。


Cloud Agent を経由したクエリの実行
Code Editor でクエリを実行してみると、Cloud Agent を経由してオンプレミスにあるSQL Server のデータが扱えることが確認できます。

まとめ
この記事では、CData Virtuality から、ファイアウォールで保護されたプライベートネットワーク上のデータソースを利用したい場合に便利な「Cloud Agent(クラウドエージェント)」についてご紹介しました。
Virtuality のCloud Agent は、Virtuality が存在するネットワークとは異なるネットワーク(ファイアウォールで保護されたネットワーク)上にあるデータソースを利用する場合に便利な機能ですが、とくにフルマネージドサービスであるVirtuality Cloud でのデータ仮想化を検討したい方にとっては利便性の高い機能と言えるかも知れません。
CData Virtuality についてフルマネージドタイプ(SaaS)でのトライアルを希望される方は「無償トライアルへ」からすぐにはじめていただけます。オンプレミス環境などインストールタイプのトライアルを希望される方は「お問い合わせ」よりご連絡ください。
https://jp.cdata.com/virtuality/
製品を試していただく中で何かご不明な点があれば、テクニカルサポートへお気軽にお問い合わせください。
https://jp.cdata.com/support/
この記事では、記事公開時点で最新のCData Virtuality Cloud インスタンスを利用しています。