vm.gowatana.jp

NEOにほんごVMware(仮)

Aria Hub Free Tier のすすめ。後半:GraphQL 様子見編

Japan VMUG Jun Meeting @DMM での Aria Hub Free Tier の紹介とデモの後編です。

vmug-jp.connpass.com

 

前回はこちら。

 

今回の内容です。

 

GraphQL とは

GraphQL は、スキーマ定義言語(SDL)と呼ばれるクエリ言語です。

あらかじめデータのスキーマを定義しておくことで、オーバーフェッチ(情報を取得しすぎ) / アンダーフェッチ(情報を取得できなすぎ)といった課題を解決するような、柔軟なクエリによるデータ取得がしやすい言語です。

Aria Hub では、Aria Graph と呼ばれるデータベースに情報を格納していますが、そこへの問い合わせでも利用されます。

 

Aria Graph と GraphQL についての具体的な説明は、下記のブログが参考になります。

blogs.vmware.com

 

GraphQL クエリのイメージ

まず、GraphQL のシンプルな例を紹介しておきます。

GraphQL のサーバーでは、取得可能な情報のスキーマがあらかじめ定義されています。そのため、下記のようなクエリで特定の情報だけを取得できます。

たとえば下記の GraphQL クエリでは、Azure 仮想マシンから、5つの情報だけを取得しています。対象の Entity としては、Azure.Compute.VirtualMachine という EntityType の、test-vm-01 という名前の仮想マシンを指定しています。

 

ちなみに AWS インスタンスの情報を取得する場合には、同様の GraphQL クエリで EntityType として AWS.EC2.Instance を指定します。

 

一方の、REST API で仮想マシンの情報を取得するイメージ(別環境にある vCenter Server からですが)も紹介しておきます。

こちらは、特定の情報を取得したいだけの場合であっても、仮想マシン全体の情報を取得することになります。たとえば情報を取得したあとに、最終的な目的となる情報を得るために sed / awk / jq などでデータ加工したあとで、あらためてクエリを実行して情報取得することになったりします。

 

Aria Hub で GraphQL が利用される様子

Aria Hub では、Aria Graph への問い合わせに GraphQL が利用されており、画面遷移やアイコンのクリックでも、内部的に GraphQL クエリが実行されます。

今回は、Aria Hub の Web UI にある検索機能でのクエリ(これは GraphQL のクエリではない)を実行した際の様子を見てみました。

 

Web ブラウザとして利用している Google Chrome のデベロッパー ツールにある「Network」タブで、リクエストの様子を見てみます。

GraphQL クエリでは REST API とは異なり、リクエスト先の URL が1つだけ(問い合わせ対象ごとに変わらない)になっていることがわかります。また、通常の HTTP メソッド(POST)で実行されています。

 

送信されたデータを Payload タブで確認すると、GraphQL によるクエリがそのまま送られていることがわかります。インデントはそのままで、改行は「\n」でエスケープされています。

 

レスポンスとして、取得された情報も確認できます。Aria Hub の Web UI でのアイコン描画に反映されている情報が見られました。

 

GraphQL のペイロードとして送られているデータは JSON 形式だったので、jq コマンドで見やすく整形してみました。queryString として Aria Hub 検索画面のクエリが指定してあったり、variables として変数が指定されていたりといった様子がわかります。GraphQL のクエリ本文は、「"query" :」以降に記載されています。

 

jq コマンドで、さらに GraphQL クエリの本文がある "query" 部分を整形してみます。改行のエスケープが解釈されて GraphQL クエリが読みやすくなりました。

 

手作業での GraphQL 実行

Aria Hub には、Altair という GraphQL クライアントが内蔵されており、「開発者リソース」画面などからアクセスできます。自分で Aria Hub に GraphQL クエリを実行したい場合は、この画面にある「VMware Aria Graph API ドキュメント」などを参考にしつつ、クエリを作って実行することになるはずです。

 

「VMware Aria Graph API ドキュメント」のリンク先では、Aria Graph への問い合わせ方法や、スキーマ定義の情報が紹介されています。

 

Altair という GraphQL クライアントでは、新しいクエリを作成するとデフォルトで VMware Cloud Services の Token を使用した認証のためのクエリ(authMutation)が記載されています。

 

そして GraphQL のクエリが実行できます。具体的な方法は下記をどうぞ。

 

このように、Aria Hub Free Tier では GraphQL のクエリも試してみることができます。

 

まとめ

今回は、Aria Hub / Aria Graph で GraphQL が活用されている様子を見てみました。

GraphQL は、Aria Hub / Aria Graph では内部的に利用されるため、クエリを運用で実際に作成したり、手作業で実行したりするケースは、運用上あまりなそうかなと思います。

ただし、GraphQL クエリの雰囲気を把握しておくと、ロードマップのスクリーンショットや VMware Hads-on Labs のシミュレータなどで紹介されているような、多くの Aria 関連サービスが Aria Hub を介して連携する際のイメージが掴めそうかなと思います。

 

以上、Aria Hub Free Tier の話でした。

つづきはこちら。