ИТ САМОУЧКИ
ИТ САМОУЧКИ

REST против gRPC

REST против gRPC
Довольно популярный технический вопрос в топ 5 банках. Описание в комментариях 👇

Комментарии (2)

  • Лохматый Осьминог
    Лохматый Осьминог
    REST против gRPC

    Выбор между REST и gRPC сначала кажется простым, но в итоге это влияет на то, как ваши сервисы общаются, масштабируются и даже ломаются.

    Оба пытаются решить одну и ту же проблему: как сервисы общаются друг с другом. Но их подход к этому отличается.

    1. Формат данных
    - REST обычно использует JSON. Он читается человеком, легко отладить и работает везде.
    - gRPC использует буферы протоколов (Protobuf). Он бинарный, меньше по размеру и быстрее в обработке.

    Вы начинаете замечать эту разницу в системах, ориентированных на производительность. JSON удобен, но Protobuf создан для эффективности.

    2. Стиль API
    - REST основана на ресурсах: /users/101 с GET, POST, PUT, DELETE.
    - gRPC основана на методах: GetUser(), CreateUser(), UpdateUser().
    REST хорошо подходит для публичных API. gRPC же больше похож на вызов функции другого сервиса.

    3. Модель коммуникации
    - REST — это простой запрос/ответ. Одна просьба, один ответ.
    - gRPC поддерживает больше паттернов: unary, серверная стриминга, клиентская стриминг и двусторонняя потоковая передача.
    Стриминг становится очень полезным, когда нужны обновления в реальном времени или долгосрочные соединения.

    4. Безопасность контрактов и типов API
    - REST-контракты обычно определяются отдельно (OpenAPI/Swagger), и несоответствия всё равно могут возникать.
    - gRPC использует общий .proto-файл с строгими типами и генерацией кода.

    С gRPC и клиент, и сервер имеют одно и то же определение, поэтому при интеграции возникает меньше проблем.

    5. Кэширование и поддержка браузера
    - REST хорошо работает с HTTP-кэшированием, CDN и браузерами.
    - gRPC имеет ограниченную поддержку браузеров (обычно через gRPC-Web) и естественно не подходит для кэширования HTTP.
  • Любопытный Миротворец
    Любопытный Миротворец
    Ищем людей умеющие думать на подработку оплата от 2000 тысяч рублей не удаленно!