Что удобнее для поддержки кода, REST, gRPC на HTTP/1.1 или gRPC на HTTP/2.0

«Что удобнее для поддержки кода, REST, gRPC на HTTP/1.1 или gRPC на HTTP/2.0» — вопрос из категории Сети, который задают на 23% собеседований Golang Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Для поддержки кода удобнее gRPC на HTTP/2.0 благодаря:

  • Бинарному протоколу (меньший размер сообщений, быстрая сериализация).
  • Мультиплексированию (один TCP-коннект для множества параллельных запросов).
  • Строгой типизации (.proto-файлы как контракты, автоматическая генерация кода).
  • Поддержке потоков (server-side, client-side, двунаправленные стримы).

REST на HTTP/1.1 проще для отладки (JSON, curl), но уступает в производительности и строгости API.

Пример gRPC сервиса:

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

message UserRequest {
  int32 id = 1;
}

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

Для микросервисов и высоконагруженных систем gRPC предпочтительнее.