Skip to content

Schema Orchestration #871

@michaelstaib

Description

@michaelstaib

Goals for Version 12:

Schema stitching should be configurable

Our view here is that we want to be able to configure the external schema through an easy to use UI. There should be no need to code. Schemas should be created from their micro-service via simple drag&drop and deployed by clicking a publish button.

Stitching does not mean GraphQL only

We not only want to stitch together GraphQL schemas. We want to be able to consume gRPC, Swagger (REST) and OData as schema sources. They should be treated as if they were GraphQL schemas.

Stitching does not just mean merging two schemas

We think in schema representations. We want to be able to have representations of our data without the need of reshaping our micro-services. The GraphQL sub-services or micro-services should be clean and without considerations of the overall schema. The gateway should be able to completely rewrite how a schema is represented. So, there could be cases where the representation of the inner schemas is completely different to the external representation.

Everything is just GraphQL

You can express your gateway completely with a GraphQL file just like today.

Monitoring

The schema registry will keep track on performance data off all the orchestrated services and will have notification mechanisms so that it is easy to keep track of the health status of the system.

CI/CD

We want to have a change preview API. This basically means that you can push a schema to the schema registry from your build and the schema registry will give you a report that tells you which changes are breaking. This helps you avoid breaking your public apis and build powerful CI/CD pipelines.

Resilience

The gateway will not go down when one server is down. GraphQL is great since it allows to provide errors on resolver basis, this mean that if one server is down not the the whole system is down.

Aliases and Conversions

When configuring a schema, we will have tooling available so that you can merge scalars from different server platforms. Also, you will be able through the UI to add small functions that normalize the scalar output. For instance, a DateTime scalar will not always mean the same thing on every platform, with Hot Chocolate schema orchestration, you will be able to normalize the values and we will apply these converters to your schema data. This makes the external schema predictable and homogenous.

Configuring a gateway should be dead simple.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions