Новое:Talanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

+1 467новых вакансий за сутки·93 721вакансия открыта сейчас·Новое:Talanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

Новые вакансии в TelegramРаботодателям
Talanto
Вакансии
Компании7 267
РезюмеAIПодготовкаСтатьи
BoostТарифыBoost
Войти

Не нашли подходящее?

Пусть нужная вакансия найдёт вас сама.

  1. Подборка в TelegramНовые вакансии по вашему фильтру — сразу в бота.Подключить
  2. Мэтчи по резюмеЗагрузите резюме — покажем, где вы подходите лучше всего.Загрузить
  3. Сохранить фильтрНастройте поиск один раз и возвращайтесь к новым вакансиям.Настроить
Что нового на TalantoTalanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

Для работодателей

Опубликуйте вакансию — отклики придут в ваш кабинет.

  1. Вакансиябесплатно
  2. Откликиконтакты бесплатно
  3. Наймэтапы и интервью

40 компаний публикуют вакансии напрямую · 4 401 кандидат открыт к предложениям

Разместить вакансию

Популярные направления

Все подборки
  • Python17 129
  • Облачные технологии14 088
  • QA вакансии3 457
  • Backend вакансии2 115
  • Инженер данных1 805
  • Продакт-менеджер1 262

Разработка

  • Android1 865
  • iOS1 698
  • Fullstack вакансии989
  • AI вакансии949
  • Frontend вакансии744
  • Mobile вакансии44

По стеку

  • Go8 660
  • Java6 550
  • Node.js2 020
  • .NET1 722
  • Kotlin1 619
  • Rust1 455
  • C#711
  • PHP683
  • C++572

DevOps и инфраструктура

  • Kubernetes7 769
  • DevOps вакансии6 056
  • Linux-инфраструктура5 493
  • Terraform / IaC4 266
  • CI/CD3 250
  • Мониторинг и Observability1 788
  • SRE567
  • Кибербезопасность453

Аналитика и данные

  • Data Scientist1 141
  • Бизнес-аналитик927
  • Аналитик данных854
  • Системный аналитик153

Другие направления

  • Проджект-менеджер616
  • UI/UX дизайн146
  • Ручное тестирование14

По регионам

  • Вакансии в США44 281
  • Вакансии в Европе23 875
  • Вакансии в Канаде4 475
  • Работа в России3 922

По формату

  • Удалённые вакансии75 035
  • Релокация в США44 281
  • Гибридная работа12 401
  • Офисная работа7 079

По уровню

  • Senior вакансии42 679
  • Middle вакансии20 894
  • Junior вакансии6 722

Сейчас нанимают

Все компании
  • Wise190 вакансий
  • Rakuten189 вакансий
  • ASML166 вакансий
  • Grab137 вакансий
  • Celonis39 вакансий
  • Spotify37 вакансий
  • Adyen28 вакансий
  • Infobip28 вакансий
  • Monzo20 вакансий
  • Darktrace16 вакансий

Вакансии из 344 источников: карьерные страницы компаний и джоб-борды.

КомпанииО насНовостиПубличная офертаУсловия использованияПолитика конфиденциальностиПоддержка
←К теме gRPC-GoВсе вопросы
gRPC-GoSeniorОпыт

Какие production или build/runtime-риски есть у gRPC-Go: воспроизводимость, совместимость, debugging, ресурсы или supply chain?

В закладки
Сначала попробуйте ответить сами30 секунд
Сравнить с ответом ↓

Ключевые риски: нефиксированные версии protoc-плагинов ломают воспроизводимость, смешение старого и нового protobuf-рантайма вызывает panic, незакрытые стримы дают goroutine leak, а supply chain требует govulncheck в CI.

1. Воспроизводимость сборки (Build Reproducibility)

gRPC-Go активно использует кодогенерацию через protoc-gen-go и protoc-gen-go-grpc. Версии плагинов и компилятора protoc должны быть зафиксированы в репозитории, иначе разные разработчики получат несовместимый сгенерированный код.

  • Фиксируйте версии в tools.go через blank import и go.sum.
  • Используйте buf CLI (buf.gen.yaml) с явными версиями плагинов вместо «голого» protoc.
  • CI должен запускать buf generate и проверять, что diff пустой (protoc-generated files committed).
# buf.gen.yaml
version: v2
plugins:
  - remote: buf.build/protocolbuffers/go:v1.34.2
    out: gen
    opt: paths=source_relative
  - remote: buf.build/grpc/go:v1.4.0
    out: gen
    opt: paths=source_relative

Production и build/runtime-риски gRPC-Go

gRPC-Go — зрелая библиотека, но у неё есть ряд специфических рисков, с которыми сталкиваются команды в production.

