Jakub Beneš Staff Engineer at Productboard » jukben.codes » @jukben » AMA later
Slide 6
Agenda » GraphQL and why we have chosen it » GraphQL Federation in nutshell » What we did and how we did it
Slide 7
Who knows GraphQL?
Slide 8
Slide 9
GraphQL in 180 seconds
Slide 10
Query language
Slide 11
Strongly typed » Nullable by default » Default scalars: Int, Float, String, Boolean, ID » Enums, Interfaces, Directives » https://spec.graphql.org/
Slide 12
You get what you ask for
Slide 13
Non-breaking changes
Slide 14
DX
Slide 15
Slide 16
Productboard’s
Reasons
Slide 17
Slide 18
» YouTube
Slide 19
Federated
GraphQL
Slide 20
Slide 21
Slide 22
Apollo Federation » https://www.apollographql.com/docs/federation/ federation-spec » Introduces a few of directives like: @key, @sharable to instruct Gateway how to do query planning.
Slide 23
Query planning
Slide 24
Our
Implementation
Slide 25
Frontend
Slide 26
Backend » https://netflix.github.io/dgs/ built on top of Spring Boot » https://graphql-ruby.org » Server needs to follow Federation Spec and Global ID and Pagination spec
Slide 27
Federation » decided to go with managed Federation by Apollo Studio » schema registry with schema checking
Slide 28
Observability: Service
Slide 29
Observability: APM
Slide 30
Observability: Breaking changes
Slide 31
Morphing aka how to roll it out
Slide 32
The Ring
Slide 33
Slide 34
Fellowship
@huvik @lukas_krecan @balvajs
Slide 35
Problem and Solution proposal
Slide 36
Transparent (over)communication
Slide 37
Make it fun
Slide 38
Slide 39
In numbers » We started in Q4 2021 » First product use-cases early this year » Now we have 8 subgraphs connected » 33 queries, 38 mutations, 150 types » 500 RPM in peak
Slide 40
Recap » Federated GraphQL is good especially if you want to iterate fast in distributed way » It’s easier to run big thing if you name it » Big changes requires patience
Slide 41
Slide 42
Thank you!
Slide 43
Resources »
Pretty Glonky
» Apollo Federation » Relay and Relay’s Global ID spec and Relay’s Pagination spec » DGS » GraphQL Ruby » Production Ready GraphQL