hardDesignConceptMidSeniorStaff
The same domain has to be exposed to a mobile app, a partner integration and internal service-to-service traffic. Where does GraphQL fit, where does gRPC, and where does neither?
7 min readUpdated 2026-08-15
Answer
Short answer
Choose per consumer: GraphQL where many client shapes make over-fetching the problem, gRPC for internal traffic wanting typed generated stubs and streaming, plain JSON over HTTP for partners who want curl and a CDN.
Was this answer helpful?
Likely follow-ups
- How do you stop a single GraphQL query from costing you a minute of database time?
- Two teams own parts of one graph. How do you compose it without one team's deploy blocking the other's?
- What breaks if a protobuf field number is reused after a field is deleted?
- When would you use bidirectional streaming rather than a message broker?
Related questions
- You move an internal service to gRPC behind the same load balancer your REST services use, and one pod ends up serving most of the traffic. What is happening, and what do you change?hardAlso on grpc and streaming6 min
- Two clients open the same record, both edit it, and the second save silently overwrites the first. How would you use ETags to turn that lost update into something the client can see and handle?mediumAlso on api-design4 min
- How do you decide whether a model should be served in batch, online or streaming?mediumAlso on streaming4 min
- How do you design the error contract for an API that other teams have to program against?hardAlso on api-design6 min