gRPC logo

gRPC

A high performance, open-source universal RPC framework
272
188
+ 1
1

What is gRPC?

gRPC is a modern open source high performance RPC framework that can run in any environment. It can efficiently connect services in and across data centers with pluggable support for load balancing, tracing, health checking...
gRPC is a tool in the Remote Procedure Call (RPC) category of a tech stack.
gRPC is an open source tool with 24.2K GitHub stars and 5.8K GitHub forks. Here’s a link to gRPC's open source repository on GitHub

Who uses gRPC?

Companies
91 companies reportedly use gRPC in their tech stacks, including Slack, 9GAG, and Microsoft.

Developers
168 developers on StackShare have stated that they use gRPC.

gRPC Integrations

Traefik, Cilium, Ambassador, BloomRPC, and Continuous Delivery Service are some of the popular tools that integrate with gRPC. Here's a list of all 8 tools that integrate with gRPC.

Why developers like gRPC?

Here’s a list of reasons why companies and developers use gRPC
Top Reasons
gRPC Reviews

Here are some stack decisions, common use cases and reviews by companies and developers who chose gRPC in their tech stack.

Noah Zoschke
Noah Zoschke
Engineering Manager at Segment · | 28 upvotes · 122.1K views
atSegmentSegment
Go
Go
gRPC
gRPC
Envoy
Envoy
TypeScript
TypeScript
Datadog
Datadog
#Framework
#REST
#Json
#Security
#Reliability
#Observability

We just launched the Segment Config API (try it out for yourself here) — a set of public REST APIs that enable you to manage your Segment configuration. Behind the scenes the Config API is built with Go , GRPC and Envoy.

At Segment, we build new services in Go by default. The language is simple so new team members quickly ramp up on a codebase. The tool chain is fast so developers get immediate feedback when they break code, tests or integrations with other systems. The runtime is fast so it performs great at scale.

For the newest round of APIs we adopted the GRPC service #framework.

The Protocol Buffer service definition language makes it easy to design type-safe and consistent APIs, thanks to ecosystem tools like the Google API Design Guide for API standards, uber/prototool for formatting and linting .protos and lyft/protoc-gen-validate for defining field validations, and grpc-gateway for defining REST mapping.

With a well designed .proto, its easy to generate a Go server interface and a TypeScript client, providing type-safe RPC between languages.

For the API gateway and RPC we adopted the Envoy service proxy.

The internet-facing segmentapis.com endpoint is an Envoy front proxy that rate-limits and authenticates every request. It then transcodes a #REST / #JSON request to an upstream GRPC request. The upstream GRPC servers are running an Envoy sidecar configured for Datadog stats.

The result is API #security , #reliability and consistent #observability through Envoy configuration, not code.

We experimented with Swagger service definitions, but the spec is sprawling and the generated clients and server stubs leave a lot to be desired. GRPC and .proto and the Go implementation feels better designed and implemented. Thanks to the GRPC tooling and ecosystem you can generate Swagger from .protos, but it’s effectively impossible to go the other way.

See more
Omid Farhang
Omid Farhang
Sr. Full Stack Developer · | 5 upvotes · 19.6K views
Angular 2
Angular 2
npm
npm
Webpack
Webpack
TypeScript
TypeScript
gRPC
gRPC
Material Design for Angular
Material Design for Angular

I really enjoy my project when I use Angular 2 and above because I have full control over everything and easy I can make it #SSR and add everything I need using npm and let Webpack to bundle them all, Thanks to TypeScript for making it easy to write minimal and manageable code. It was so easy to integrate gRPC into our project. Since we have been using Material Design for Angular we spend all our time on writing Clean Code and not much time for UI.

See more
StackShare Editors
StackShare Editors
Ruby
Ruby
Go
Go
gRPC
gRPC
Kotlin
Kotlin

As the WeWork footprint continued to expand, in mid-2018 the team began to explore the next generation of identity management to handle the global scale of the business.

The team decided to vet three languages for building microservices: Go, Kotlin, and Ruby. They compared the three by building a component of an identity system in each, and assessing the performance apples-to-apples.

