CSTool
Mercari API
SQL
Data Fetching
HTTP
Request
Now
Slide 18
Slide 18 text
CSTool
Mercari API
SQL
Data Fetching
HTTP
Request
SELECT
…
FROM
items
JOIN item_x ON ...
JOIN transactions ON …
JOIN users ON ...
Now
Slide 19
Slide 19 text
CSTool
Mercari API
SQL
Data Fetching
HTTP
Request
Future
Item Service
User Service
gRPC
gRPC
Slide 20
Slide 20 text
GraphQL
Slide 21
Slide 21 text
CSTool
DB Service
Data Fetching
HTTP
Request
User Service
Item Service
GraphQL
Service
Mercari API
gRPC
gRPC
gRPC
Future
GraphQL
Slide 22
Slide 22 text
Client Generation
proto repository
client repository
(Go, Python, PHP, etc…)
master
feature
master
feature
Circle CI Circle CI Circle CI
Slide 23
Slide 23 text
CSTool
GraphQL
Service
Service A
Service B
Service C
Service A Client
proto request
proto response
GraphQL Query
on HTTP Request
HTTP Response
Service B Client
Service C Client
GraphQL Service
Slide 24
Slide 24 text
GraphQL Service
● Go + gqlgen を使用
○ SDLでAPIを定義して、Serverコードの自動生成なども可能
● チームのGoに対する学習意欲が高いことや、社内でサポートが
得られやすそうという理由でGoで始めることにした
● CS Toolからのリクエストは簡単&柔軟に行えるようになりそうだ
が、GraphQL由来の新たな課題も出てくる(モニタリング、N+1)