BT

Microservicesクエリ言語であるrestQLがGitHubでリリース

| 作者: Thomas Betts フォローする 53 人のフォロワー , 翻訳者 編集部T フォローする 1 人のフォロワー 投稿日 2018年2月5日. 推定読書時間: 3 分 |

原文(投稿日:2018/01/11)へのリンク

読者の皆様へ:お客様のご要望に応じて、重要なものを逃すことなく、ノイズを低減できる一連の機能を開発しました。興味のあるトピックを選択して、電子メールとWeb通知を入手してください

マイクロサービス用のクエリ言語restQLは、MITライセンスでオープンソースプロジェクトとして利用できるようになった。restQL言語の目的は、複数の並列呼び出しと連鎖呼び出しを含む、RESTfulマイクロサービスへのクライアントサイドアクセスの典型的なシナリオを単純化することである。ラテンアメリカで最大の電子商取引業務を行うB2W社によって開発されたrestQLは、より一般的なデータクエリおよび管理のフレームワークであるFalcorGraphQLの制限を回避するために作成された。

FalcorはJavaScriptクライアントでのみ利用できるが、restQLはHTTP経由でREST呼び出しをサポートするすべてのクライアントで利用できる。これにより、SwiftやJavaで書かれたモバイルアプリで利用できるようになる。現在、GraphQLは成熟したデータクエリ言語であるが、HTTPレスポンスコードやネイティブブラウザのキャッシュなど、RESTfulサービスで利用できるシンプルまたは確立された機能が提供されていない。

他のクエリ言語と同様に、restQLステートメントには、取得するリソースを記述し、リソースはパラメータによって絞り込まれる。例えば、下記の通りである。

	from hero
	    with
        name = "Restman"

デフォルトでは、クエリは特別な構文なしで並行に実行される。より複雑な連鎖呼び出し、または多重コール(以下の例)などの一般的なシナリオも容易に実行できる。

	from hero
	    with
	        name = "Restman"
	
	from sidekick
	    with
	        hero = hero.id

restQLクエリの解析と応答は、restQLサーバによって処理される。Clojureに実装されたサーバは、restQLクエリを送信するクライアントとバックエンドAPIの間のブリッジとして機能する。リソース名と、それに対応する呼び出しエンドポイントとをペアにするため、サーバには設定情報のみ保持される。restQLサーバーは標準のRESTエンドポイントを公開しているため、特別なクライアントは必要ない。

restQLを発表したブログ記事で、B2W DigitalのITマネージャーであり、restQLの作者の1人であるRicardo Mayerhofer氏は、同社のマイクロサービスの移行中にプロジェクトが始まったと語った。開発チームはマイクロサービスへの移行により、すぐに利益を得た。移行により、サポートするアプリケーションが少なくなり、それに応じてメンテナンスもより容易になった。しかし、フロントエンドコードは複雑になり、古いモノリスへの単一の大きな呼び出しではなく、複数のマイクロサービスへの呼び出しを調整する必要がある。Ricardo氏は、自身の経験をまとめ、次のように述べている。「マイクロサービスベースのアーキテクチャは万能薬ではありません。サービスチームにとってすぐに利益があるにもかかわらず、その性質上、利用者にとって複雑さとパフォーマンスの面で課題があります。」FalcorとGraphQLを検討した後、restQLが開発され、多数のバックエンドサービスへのクライアントアクセスを容易化するのに有益であることが証明された。

restQLの詳細は、プロジェクトのホームページ http://restql.b2w.io/ で参照できる。ソースコードはGitHubで入手できる。

 
 

Rate this Article

Adoption Stage
Style
 
 

この記事に星をつける

おすすめ度
スタイル

こんにちは

コメントするには InfoQアカウントの登録 または が必要です。InfoQ に登録するとさまざまなことができます。

アカウント登録をしてInfoQをお楽しみください。

あなたの意見をお聞かせください。

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする
コミュニティコメント

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

ディスカッション
BT