10. UI Application
To manage the data in
the platform.
UI Application
To manage the data in
the platform.
11. UI Application
To manage the data in
the platform.
UI Application
To manage the data in
the platform.
● Powered by React
● Designed to be User Friendly
● Focus on Enterprise Features
27. What if we would build it with REST?
● Build a new endpoint with the extra fields
28. What if we would build it with REST?
● Build a new endpoint with the extra fields
Increase maintenance
29. What if we would build it with REST?
● Build a new endpoint with the extra fields
Increase maintenance
It’s a public API, but just for one case
30. What if we would build it with REST?
● Build a new endpoint with the extra fields
Increase maintenance
It’s a public API, but just for one case
● Add the extra fields to the existing endpoint
31. What if we would build it with REST?
● Build a new endpoint with the extra fields
Increase maintenance
It’s a public API, but just for one case
● Add the extra fields to the existing endpoint
Possibly a huge performance hit
32. What if we would build it with REST?
● Build a new endpoint with the extra fields
Increase maintenance
It’s a public API, but just for one case
● Add the extra fields to the existing endpoint
Possibly a huge performance hit
There were not enough use cases to justify a change in the API
35. With GraphQL
● Easy to extend the schema
● Does not affect maintainability (only 1 API / endpoint)
36. With GraphQL
● Easy to extend the schema
● Does not affect maintainability (only 1 API / endpoint)
● Performance hit on a field level, only when requested
45. Problems
● Data was not normalized
● > 50% of the data was never used
● Complicated business logic, hard to follow and understand
46. Problems
● Data was not normalized
● > 50% of the data was never used
● Complicated business logic, hard to follow and understand
● We had some crucial bugs related to that logic
51. Technical Requirements for the Refactoring
● Reduce the number of network requests to one when bootstrapping the application
52. Technical Requirements for the Refactoring
● Reduce the number of network requests to one when bootstrapping the application
● The client should only get the data that is asking for
53. Technical Requirements for the Refactoring
● Reduce the number of network requests to one when bootstrapping the application
● The client should only get the data that is asking for
● Reduce the complexity of the business logic
54. Technical Requirements for the Refactoring
● Reduce the number of network requests to one when bootstrapping the application
● The client should only get the data that is asking for
● Reduce the complexity of the business logic
● Have normalized data + caching
55. Technical Requirements for the Refactoring
● Reduce the number of network requests to one when bootstrapping the application
● The client should only get the data that is asking for
● Reduce the complexity of the business logic
● Have normalized data + caching
● Being able to easily extend the model / schema
56. Technical Requirements for the Refactoring
● Reduce the number of network requests to one when bootstrapping the application
● The client should only get the data that is asking for
● Reduce the complexity of the business logic
● Have normalized data + caching
● Being able to easily extend the model / schema
● Make it easier to gather metrics
63. Technical Requirements for the Refactoring
● Reduce the number of network requests to one when bootstrapping the application
● The client should only get the data that is asking for
● Reduce the complexity of the business logic
● Have normalized data + caching
● Being able to easily extend the model / schema
● Make it easier to gather metrics
64. Technical Requirements for the Refactoring
✅ Reduce the number of network requests to one when bootstrapping the application
● The client should only get the data that is asking for
● Reduce the complexity of the business logic
● Have normalized data + caching
● Being able to easily extend the model / schema
● Make it easier to gather metrics
65. Technical Requirements for the Refactoring
✅ Reduce the number of network requests to one when bootstrapping the application
✅ The client should only get the data that is asking for
● Reduce the complexity of the business logic
● Have normalized data + caching
● Being able to easily extend the model / schema
● Make it easier to gather metrics
66. Technical Requirements for the Refactoring
✅ Reduce the number of network requests to one when bootstrapping the application
✅ The client should only get the data that is asking for
✅ Reduce the complexity of the business logic
● Have normalized data + caching
● Being able to easily extend the model / schema
● Make it easier to gather metrics
67. Technical Requirements for the Refactoring
✅ Reduce the number of network requests to one when bootstrapping the application
✅ The client should only get the data that is asking for
✅ Reduce the complexity of the business logic
✅ Have normalized data + caching
● Being able to easily extend the model / schema
● Make it easier to gather metrics
68. Technical Requirements for the Refactoring
✅ Reduce the number of network requests to one when bootstrapping the application
✅ The client should only get the data that is asking for
✅ Reduce the complexity of the business logic
✅ Have normalized data + caching
✅ Being able to easily extend the model / schema
● Make it easier to gather metrics
69. Technical Requirements for the Refactoring
✅ Reduce the number of network requests to one when bootstrapping the application
✅ The client should only get the data that is asking for
✅ Reduce the complexity of the business logic
✅ Have normalized data + caching
✅ Being able to easily extend the model / schema
✅ Make it easier to gather metrics
79. Our Learnings
● Incrementally adopt GraphQL to
your existing API
● Incrementally adopt tools like Apollo
/ Relay next to your code, to reduce
boilerplate code and complexity
80. Our Learnings
● Incrementally adopt GraphQL to
your existing API
● Incrementally adopt tools like Apollo
/ Relay next to your code, to reduce
boilerplate code and complexity
● GraphQL allows to easily extend
your API with small effort
81. Our Learnings
● Incrementally adopt GraphQL to
your existing API
● Incrementally adopt tools like Apollo
/ Relay next to your code, to reduce
boilerplate code and complexity
● GraphQL allows to easily extend
your API with small effort
● Performance hits are on a field level,
only when requested
82. Our Learnings
● Incrementally adopt GraphQL to
your existing API
● Incrementally adopt tools like Apollo
/ Relay next to your code, to reduce
boilerplate code and complexity
● GraphQL allows to easily extend
your API with small effort
● Performance hits are on a field level,
only when requested
● Easy to identify bottlenecks on
specific fields and to optimize those