2. Совместимость API и wire-совместимость

gRPC-Go следует Semantic Versioning, однако пакет google.golang.org/grpc содержит нестабильные internal-пакеты, которые периодически ломают компиляцию при мажорных апгрейдах. Типичные сценарии:

  • Переход с grpc v1.x на v2 сломал интерфейс ServiceDesc.
  • Протобуф-рантайм google.golang.org/protobuf и старый github.com/golang/protobuf — разные модули; смешивание версий вызывает panic при регистрации типов.
  • Wire-формат Protocol Buffers обратно совместим, но добавление required-полей или удаление полей без следования правилам из buf lint ломает клиентов.

3. Debugging в production

HTTP/2 multiplexing делает трассировку сложнее, чем HTTP/1.1:

  • Нет curl-дебаггинга — нужен grpcurl или grpc_cli.
  • Трейсинг требует явного включения OpenTelemetry: go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc.
  • Стандартный net/http middleware не работает — нужен gRPC interceptor.
  • Без channelz (встроенный в gRPC-Go инструмент) невозможно понять состояние соединений в runtime.
import "google.golang.org/grpc/channelz/service"

// Регистрация channelz на отдельном порту
channelzServer := grpc.NewServer()
service.RegisterChannelzServiceToServer(channelzServer)
go channelzServer.Serve(lis)

4. Ресурсы: goroutine leak и memory

  • Каждый stream создаёт горутины на чтение/запись. Незакрытые стримы = goroutine leak.
  • Дефолтный лимит на размер сообщения — 4 МБ на получение. При превышении клиент получает ResourceExhausted без ясного сообщения.
  • Keepalive-параметры по умолчанию не идеальны для NAT/firewall-сред: соединения могут молча умирать.
  • Connection pool gRPC-Go не масштабируется горизонтально по умолчанию — один ClientConn = один TCP-коннект к одному адресу.

5. Supply Chain риски

  • gRPC-Go тянет транзитивные зависимости: golang.org/x/net, golang.org/x/sys, google.golang.org/protobuf и другие. Любая из них может иметь CVE.
  • Используйте govulncheck ./... в CI для проверки уязвимостей.
  • Плагины protoc устанавливаются через go install — фиксируйте через tools.go + go.sum, чтобы не тянуть произвольные версии из интернета.
# Проверка уязвимостей
govulncheck ./...

# Проверка устаревших зависимостей
go list -m -u all | grep '\['

Подводные камни

  • Смешивание github.com/golang/protobuf и google.golang.org/protobuf в одном бинаре вызывает panic при регистрации дублирующихся типов.
  • Незафиксированные версии protoc-gen-go-grpc в CI приводят к тому, что сгенерированный код отличается у разных разработчиков.
  • Дефолтный MaxRecvMsgSize = 4 МБ молча отрезает большие ответы на клиенте без человекочитаемой ошибки.
  • Без явного context.WithTimeout потоки могут висеть бесконечно, накапливая goroutine-утечки.
  • Channelz не включён по умолчанию в production-билдах — команды теряют видимость состояния соединений.
  • HTTP/2 требует TLS в большинстве proxy (nginx, Envoy в H2C-режиме требует явной настройки) — без этого gRPC молча деградирует до ошибок.
  • govulncheck нужно запускать именно после go mod tidy, иначе он проверяет устаревший граф зависимостей.
  • buf lint не проверяет backward compatibility на уровне бизнес-семантики — только синтаксис proto; дополнительно нужен buf breaking.

Частые вопросы на собеседовании

  • Как работает аутентификация в gRPC? Как реализовать TLS и mutual TLS (mTLS)?
  • Как реализовать token-based аутентификацию (JWT) в gRPC с помощью metadata?
  • Как реализовать gRPC-сервер на Go?
  • Каковы четыре типа паттернов взаимодействия gRPC? Объясните unary, server streaming, client streaming и bidirectional streaming.

Что портит ответ

  • Говорить только о запуске gRPC-Go, но не об эксплуатации
  • Не упоминать observability, обновления, безопасность и rollback
  • Описывать риски абстрактно, без способов их снижать

Что слушает интервьюер

  • Видит production-риски gRPC-Go
  • Говорит про monitoring, rollout, rollback и безопасность
  • Умеет ранжировать риски по вероятности и влиянию

Как вы знаете этот вопрос?

Проверить себя по теме gRPC-Go →
←Предыдущий вопросВ чём разница между `grpc.Dial()` и `grpc.NewClient()` в последних версиях gRPC-Go?Следующий вопрос→Как реализовать логику повторных попыток (retry) в gRPC-Go?

Связанные темы

gRPC-Goproduction-readinesstechnical-communicationtechnology-selectiontrade-off-analysis