Upgrade to Pro — share decks privately, control downloads, hide ads and more …

最近話題のGraphQLサーバー、Hasuraを半年使ってみて

Shoki Hata
December 11, 2021

 最近話題のGraphQLサーバー、Hasuraを半年使ってみて

誤表記:
・誤:「時期バージョン(v1.1.0)」
・正:「時期バージョン(v2.1.0)」

Shoki Hata

December 11, 2021
Tweet

More Decks by Shoki Hata

Other Decks in Programming

Transcript

  1. 0 2021/12/10 Toyama.rb #70 Shoki Hata(@sho-hata) 最近話題のGraphQLサーバー、 Hasuraを半年使ってみて

  2. 1   © 2020 Ateam Inc.                     自己紹介 Shoki

    Hata バックエンドエンジニア @株式会社エイチーム引越し侍    sho_hata_    sho-hata 業務では主にGo、たまにTypeScriptでも 書いています。 2020新卒として株式会社エイチームに入社、 それまでは教員養成系の大学院にいました
  3. 2   © 2021 Ateam Inc.                     2 今日はGraphQLサーバー、Hasuraについて

  4. 3   © 2021 Ateam Inc.                     3 新サービスの開発&プライベートで

    半年間使用した経験を踏まえて、 簡単にまとめてみました
  5. 4   © 2020 Ateam Inc.                     話すこと •

    Hasuraの概要 • 携わった新サービス開発での使われ方 • 実際に使ってみて ◦ メリット ◦ デメリット
  6. 5   © 2021 Ateam Inc.                     5 新サービスをリリースしました🎉

  7. 6   © 2021 Ateam Inc.                     6 新サービスの技術構成

    • フロントエンド ◦ Next.js • バックエンド ◦ Hasura(GraphQL) ◦ Go(REST) • 認証 ◦ Firebase 今回の内容!
  8. 7   © 2021 Ateam Inc.                     7 新サービスの技術選定

    - 󰢧早くリリースしたい! - 󰱢フロントエンドのユースケースに合わせた 柔軟なAPIがほしい! - 󰠀新サービスはログイン機能があるから、 データ操作はよりセキュアにしたいな!
  9. 8   © 2021 Ateam Inc.                     8 Hasuraが全部やってくれた

  10. 9   © 2021 Ateam Inc.                     9 Hasura

    GraphQL Engine セキュアで高性能なAPIを迅速に 構築できるGraphQLサーバー Hasuraとは?
  11. 10   © 2021 Ateam Inc.                     10 メリットその1

    工数ゼロで、GraphQL APIが作成可能
  12. 11   © 2021 Ateam Inc.                     11 テーブル設計さえすれば自動で

    リゾルバを生成してくれる!
  13. 12   © 2021 Ateam Inc.                     12 メリットその2

    組み込みで実装されている認証・認可機能が強力
  14. 13   © 2021 Ateam Inc.                     13 JWT・Webhookを使用した認証認可が

    手軽に導入可能 https://hasura.io/docs/latest/graphql/core/auth/authentication/jwt.html#auth-jwt
  15. 14   © 2021 Ateam Inc.                     14 JWTを使用したカラムベースの細かな

    CRUD操作制限
  16. 15   © 2021 Ateam Inc.                     15 メリットその3

    拡張性が高い
  17. 16   © 2021 Ateam Inc.                     16 ビジネスロジックは外部REST/GraphQL

    APIで 拡張可能 https://hasura.io/docs/latest/graphql/core/actions/index.html#actions
  18. 17   © 2020 Ateam Inc.                     新サービスにHasuraを本番導入した今、技術選定を振り返ると... -

    󰢧早くリリースしたい! → 基本的なリゾルバは工数0で実現! - 󰱢フロントエンドのユースケースに合わせた柔軟なAPIがほしい! → 状況に応じて、外部REST/GraphQL APIで拡張! - 󰠀ログイン機能があるからデータ操作はよりセキュアにしたいな! → JWTベースの認証/認可、カラムベースのCRUD操作で制限!
  19. 18   © 2021 Ateam Inc.                     18 ただ、デメリットやつらみもちらほら...

  20. 19   © 2021 Ateam Inc.                     19 基本的なCRUD操作

    < ビジネスロジック になってくると、Hasuraのうまみが少なくなってくる
  21. 20   © 2021 Ateam Inc.                     20 Hasuraと接続する外部REST/GraphQL

    APIにかかる制限が多い
  22. 21   © 2021 Ateam Inc.                     21 -

    接続先エンドポイントはPOSTにする必要がある - Webhookで外部APIと通信するため - 時期バージョン(v1.1.0)で解決予定 - 接続APIのレスポンスをフラットにする必要がある - ネストしたレスポンスの型をGraphQLスキーマに変換できない 接続先APIにかかる制限の例
  23. 22   © 2021 Ateam Inc.                     22 -

    総合して、Hasuraは高性能かつ多機能なGraqhQLサーバー - 個人開発、小〜中規模のサービスでは絶大な恩恵を受けられる - 比重が極端に CRUD < ビジネスロジックだとメリットは薄い まとめ
  24. 23   © 2020 Ateam Inc.                     もっと踏み込んだ内容については、以下にまとめています Qiita記事

    - 引越し業界初の新サービスを支えるバックエンドの技術 - https://qiita.com/sho-hata/items/054c77392cc61bc2f3ac - 多機能なGraphQLサーバー: Hasura GraphQL Engineを知っておき たい人が読む記事 - https://qiita.com/sho-hata/items/2dbd41be42662007071e
  25. 24 「みんなで幸せになれる会社にすること」 「今から100年続く会社にすること」