Japan VMUG Jun Meeting @DMM での Aria Hub Free Tier の紹介とデモの後編です。
前回はこちら。
今回の内容です。
GraphQL とは
GraphQL は、スキーマ定義言語(SDL)と呼ばれるクエリ言語です。
あらかじめデータのスキーマを定義しておくことで、オーバーフェッチ(情報を取得しすぎ) / アンダーフェッチ(情報を取得できなすぎ)といった課題を解決するような、柔軟なクエリによるデータ取得がしやすい言語です。
Aria Hub では、Aria Graph と呼ばれるデータベースに情報を格納していますが、そこへの問い合わせでも利用されます。
Aria Graph と GraphQL についての具体的な説明は、下記のブログが参考になります。
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 の話でした。
つづきはこちら。