5 ms·
I am a big fan WunderGraph and I think it's a very promising project. Some solid design choices. What I like: - customization in TypeScript but running the co
by morbicer 4y ago
I am a big fan WunderGraph and I think it's a very promising project. Some solid design choices.
What I like:
- customization in TypeScript but running the core gateway in Go for performance
- nicely typed auto-generated clients
- cross-API joins to compose APIs
- their approach of using GraphQL as schema language but not exposing it to clients https://wundergraph.com/blog/graphql_is_not_meant_to_be_exposed_over_the_internet https://wundergraph.com/blog/graphql_is_not_meant_to_be_expo...
However, the project is still very fresh and not mature. Their current OpenAPI spec introspection is severely lacking on "real world" oas and many of the response structures won't parse properly and fallback to generic JSON.
Related to this the docs are sparse so I was unable to find how one can customize/extend/override the auto-generated schemas.
But they are actively working on it so I believe they will solve this.
Sadly I need something right now and GraphQL Mesh offers very similar capabilities with much more mature OpenAPI parser which can even handle upcoming @oneOf tagged unions.
https://the-guild.dev/graphql/envelop/docs/guides/using-graphql-features-from-the-future#oneof-input-objects-and-oneof-fields https://the-guild.dev/graphql/envelop/docs/guides/using-grap...
GraphQL Mesh seems more operational ready with ready-to-use OpenTelemetry and Prometheus plugins. And it can be deployed easily to serverless.
I really like WunderGraph approach and architecture so I hope I can pick it for a future project.
- jensneuse 4y agoBtw, we've adopted the OpenAPI parser from Mesh. The latest version allows you to use it already. Open Telemetry is almost done, will probably be released tomorrow. What else are you missing?
- morbicer 4y agoNice! You guys are crazy productive and responsive! What I like from Mesh is also some "tidying" utilities like renaming transforms https://the-guild.dev/graphql/mesh/docs/transforms/rename https://the-guild.dev/graphql/mesh/docs/transforms/rename I guess some error masking/customization can be done with your hooks but I haven't played with it yet. When .wundergraph/generated/wundergraph.schema.graphql is getting generated and there are some errors it can be harder to debug this (or I don't know how to do it properly) so I resorted to putting console.logs to places like node_modules/graphql/language/lexer.js Rate limiting per user can be nice, but not that important, I can live with broader limiting on ingress level.
- jensneuse 4y agoI'd suggest you join our discord if you haven't done yet. https://WunderGraph.com/discord https://WunderGraph.com/discord Id you're open to it, please book a meeting with me after next week, I'm on vacation, and we'll discuss what's missing for you and we'll make it work if it makes sense. https://WunderGraph.com/meet/jensneuse https://WunderGraph.com/meet/jensneuse
- morbicer 4y agoThanks Jens, I will get in touch.
- therpeterson 4y agoWe did run into that in v0.8 and just submitted a patch to resolve what was causing our issues in one case, in another - we just download Open API spec and edited out offending complexity. For more context, our deciding factor was that mesh and other tools that look the same didn't come with the things like Automatic Retry and pre/post hooks that run in an efficient way as they do with WunderGraph. We decided that the small up-from cost of cleaning up a OpenAPI spec from a static config was worth the stability and flexibility we got from using WG. When you say serverless, do you mean running as a Cloud Function? With WunderGraph cloud you can deploy it as serverless, just as an FYI. We deployed serverlessly in our own IaC setup but cloud wasn't out yet.
- morbicer 4y agoManually cleaning specs is something I would like to avoid, our oas are generated from code so they would have to be re-cleaned after every endpoint addition/change. Great to hear reasons why you picked WG over Mesh, there's not many resources online that compares these next-gen gateways. Yes by serverless I mean AWS Lambdas, Cloudflare Workers etc. I am leaning towards deploying in k8s where rest of the stack is but it's nice to have the flexibility.
- therpeterson 4y ago
- therpeterson 4y agoWG is operational ready and I would consider it mature - we've used in production for an app with 6M MAU and that was before the 1.0 release. Maturity isn't a time based thing - look at Apollo tooling - it's old, but has always been garbage in/out and has never delivered on it's promises.
- morbicer 4y agoI guess depends what your sources are. If it's other GQLs or DBs it can work well. For me the important usecase is OpenAPIs and there the introspection hasn't stabilized yet.