読者の皆様へ:お客様のご要望に応じて、重要なものを逃すことなく、ノイズを低減できる一連の機能を開発しました。興味のあるトピックを選択して、電子メールとWeb通知を入手してください。
マイクロサービス用のクエリ言語restQLは、MITライセンスでオープンソースプロジェクトとして利用できるようになった。restQL言語の目的は、複数の並列呼び出しと連鎖呼び出しを含む、RESTfulマイクロサービスへのクライアントサイドアクセスの典型的なシナリオを単純化することである。ラテンアメリカで最大の電子商取引業務を行うB2W社によって開発されたrestQLは、より一般的なデータクエリおよび管理のフレームワークであるFalcorとGraphQLの制限を回避するために作成された。
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
- Editor Review
- Chief Editor Action