Why GraphQL? - As a product manager if you are thinking why. In one line — GraphQL can Massively Impact Delivery Speed
If all has to summarised in one line for product manager — GraphQL can Massively Impact Delivery 🚀
So to cut the clutter, I will try to highlight major values & challenges in three different lens -
Significant boost to developer experience. The documentation become more of a living document & allows the user to self explore documentation with limited or existing domain knowledge. Onboarding developers to use API’s will be easy. (Shopify is an early adopter which has exposed its public APIs over GraphQL)
“frontend” team takes the ownership. Engineering effort on the Frontend team or client app centric teams. GraphQL replaces the middleware & becomes an access point for all the apps & third party developers.
Free from Domain model understanding. No need to be familiar with the domain models to establish relationships to deliver meaningful data.
No more over-fetching/under-fetching. This is a key value that GraphQL adds to the system. The platform doesn’t need to solve this problem anymore. Example — A storyboard can just have a list of shot ids, the GraphQL query can determine if the shots info is required by the app or not, thus the platform offloads managing fetching data from different resources to the GraphQL layer.
API Onboarding is Slow, any new API introduced needs to be on-boarded to the GraphQL layer, i.e not just configurations but also write some code!
Entry cost is high! There is a quite considerable engineering initiatives involved. It’s directly competing with REST API, clearly the benchmark is REST.
Governance & management (Few solutions are being developed in this area)
Data access is still a blocker — The database can be still in Relational, so doesn’t reap performance benefits* (Best practices can be followed) unless there is a graph database underlying like Neo4J, DGraph, etc.
Security — This is not a solved a problem (Again, if a direct GraphQL layer is used directly over a DB)
Principles on which the GraphQL is evolving (at-least for now)
- Backward compatibility
- Performance is a feature
- Capabilities for new use cases
- Favour no change
- Simplicity > Expressiveness (This is interesting)
- Living Documentation
The principles in my understanding gives a hope for a sustainable spec, the focus in the community is around tooling and building better developer experience. I don’t see any disruptive change can be expected in near future.
Companies involved in the GraphQL Foundation — Airbnb, Apollo, Coursera, Elementl, Facebook, GitHub, Hasura, Prisma, Shopify, and Twitter
So to sum up, if you have a platform delivering to multiple apps with different use cases, GraphQL seems to solve a lot of your problems. Definitely it’s a long term investment for creating a massive impact on delivery of services.
Also it will be interesting to see how the community evolves in this space in near future with increasing adoption in the tech space.