Средний

REST, gRPC и GraphQL: когда что выбрать

Урок 1 из 3 в курсе gRPC и GraphQL: альтернативы REST

Содержание курса (1/3)

REST, gRPC и GraphQL: когда что выбрать

три способа делать API, и каждый решает свою задачу — выбор зависит от клиента и требований.

Почему это важно: Выбор протокола API влияет на производительность, удобство разработки и стоимость поддержки. Использовать REST для всего — ошибка.

Главная идея

REST универсален, gRPC — про производительность и строгие схемы, GraphQL — про гибкость для клиента.

Как это выглядит на практике

  1. Внутри кластера сервисы общаются миллион раз в секунду — выбираем gRPC ради скорости и компактности.
  2. Мобильное приложение хочет получать только нужные поля — GraphQL.
  3. Публичный API для интеграций — REST, потому что его понимают все.
  4. Команда выбирает протокол под клиента, а не наоборот.

Что происходит под капотом

  • REST: HTTP/1.1, JSON, ресурсо-ориентированный, кешируется CDN.
  • gRPC: HTTP/2, Protobuf (бинарный), стриминг, строгие схемы.
  • GraphQL: HTTP, JSON, единый эндпоинт, query-язык для клиента.
  • Производительность: gRPC > REST > GraphQL (примерно).

Типичные ошибки и заблуждения

  • Ошибка: gRPC = только Google. Это открытый стандарт, поддерживаемый всеми крупными языками.
  • Ошибка: GraphQL заменяет REST. Они часто работают вместе: GraphQL как gateway над REST/gRPC.
  • Ошибка: REST устарел. Он остаётся стандартом для публичных API.
  • Ошибка: gRPC работает в браузере без танцев. Нужен gRPC-Web и proxy.

Ключевые выводы

  • Нет одного 'правильного' протокола — выбор зависит от контекста.
  • gRPC сильнее всего внутри кластера.
  • GraphQL хорош для богатых клиентских интерфейсов.
  • REST остаётся универсальным выбором для публичных API.

Термины урока

REST: архитектурный стиль на основе HTTP и ресурсов.
gRPC: RPC-фреймворк от Google на HTTP/2 + Protobuf.
GraphQL: query-язык для API с одним эндпоинтом.
Protobuf: бинарный формат сериализации с строгой схемой.

Связь с работой backend-разработчика

Современный backend-разработчик должен уметь выбирать протокол под задачу: REST для интеграций, gRPC для микросервисов, GraphQL для frontend.

Мини-разбор реальной ситуации

Команда переписала внутренние API с REST на gRPC и сократила latency между сервисами на 40% и трафик в сети на 60% за счёт бинарной сериализации.

Что запомнить

  • REST — для всех.
  • gRPC — для скорости.
  • GraphQL — для гибкости клиента.

Итог

Знание трёх протоколов и их компромиссов — обязательное умение для backend-разработчика, работающего в распределённой системе.

Комментарии к уроку

Войдите, чтобы оставить комментарий.

Пока нет комментариев — будьте первым.