gRPC is defined as a general purpose RPC mechanism that is performant, platform and language agnostic using modern cloud-native based technologies to support a Microservice-based architecture. It is the latest incarnation (December 2020) of Remote Procedure Call (RPC) and was created by Google in 2015 as an Open Source project that is now under the umbrella of Cloud Native Computing Foundation (CNCF). In 2017 it was the sixth project to join the CNCF and as of December 2020 is in incubation status within the CNCF maturity levels.
Despite gRPC only being in incubation status within the CNCF maturity levels, it has been adopted by both large and small organisations in production and should be viewed as a tool to add to your tool-belt. Like REST, SOAP, WebSockets, MOM and plain old HTTP, it is not meant to be a one size fits all (even though its general purpose like most of them are); it should be used where appropriate, for example:
- When a usage is Service rather than Resource orientated - seeing developers trying to make something Resource orientated where they’re really Service/RPC is a good sign gRPC might be a better fit!
- When “well” structured data (that can be defined) is used.
- When streaming is necessary.
- When performance is important.
We strongly recommend using this if your needs match one of the above. If you need more information, please visit the Software AG Technology Radar on gRPC.