Что это простыми словами

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

Аналогия: представьте офис, где в каждом отделе свой телефон с добавочным номером. Бухгалтерия звонит на склад, называет нужную операцию — «проверить остатки товара X» — и получает ответ. Все знают, как правильно запрашивать и отвечать, поэтому всё работает быстро и без путаницы. gRPC — такой же телефонный справочник для программ: одна вызывает функцию у другой, передаёт данные, получает ответ.

В современных компаниях приложение часто состоит из множества маленьких программ — микросервисов. Они постоянно обмениваются данными, и gRPC делает этот обмен быстрым и надёжным.

Официальное определение

Теперь, когда суть понятна, вот как gRPC описывают в вакансиях и документации. Эту формулировку вы встретите в требованиях к бэкенд-разработчику.

«gRPC — высокопроизводительный фреймворк для удалённого вызова процедур (RPC), использующий Protocol Buffers для сериализации данных и HTTP/2 для транспорта».

Разберём по словам. «RPC» (Remote Procedure Call) — удалённый вызов процедур, то есть одна программа вызывает функцию в другой программе, как будто та находится рядом. «Protocol Buffers» — способ упаковывать данные компактно и быстро, как архив для передачи. «Сериализация» — превращение данных в формат, который можно отправить по сети. «HTTP/2» — современная версия протокола для передачи данных в интернете, быстрее и эффективнее старого HTTP.

Какую задачу решает

Когда в компании много микросервисов — маленьких программ, каждая из которых отвечает за свою задачу, — им нужно постоянно обмениваться информацией. Например, сервис заказов спрашивает у сервиса склада, есть ли товар, а сервис оплаты проверяет у сервиса пользователей, хватит ли баланса.

gRPC делает такой обмен быстрым и надёжным. Он упаковывает данные компактно, передаёт их эффективно и гарантирует, что обе стороны понимают друг друга — ведь формат общения строго описан заранее. Это особенно важно, когда запросов тысячи в секунду: каждая миллисекунда на счету.

Ещё одно преимущество: gRPC работает с разными языками программирования. Один сервис может быть написан на Go, другой на Java, третий на Python — gRPC позволяет им общаться без проблем.

Кто им пользуется

gRPC — не язык программирования и не привязан к одному языку. Это инструмент, которым пользуются несколько ролей:

  • Backend-разработчик — основной пользователь. Пишет код, который отправляет и принимает запросы через gRPC между сервисами.

  • Системный аналитик — проектирует архитектуру системы и решает, какие сервисы как будут общаться. Выбирает gRPC, если нужна высокая скорость.

gRPC поддерживается во многих языках: Go, Java, Python, C++, C#, Node.js, Ruby и других. Поэтому в резюме бэкенд-разработчика может быть написано «Go + gRPC» или «Java + gRPC» — язык и инструмент идут вместе.

Аналоги / чем заменяется

gRPC решает ту же задачу, что и другие способы общения между программами:

  • REST API — самый популярный способ, проще и понятнее, но медленнее. Большинство веб-приложений используют REST.

  • GraphQL — более гибкий способ запрашивать данные, удобен для фронтенда.

  • WebSocket — для постоянного двустороннего соединения, например в чатах.

  • Apache Thrift — похожий на gRPC фреймворк от Facebook, встречается реже.

Переход между ними требует изменения архитектуры: нельзя просто заменить REST на gRPC без переписывания кода. Но если человек понимает, как работают API и микросервисы, освоить gRPC после REST он сможет за пару недель.

Что не путать

  • gRPC ≠ язык программирования. Это инструмент для общения программ, а не язык, на котором пишут код. Работать с gRPC можно на Go, Java, Python и других языках.

  • gRPC ≠ база данных. База хранит данные, а gRPC передаёт их между программами.

  • gRPC ≠ REST. Это два разных подхода к общению программ. REST проще и популярнее, gRPC быстрее и сложнее. Они не работают вместе — это альтернативы.

  • gRPC ≠ HTTP. gRPC использует HTTP/2 для передачи данных, но это не одно и то же. HTTP — транспорт, gRPC — способ организовать общение поверх него.

  • Protocol Buffers ≠ gRPC. Protocol Buffers — это способ упаковки данных, который использует gRPC. Можно применять Protocol Buffers и без gRPC.

Насколько это важно при отборе

Ответ зависит от ситуации. Разберём два случая.

Жёсткое требование, если в компании уже используется микросервисная архитектура на gRPC, и нужен человек, который сразу начнёт писать и поддерживать код. В этом случае опыт с gRPC действительно важен: разработчик должен понимать, как описывать контракты, работать с proto-файлами, настраивать клиент и сервер.

Не критично, если кандидат знает REST API, понимает, как работают микросервисы, и у него есть опыт разработки на нужном языке. Освоить gRPC в таком случае можно за пару недель на проекте. Отсеивать сильного бэкенд-разработчика только из-за отсутствия конкретно gRPC — ошибка, так теряют хороших кандидатов.

Когда стоит обратить внимание: если проект высоконагруженный, а кандидат вообще не работал с микросервисами и межсервисным взаимодействием — это серьёзнее, чем просто отсутствие gRPC. Здесь важнее общее понимание распределённых систем.

Это общий ориентир. В разных компаниях требования отличаются, поэтому всегда сверяйтесь с текстом конкретной вакансии.