2021年1月8日金曜日

APIによるデータ連携手法の選択。「REST」から「GraphQL」に移るべき人。REST APIとGraphQLのメリット、デメリット。2020年02月10日 05時00分 公開

https://techtarget.itmedia.co.jp/tt/news/2002/10/news04.html#_ga=2.66124014.1551212500.1610093962-1526216262.1607331218
シェアしました。

 「GraphQL」に移るべき人、「REST」を使い続けるべき人を分ける条件

API(アプリケーションプログラミングインタフェース)におけるデータ連携の仕組みとして、従来の「REST」に代わる新たな選択肢が「GraphQL」だ。GraphQLとRESTを比較し、両者のメリットを考える。

[Kerry DoyleTechTarget]

関連キーワード

API | アプリケーション開発

 とどまることのないデータの増加に直面する開発者にとって、データの処理速度を上げる技術は有用だ。クエリ(データ操作)言語「GraphQL」は、API(アプリケーションプログラミングインタフェース)の構築をシンプルにし、データ取得の流れを明確に表現することで、データの迅速な処理を可能にする。

 データ連携のための枠組みを定義したアーキテクチャには他に「REST」(Representational State Transfer)が存在する。以下でGraphQLのメリットや、RESTと比較した場合の強みと弱みを紹介しよう。

GraphQLのメリット

 GraphQLは洗練されたデータ取得プロセスを持つ。取り扱うデータ構造を明確に定義した上で、単一のエンドポイント(APIにアクセスするためのURL)を介してクエリを受け渡すことにより、シンプルなデータ連携を実現する。このことが、RESTの抱えるデータの取得過剰や取得不足といった問題の解決につながる。

 こうしたGraphQLの特徴によって、データ連携に必要なエンドポイントの数を減らせるとともに、必要なデータを一度の呼び出しでまとめて取得できるようになる。加えてGraphQLはデータ交換のために任意の通信プロトコルを利用できるため、HTTP、HTTPS、WebSocket、TCPなど任意のプロトコル経由でのデータ交換ができる。

 RESTと比べた場合のGraphQLの魅力は効率の高さだ。RESTは、複数のサーバにクエリを送った結果、必要なデータが大量の不要なデータに紛れた状態で渡されることがある。この非効率な状態が、リクエストされたデータを全て返すために必要な時間が長くなる原因となる。

RESTが優れている側面も

 パフォーマンス面を比べればGraphQLがRESTを上回るだろう。他方でRESTの方が優れているケースもある。例えばHTTP通信では、一度利用したデータを再利用して処理を高速化するためのキャッシュを、WebブラウザやWebサーバなどが生成する。一般的に1つのクエリが1つのURLに対応するRESTは、キャッシュの仕組みを使用できる。キャッシュはURLごとに生成されるためだ。これに対してGraphQLは、URLではなくパラメータでクエリを定義するため、キャッシュの仕組みを利用できない。

 RESTはHTTPのステータスコードを利用したエラー検出やAPIの監視が可能だが、GraphQLではそうした処理は難しい。加えてAPI経由でSQLクエリを使ってデータベースからデータを取得する際のログ取得も、RESTの方がシンプルだ。

 GraphQLはさまざまなデータソースに対するデータクエリを受け渡す仲介役として機能するため、APIを構築する際の標準仕様として確立されつつある。RESTよりも必要なデータを正確に指定でき、それをクライアントが適切に管理するための仕組みを備える。そうすることで、RESTの「整理されていないデータを返す」問題を解決する。適切な場面を選択してGraphQLを導入することで、代償を最小限に抑えて高いパフォーマンスを得ることができるだろう。


0 コメント:

コメントを投稿