Gago Frigerio
Gago Frigerio
Talk Title
Taming schemas at scale: A modular approach to GraphQL
Talk Abstract
As the size of your schema grows you start to ask yourself some common questions. Who owns what parts of the schema? How do you share common functionality across the graph? Modules to the rescue! We have answered these questions and more with a modular approach to GraphQL - come and see how!
Talk Description
To get the most out of GraphQL, most organizations end up exposing a single graph that provides a unified interface for querying all of your backing data. As your graph grows, however, it can become inefficient or even difficult to represent the graph without running into organizational problems such as schema management and ownership across the organization. To remedy this, you can divide your schema into modules that are composable, portable, and reusable, all while retaining clear and strong ownership within the graph. How does this actually work? Modules are stand-alone sections of the graph that are designed to be composed together. This gives us the flexibility to fully decouple the parts of the graph that the organization cares about (Who owns this type? Who owns this resolver? How do we share common functionality? ) from the construction of the graph itself. An extra added benefit is that modules let you prepare for federation without the operational overhead. We have built a brand new GraphQL stack using a modular approach with the intent to optimize for developer experience, ownership, and schema design. Using a combination of open-source tools such as graphql-code-generator, graphql-modules, along with some of our own custom tooling, we have been able to construct modules that are both fully isolated as well as easily composable. This approach has been invaluable in growing our graph and will likely be helpful for you too!
ABOUT Gago Frigerio
I’m from Argentina and I work on the Developer Experience team at Coursera. I love dogs more than I love humans, playing pool and drinking dark beer.
Bengaluru, Karnataka