gRPC deep на собеседовании системного аналитика

Готовься к собесу аналитика как в Duolingo
10 минут в день — SQL, Python, A/B, метрики. 1700+ вопросов в Telegram
Открыть Карьерник в Telegram

Карьерник — Duolingo для аналитиков: 10 минут в день тренируй SQL, Python, A/B, статистику, метрики и ещё 3 темы собеса. 1500+ вопросов в Telegram-боте. Бесплатно.

Зачем спрашивают на собесе SA

gRPC — стандарт для micro-services internal. На собесе SA: «отличие от REST», «зачем Protobuf».

Что такое gRPC

Google Remote Procedure Call. Framework для inter-service communication.

Client ──[Protobuf payload over HTTP/2]──→ Server

Свойства:

  • IDL — Protocol Buffers.
  • Generated code из proto file.
  • HTTP/2 transport.
  • Streaming support.
  • Multilang.

Protocol Buffers

Schema language для messages.

syntax = "proto3";

service UserService {
  rpc GetUser (GetUserRequest) returns (User);
  rpc CreateUser (CreateUserRequest) returns (User);
}

message User {
  int64 id = 1;
  string name = 2;
  string email = 3;
}

message GetUserRequest {
  int64 id = 1;
}

protoc генерит client / server stubs для Python, Java, Go, etc.

Преимущества vs JSON:

  • Compact binary.
  • Schema-first → typed code.
  • Backward / forward compatibility встроены.
  • Faster encoding / decoding.

HTTP/2 transport

gRPC requires HTTP/2 (REST works on HTTP/1.1).

Преимущества HTTP/2:

  • Multiplexing — multiple requests on one connection.
  • Header compression.
  • Binary protocol — efficient.
  • Server push.
Готовься к собесу аналитика как в Duolingo
10 минут в день — SQL, Python, A/B, метрики. 1700+ вопросов в Telegram
Открыть Карьерник в Telegram

Streaming patterns

gRPC supports 4 RPC types:

Unary. Request → Response. Standard RPC.

Server streaming. Request → stream of responses.

Client streaming. Stream of requests → response.

Bidirectional streaming. Two streams в both directions.

rpc StreamData (DataRequest) returns (stream DataResponse);

Полезно для real-time data, file uploads, chat.

gRPC vs REST

gRPC REST
Format Protobuf binary JSON / XML
Transport HTTP/2 HTTP/1.1 (or 2)
IDL .proto files OpenAPI / informal
Streaming Native Limited (SSE, WebSocket)
Browser Limited (via gRPC-Web proxy) Native
Performance Faster Slower
Developer experience Codegen, typed Manual contracts
Debugging Binary, harder curl-able

Когда применять

gRPC подходит:

  • Internal microservices.
  • High-throughput / low-latency.
  • Polyglot codebase (Java + Go + Python).
  • Streaming use cases.

REST подходит:

  • Public API (browser support, debug-ability).
  • Simple CRUD.
  • HTTP-friendly tools.

В современной архитектуре часто:

  • Public API — REST / GraphQL.
  • Internal — gRPC.

Связанные темы

FAQ

gRPC в browser работает?

Через gRPC-Web — proxy translates browser HTTP/1.1 → backend HTTP/2 gRPC. Streaming limited.

Это официальная информация?

Нет. Статья основана на документации gRPC.io / Protocol Buffers.


Тренируйте системный анализ — откройте тренажёр с 1500+ вопросами для собесов.