← All open source projects

gRPC

grpc/grpc

gRPC is a high-performance RPC framework for connecting client and server applications with contracts, code generation, and multiple languages.

Forks 11,167
Author grpc
Language C++
License Apache-2.0
Synced 2026-06-27

What it is

gRPC is a modern RPC framework for communication between client and server applications. It helps describe services as strict contracts.

The project grew from the need to build distributed systems where services and languages communicate quickly, predictably, and with clear message types.

The main idea is to describe methods and messages in a contract, then generate client and server code for the needed languages.

How the project is built

Inside the repository are the C++ core, language bindings and implementations, and documentation for usage, development, performance, and concepts.

gRPC is usually associated with Protocol Buffers, HTTP/2, streaming, strict message schemas, and service contracts between teams.

How people use it

A normal scenario is to write a proto file, generate code, implement the server, and call methods as if they were normal functions.

In microservice architecture, gRPC is useful where speed, contracts, bidirectional streams, or a multilingual environment matter.

Practical example

A service contract

This example shows the central gRPC idea: a contract is described first, and client and server code is built around it.

Language: Plain text
service Greeter {
  rpc SayHello (HelloRequest) returns (HelloReply);
}

message HelloRequest { string name = 1; }
message HelloReply { string message = 1; }

The project’s strength is a clear boundary between services. The contract becomes something to discuss, version, and generate from.

Strengths

Another advantage is performance and streaming support, which is why gRPC is often chosen for internal service communication.

The limitation is that gRPC adds infrastructure complexity. Teams must understand generation, contract versions, compatibility, and network diagnostics.

Limitations

It is also not always convenient for public browser APIs, where regular HTTP/JSON can be simpler for external users and tools.

gRPC best fits systems where services belong to one organization or close teams that can agree on contracts.

Who it fits

For a small app with one server, it may be unnecessary if normal HTTP routes solve the problem calmly.

In the catalog, gRPC matters as a foundational infrastructure project: it shows how open source shapes service communication.

A practical start is to design a small contract and test schema changes first, then move critical internal connections to gRPC.

In a real service landscape, gRPC often wins where a team wants to see the contract before the implementation. Methods, messages, errors, and version compatibility are discussed first, and code follows. This disciplines integrations: client and server do not agree implicitly through accidental JSON, but rely on a formal schema that can be generated and checked.