Hey Patrick, glad you like the article!
In our experience the main benefits from UPWARD have been:
- Consolidate endpoints into a single one: we usually use 4–5 external APIs so having them all under the same roof removes the overhead of having to keep track of all these services.
- Leverage express benefits without much NodeJS knowledge: we’re still learning about NodeJS in the backend so just having to worry about changing a YAML file instead of setting up and maintaining a whole express server takes a big weight off our shoulders.
- Easier to optimise: this is probably the biggest reason, like you said you could make requests directly to your M2 backend but we found that for PWA standards it is very slow, eg: when getting category products using the GraphQL endpoint we were getting 250–300ms response times, however querying our ES DB directly we got 40–50ms. This makes sense because you’re bypassing the Magento framework, we just setup an endpoint with UPWARD (or any middleware you want) to return products from ES. If we were doing requests directly we would need to try to optimise M2, create a new module, plugins, observers and whatnot to have a chance at getting similar results.
I’m sure that if you wanted to you can optimise it pretty well so you can make requests directly to it (something like Varnish comes to mind), and one of the nice things about UPWARD is that you don’t have to use it in your PWA but for us having a middleware has been very useful.