Разработка gRPC API и протоколов обмена на Go
Быстрый и строгий обмен между сервисами: контракты на Protocol Buffers, бинарная передача по HTTP/2 и кодогенерация клиентов.
- Контракты
Методы и сообщения описаны в .proto-файлах.
- Бинарная передача
Protobuf компактнее и быстрее JSON.
- Кодогенерация
Клиенты для Go, Python, Java и других языков.
- Стриминг
Потоковая передача данных в обе стороны.
Этапы работы
- 01Бриф и аудит
Разбираем задачу, конкурентов и текущий сайт, собираем структуру и семантику. Бесплатно.
- 02Прототип и дизайн
Проектируем страницы под ключевые запросы и путь клиента до заявки, согласуем дизайн.
- 03Разработка и наполнение
Вёрстка, CMS, интеграции с CRM и 1С, тексты, метатеги и микроразметка.
- 04Запуск и продвижение
Переносим на хостинг, подключаем Метрику и цели, сдаём сайт и запускаем SEO и рекламу.
Когда JSON становится узким местом
В системе из десятков сервисов каждый вызов по REST тратит время на разбор JSON, а несовпадение форматов обнаруживается уже в продакшене. gRPC решает обе проблемы: контракт описан в Protocol Buffers, данные передаются бинарно по HTTP/2.
Что разрабатываем
Контракты
Описываем сервисы и сообщения в .proto-файлах, договариваемся о правилах версионирования.
Сервисы и шлюзы на Go
Серверы gRPC на Go, шлюзы для внешних клиентов (REST или gRPC-Web), авторизация и лимиты.
Стриминг
Потоковая передача данных — котировки, события, телеметрия — в одну или обе стороны.
| REST + JSON | gRPC + Protobuf | |
|---|---|---|
| Формат | Текст | Бинарный |
| Контракт | OpenAPI, по договорённости | Строгий, .proto |
| Стриминг | Ограниченно | В обе стороны |
API для внешних клиентов на Go — на странице API на Go.
Смотрите также: микросервисы на Go, highload на Go, миграция на Go. Все услуги — разработка на Go.
Частые вопросы
Чем gRPC лучше REST для обмена между сервисами?
Строгие контракты, бинарная передача и HTTP/2: меньше трафика, быстрее вызовы и ошибки несовместимости ловятся при сборке.
Можно ли вызывать gRPC из браузера?
Напрямую — ограниченно. Для сайта и мобильных клиентов ставим шлюз, который отдаёт REST или gRPC-Web, а внутри сервисы общаются по gRPC.
Что такое Protocol Buffers?
Формат описания и бинарной передачи данных от Google: схема сообщений в .proto-файле, из которой генерируется код.
Как менять контракт, не ломая клиентов?
Добавляем новые поля, не меняя номера существующих, и выпускаем новые версии сервисов по правилам совместимости Protobuf.
Для каких проектов это нужно?
Где важна скорость межсервисного обмена: финтех, геймдев, ритейл с большим числом сервисов.
Расскажите, что нужно сделать
Оставьте контакты или напишите в мессенджер: разберём задачу и предложим решение.
Телефон для связи8 (967) 858-85-55