REST, gRPC и GraphQL: когда что выбрать
три способа делать API, и каждый решает свою задачу — выбор зависит от клиента и требований.
Почему это важно: Выбор протокола API влияет на производительность, удобство разработки и стоимость поддержки. Использовать REST для всего — ошибка.
Главная идея
REST универсален, gRPC — про производительность и строгие схемы, GraphQL — про гибкость для клиента.
Как это выглядит на практике
- Внутри кластера сервисы общаются миллион раз в секунду — выбираем gRPC ради скорости и компактности.
- Мобильное приложение хочет получать только нужные поля — GraphQL.
- Публичный API для интеграций — REST, потому что его понимают все.
- Команда выбирает протокол под клиента, а не наоборот.
Что происходит под капотом
- 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.
Термины урока
Связь с работой backend-разработчика
Современный backend-разработчик должен уметь выбирать протокол под задачу: REST для интеграций, gRPC для микросервисов, GraphQL для frontend.
Мини-разбор реальной ситуации
Команда переписала внутренние API с REST на gRPC и сократила latency между сервисами на 40% и трафик в сети на 60% за счёт бинарной сериализации.
Что запомнить
- REST — для всех.
- gRPC — для скорости.
- GraphQL — для гибкости клиента.
Итог
Знание трёх протоколов и их компромиссов — обязательное умение для backend-разработчика, работающего в распределённой системе.
Комментарии к уроку
Войдите, чтобы оставить комментарий.
Пока нет комментариев — будьте первым.