gRPC deep на собеседовании системного аналитика
Карьерник — 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.
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.
Связанные темы
- REST API на собесе SA
- REST SOAP gRPC GraphQL для SA
- HTTP методы и коды для SA
- API Gateway и BFF для SA
- Подготовка к собесу системного аналитика
FAQ
gRPC в browser работает?
Через gRPC-Web — proxy translates browser HTTP/1.1 → backend HTTP/2 gRPC. Streaming limited.
Это официальная информация?
Нет. Статья основана на документации gRPC.io / Protocol Buffers.
Тренируйте системный анализ — откройте тренажёр с 1500+ вопросами для собесов.