The number of of customer touch-points is growing rapidly every day. How do we architect systems of integrations and platforms to enable the co-creation of value and enable the best possible customer experience for our users? In this talk, we will discuss approaches to leverage micro-services and GraphQL to enable the ability to support unlimited customer experiences.
11. Support unlimited and ever
changing customer
experiences with GraphQL
GraphQL Day Toronto
Feb 28, 2019
11
12. Andrew Kumar
Head of Product Development,
Digital Platform @ TELUS
Distinguished Instructor, Product
Management @ General Assembly
Twitter: @kumar
12
13. Bill Li
13
API Developer, Digital Platforms
@ TELUS
Collector of LEGO bricks and
Islay single malts. And write
code sometimes.
Twitter: @billxinli
14. Websites, web apps, mobile apps, tablets,
watches, cars, home, fridge, chatbots, social
media, smart sock, smart everything...
14
15. The number of customer
interfaces is growing yearly.
15
23. Adding new functionalities to existing RESTful APIs
REST API RESTful Endpoint
GET /products/:id
{
"common_1": "...",
"common_2": "...",
"common_3": "...",
"web_1": "...",
"web_2": "...",
"web_3": "...",
"mobile_1": "...",
"mobile_2": "...",
"mobile_3": "...",
"voice_1": "...",
"voice_2": "...",
"voice_3": "..."
}
- Just add it to the existing API?
- Web app doesn’t need all the attributes from the voice or
mobile experience
- API versioning?
- GET /v1/products/:id
- GET /v2/products/:id
- Start to fragment the API to expose multiple endpoints? One for each
user experience?
- GET /products/:id?view=mobile
- GET /products/:id?view=voice
32. Conclusion
32
1. GQL allows arbitrarily selecting data that one needs from the schema, so
nothing extra is returned. This is a small, but still significant reduction in
computation and transfer cost.
a. GQL also allows for querying of arbitrary nested relationships with in any given type.
b. GQL (the spec) itself enables the above, this is not really possible out of the box with
RESTful endpoints. (Unless if you write a ton of custom code.)
2. Finally, the gateway allows for linking between separate GraphQL schema,
thus enabling loading of data in a nested manner via remote schemas.
a. And the usual properties of an API gateway for centralized discovery, orchestration,
caching, tracing, and rate limiting, etc.