Этот вопрос проверяет умение оценить trade-offs между двоичным RPC и HTTP/JSON.
gRPC даёт высокую производительность и двоичную сериализацию Protobuf, поддерживает стриминг, строгую типизацию и автоматическую генерацию кода, но требует HTTP/2, сложнее дебажить и не так широко поддерживается браузерами. REST с JSON проще в освоении, более совместим с HTTP/1.1 и широко поддерживается в инструментах, но уступает по скорости и полноте контрактов.
Преимущества gRPC:
Производительность: бинарный протокол Protobuf + HTTP/2.
Строгая типизация: .proto описывает сервис и сообщения.
Стриминг: легко реализовать клиент/сервер-стримы.
Кодогенерация: клиенты/сервера для многих языков.
Недостатки gRPC:
Требует HTTP/2, не всегда поддерживается в браузерах (нужен gRPC-Web).
Меньшая человекочитаемость сообщений (Protobuf vs JSON).
Сложнее отлаживать (нужны специальные инструменты).
REST/JSON:
Широкая совместимость, простота дебага через curl/браузер.
Подходит для публичных API, где важна простота.
Более крупный трафик (текстовый JSON), отсутствует стриминг по умолчанию, нет автоматического контракта.
Вывод:
Выбирайте gRPC для высокопроизводительных микросервисов и внутренних сервисов.
REST — для публичных HTTP API и простых интеграций.