Slide 1

Slide 1 text

@bogdanned github.com/bogdanned 1 System Design and Architecture @GraphQL

Slide 2

Slide 2 text

@bogdanned github.com/bogdanned 2 –The GraphQL Website “GraphQL is a query language for your API, and a server-side runtime for executing queries by using a type system you define for your data.”

Slide 3

Slide 3 text

@bogdanned github.com/bogdanned GraphQL influences our architecture uniquely, yet it builds on well known design patterns. 3

Slide 4

Slide 4 text

@bogdanned github.com/bogdanned - Api Gateway - Integration Database - Data Federation - Backend for Front End The Usual Suspects

Slide 5

Slide 5 text

@bogdanned github.com/bogdanned API Gateway 5

Slide 6

Slide 6 text

@bogdanned github.com/bogdanned 6 - service client coupling - many round trips - redundant edge functions

Slide 7

Slide 7 text

@bogdanned github.com/bogdanned 7

Slide 8

Slide 8 text

@bogdanned github.com/bogdanned 8 - client specific API - request routing - API composition - unique edge functions

Slide 9

Slide 9 text

@bogdanned github.com/bogdanned 9 - unique point of failure - development bottleneck - rollout strategy

Slide 10

Slide 10 text

@bogdanned github.com/bogdanned The Integrated Database 10

Slide 11

Slide 11 text

@bogdanned github.com/bogdanned 11 - immediate synchronisation - no integration layer - faster rollout

Slide 12

Slide 12 text

@bogdanned github.com/bogdanned 12 - Bounded Context Violation - complexity in development - deep client coupling

Slide 13

Slide 13 text

@bogdanned github.com/bogdanned 13 Which amount?

Slide 14

Slide 14 text

@bogdanned github.com/bogdanned 14 – Martin Fowler, Database Styles 2004 “The resulting links between applications and databases end up being brittle and thus difficult to change.”

Slide 15

Slide 15 text

@bogdanned github.com/bogdanned The Data Federation Pattern 15

Slide 16

Slide 16 text

@bogdanned github.com/bogdanned 16

Slide 17

Slide 17 text

@bogdanned github.com/bogdanned - different heterogeneous data sources - uniform consumer interface - improved governance - unique business domain mapping 17

Slide 18

Slide 18 text

@bogdanned github.com/bogdanned - difficult requirement reconciliation - non trivial merging strategies - need of more generic data structures 18

Slide 19

Slide 19 text

@bogdanned github.com/bogdanned 19 Apollo Federation - separation of concerns - graph orchestration - sophisticated tooling

Slide 20

Slide 20 text

@bogdanned github.com/bogdanned 20 – Phil Calcado, Some thoughts on GraphQL vs. BFF 2019 “ .. it is hard for me to believe that you can combine the needs of many different applications, owned by different teams, with different users and use cases, in a single schema”

Slide 21

Slide 21 text

@bogdanned github.com/bogdanned Backend For Frontend 21

Slide 22

Slide 22 text

@bogdanned github.com/bogdanned 22

Slide 23

Slide 23 text

@bogdanned github.com/bogdanned 23 Thank @you !

Slide 24

Slide 24 text

@bogdanned github.com/bogdanned 24 #discussion