Closed6

【技術選定の裏側:GraphQL編 vol.1】読書ログ

てりーてりー

知りたい事

  • 実務でのGraphQL導入のメリット・デメリット
    • 趣味的にしかGraphQLを触った事がない
  • 導入時の周辺の技術
てりーてりー

Goアプリの作り

  • 管理画面はSPA
  • BFFでGraphQL
    • APIサーバーの役割
  • バックエンドでGo
    • gRPCサーバー
  • データはAPIを通して抽象化した形で他のサービスにも提供している

Image from Gyazo

てりーてりー

フロントエンド

  • TypeScript
  • GraphQLのAPIを叩く為にApollo Client

そもそもGraplQLとは?

クライアントとサーバーの通信の進化

  1. htmlでドキュメントを送る
  2. スマホや他のデバイスが登場し、RESTful APIを通して、どの媒体でもデータを受け取れる形になる
  • RESTは概念である
  1. クエリ言語として統一されたGraphQLが登場

REST と比べたGraphQLのメリット

GraphQLは必要なデータをピンポイントで取得できる。

  • APIを介したデータ量を減らせる
    • RESTは特定のデータだけを取得する形が難しい
      • ユーザー名だけでなく、ユーザーデータ全てを返す場合など
  • バージョン管理がしやすい
    • 修正・削除の際にどのパラメータを使っているのかがRESTでは分かりにくい

参考

apollo clientとは?

GraphQLをシンプルにクライアント側で使えるライブラリ

apollo client のメリット

フロントエンドの状態管理をGraphQLで宣言的に扱える

参考

てりーてりー

↑ここまでは予習

メリット

  • RESTではエラーレスポンスなどAPI全体の基盤まで設計しないといけない
  • GraphQLは型定義ができる為、ドキュメントなどの自動生成が可能
    • API仕様確認のコミュニケーションコストが下がる

デメリット

  • 監視しづらい
    • APIのポイントのみを提供し、ステータスは全て200で返す為、インフラ側の監視ツールでエラーを検知しにくい
    • Sentryで例外キャッチする対策が多く使われている
  • パフォーマンスの監視が難しい
  • フロント側は状態管理が難しい
    • apollo clientとReduまいnなどの併用はベストプラクティスがまだ少ない
てりーてりー

まとめ

監視系の問題が気になるなら、まだRESTが良さそう。
それ以外の場合はGraphQL導入に大きな障害はなし!!

特に「API規模が大きい・複雑」、「UI変更などのフロント周りの要件が多い」などの場合にはおすすめ

このスクラップは2022/03/10にクローズされました