They created GraphQL because they had to work within the constrains of the architectural cross cutting concern created by the API Patter as created in the 1970’s for centralized architectures… not distributed architectures. One can easily tell as communication bindings are BOUND to the applications business logic through annotations at the controller/method:
(ie @RequestMapping(value = "/person/list", method = RequestMethod.GET))
As a result, a REDIRECT for every GRAPHQL endpoint request:
- drops a thread
- goes outside the DMZ and comes back in through the proxy
- issues a new request/response
- creates a new thread
This is for EVERY ENDPOINT!
As Facebooks newsfeed is STATIC, limited and repeatable, it is fairly obvious that it is proxied and cached. But GraphQL presented a way to do multiple api calls at once using the old API Pattern without solving the cross cutting concern.
HOWEVER… if you solve the cross cutting concern, you get a new api pattern and can do what GraphQL does in a SINGLE QUERY .
I have advised Apple, Netflix, VMWare and Amazon on this.