After building out the systems and load testing each one, the team decided to implement the new system in Go for a few reasons. In addition to better performance under heavy loads, Go, according to the team, is a simpler language that will constrain developers to simpler code. Additionally, the development lifecycle is simpler with Go, since “there is little difference between running a service directly on a dev machine, to running it in a container, to running clustered instances of the service.”

In the implementation, they the Go grpc framework to handle various common infrastructure patterns, resulting in “in a clean common server pattern that we can reuse across our microservices.”

See more
Naresh Kancharla
Naresh Kancharla
Staff Engineer at Nutanix · | 3 upvotes · 8.5K views
gRPC
gRPC

I use gRPC because it is based on http/2 and provides advantages when used at scale. With protobuff grpc will be more efficient and easy to integrate. Grpc can give efficient way to talk to server it can open persistent connections and also asynchronous communication between client and server.

See more
StackShare Editors
StackShare Editors
| 2 upvotes · 19.9K views
atUber TechnologiesUber Technologies
Kafka
Kafka
gRPC
gRPC

By mid-2015, Uber’s rider growth coupled with its cadence of releasing new services, like Eats and Freight, was pressuring the infrastructure. To allow the decoupling of consumption from production, and to add an abstraction layer between users, developers, and infrastructure, Uber built Catalyst, a serverless internal service mesh.

Uber decided to build their own severless solution, rather that using something like AWS Lambda, speed for its global production environments as well as introspectability.

See more
StackShare Editors
StackShare Editors
Prometheus
Prometheus
Chef
Chef
Consul
Consul
Memcached
Memcached
Hack
Hack
Swift
Swift
Hadoop
Hadoop
Terraform
Terraform
Airflow
Airflow
Apache Spark
Apache Spark
Kubernetes
Kubernetes
gRPC
gRPC
HHVM (HipHop Virtual Machine)
HHVM (HipHop Virtual Machine)
Presto
Presto
Kotlin
Kotlin
Apache Thrift
Apache Thrift

Since the beginning, Cal Henderson has been the CTO of Slack. Earlier this year, he commented on a Quora question summarizing their current stack.

Apps
  • Web: a mix of JavaScript/ES6 and React.
  • Desktop: And Electron to ship it as a desktop application.
  • Android: a mix of Java and Kotlin.
  • iOS: written in a mix of Objective C and Swift.
Backend
  • The core application and the API written in PHP/Hack that runs on HHVM.
  • The data is stored in MySQL using Vitess.
  • Caching is done using Memcached and MCRouter.
  • The search service takes help from SolrCloud, with various Java services.
  • The messaging system uses WebSockets with many services in Java and Go.
  • Load balancing is done using HAproxy with Consul for configuration.
  • Most services talk to each other over gRPC,
  • Some Thrift and JSON-over-HTTP
  • Voice and video calling service was built in Elixir.
Data warehouse
  • Built using open source tools including Presto, Spark, Airflow, Hadoop and Kafka.
Etc
See more

gRPC's Features

  • Simple service definition
  • Works across languages and platforms
  • Start quickly and scale
  • Works across languages and platforms
  • Bi-directional streaming and integrated auth

gRPC Alternatives & Comparisons

What are some alternatives to gRPC?
GraphQL
GraphQL is a data query language and runtime designed and used at Facebook to request and deliver data to mobile and web apps since 2012.
RabbitMQ
RabbitMQ gives your applications a common platform to send and receive messages, and your messages a safe place to live until received.
Kafka
Kafka is a distributed, partitioned, replicated commit log service. It provides the functionality of a messaging system, but with a unique design.
REST
An architectural style for developing web services. A distributed system framework that uses Web protocols and technologies.
MQTT
It was designed as an extremely lightweight publish/subscribe messaging transport. It is useful for connections with remote locations where a small code footprint is required and/or network bandwidth is at a premium.
See all alternatives

gRPC's Followers
188 developers follow gRPC to keep up with related blogs and decisions.
Evan Wright
Sean Coleman
Yevhen Lebid
Amit Kishore
Quang Nguyen
kishorebhat-p
Yiran Hu
Restu Haqqi Muzakir
Gregory Abbott
Eirik Årdal