icare meetup graphql
GraphQL の特徴とアーキテクチャ上の整理
query, schema, resolvers
query が Usecase にあたる
schema が、(RESTでいう) Resource にあたる
類似の概念
Presentation <=> Domain (PDS)
SoE <=> SoR
(?) Consumer <=> Provider
Better Web API (REST/RPC) としての GraphQL
GraphQL API を提供する上での勘所
モデリングの重要性
「GraphQLのスキーマ設計、高度なモデリング能力が必要なのでは???」https://twitter.com/a_suenami/status/1379270185207484417
Web API の実装パターン
1. usecase ベース (画面ごとのendpoint)
2. resource ベース
GraphQL の場合 2 であることが必須
resolvers の実装
実例
Client-side GraphQL
colocation
Service-to-Service GraphQL
BaaS としての GraphQL
BaaS?
正確じゃないかも
流行りの言葉でいえば No Code
Firebase
Firebase, Firestore を使ったアーキテクチャの限界
「青銀行の勘定系をFirebase前提で構築できるか?」 - たなかこういちの開発ノート https://tanakakoichi9230.hatenablog.com/entry/20200129/1580288556
PostgreSQL
Hasura の場合
通常のスタックへの段階的移行が可能
Hasura は GraphQL API Gateway になる
=> ダイニーさんの例
https://note.com/dinii/n/n9be778bd7da3
mutation の 80% は自分で実装している
query は 5% だけ
アーキテクチャ
Hasura => (Backend) => PostgreSQL
CQS 的
GraphQLとアーキテクチャ
Usecase / Resource
fragment colocation
どこの深さのコンポーネントまでcolocationするのか
GraphQL Anti-patterns
GraphQL as BFF
GraphQL with Repository pattern
links
https://qiita.com/yancya/items/4b7979d83cbf6af9b819
https://twitter.com/onk/status/912491093127598080
https://note.com/dinii/n/n9be778bd7da3
https://onk.hatenablog.jp/entry/2020/11/11/02453133
https://note.com/qsona/n/nfc73a8e82dff