- Status: proposed
- Date: 2022-10-12
Technical Story:
How to stitch multiple graphql/rest/grpc services into one graphql schema?
- Hostibility: how can it be hosted?
- DX: how is the experience for developers using the system
- Hackability: how easy is it to extend and/or fix the system?
- Support, or how is community or paid support, documentation, development resources
- Performance: how fast does it perform?
- Security: how secure is the system?
- AWS AppSync link
- Apollo Federation Gateway link
- Mercurius in gatewway mode link
- Hasura GraphQL Engine remote schemas link
- Apollo Router link
- Good, is offered as part of the AWS platform, comes with AWS CDK support
- Bad, DX is not smooth since it does not offer federation out of the box, federation needs to be implemented manually through resolvers. Red flag: there is an outstanding issue involving missing resolvers with CDK updates [link](https://github.com/aws/aws-cdk/issues/13269}
- Bad, underlying tech is not open source, which makes it harder to understand what is going on under the hood
- Good, support through AWS is available, documentation is ok but not great, seems like commmunity adoption is not visible.
- Neutral, performance: could not find hard data on performance, only anecdotal evidence that it is not great. link
- Good, security: it is offered as part of the AWS platform, which means it is secure by default, it does support OIDC and Cognito. Custom auth is possible through lambdas
- Bad, need to host it ourselves, which means we need to maintain it
- Good DX, however, it is not as smooth as it could be, since it requires a lot of boilerplate code to be written
- Good hackability, since it is open source, it is easy to extend and fix
- Good support, both community and commercial support is available, documentation is good, development resources are available
- Neutral performance, could be better. Needs benchmarking
- Good security, given that you can build your own auth layer
[example | description | pointer to more information | …]
- Good, because [argument a]
- Good, because [argument b]
- Bad, because [argument c]
- …
- [Link type] [Link to ADR]
- …