PRO

Что такое gRPC? Когда выбрать его вместо REST?

gRPC — высокопроизводительный RPC-фреймворк, который обычно использует HTTP/2 для транспорта и Protocol Buffers для контрактов и бинарной сериализации. Его часто выбирают для внутренних service-to-service вызовов, строгих схем и streaming, а REST остаётся удобнее для публичных API, браузеров и простых JSON-интеграций.
Подробный ответ

Что такое gRPC

gRPC строит взаимодействие вокруг удалённых вызовов методов. Контракт описывают в файле .proto, после чего генератор создаёт клиентский и серверный код для нужных языков программирования.

service UserService {
  rpc GetUser(GetUserRequest) returns (UserResponse);
}

message GetUserRequest {
  string user_id = 1;
}

message UserResponse {
  string id = 1;
  string email = 2;
}

Особенности gRPC

  • HTTP/2 multiplexing и долгоживущие соединения;

  • бинарная сериализация Protocol Buffers;

  • строгий контракт и code generation;

  • unary, server streaming, client streaming и bidirectional streaming;

  • поддержка deadlines, metadata и стандартизированных status codes.

Когда выбрать gRPC

  • внутренние вызовы между сервисами с высокой частотой;

  • системы, где важна компактность сообщений и низкая задержка;

  • многозадачные backend-системы на разных языках;

  • сценарии streaming: чат, telemetry, live updates, передача больших потоков;

  • когда важны формальная схема и генерация клиентов.

Когда REST удобнее

  • публичный API для браузеров и внешних разработчиков;

  • простая интеграция через HTTP и JSON;

  • кэширование через стандартные HTTP-механизмы и CDN;

  • сценарии, где удобны URL-ресурсы, curl и широкая экосистема API-инструментов.

Практика

Часто используют оба подхода: внешний REST API или GraphQL gateway для клиентов, а gRPC — между внутренними сервисами. При gRPC нужно отдельно продумать observability, retries, deadlines, load balancing и graceful handling долгоживущих соединений.

Как ответить на собеседовании

gRPC — RPC-фреймворк на HTTP/2 с Protobuf и генерацией типизированных клиентов. Я выбираю его для высокочастотных внутренних вызовов, streaming и строгих межсервисных контрактов. REST удобнее для публичных JSON API и браузерных клиентов. На практике внешний API часто остаётся REST, а внутреннее взаимодействие реализуется через gRPC.

Оцени свой прогресс

Честно оцени своё понимание этого вопроса, чтобы мы могли построить твой учебный трек максимально эффективно.
Читать в блоге