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 を提供する上での勘所
モデリングの重要性
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 を使ったアーキテクチャの限界
PostgreSQL
Hasura の場合
通常のスタックへの段階的移行が可能
Hasura は GraphQL API Gateway になる
=> ダイニーさんの例
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