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

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

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

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

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

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

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

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

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

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

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

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

Все подборки
  • Python17 105
  • Облачные технологии14 073
  • QA вакансии3 460
  • Backend вакансии2 098
  • Инженер данных1 805
  • Продакт-менеджер1 266

Разработка

  • Android1 866
  • iOS1 699
  • Fullstack вакансии979
  • AI вакансии951
  • Frontend вакансии742
  • Mobile вакансии44

По стеку

  • Go8 651
  • Java6 544
  • Node.js2 018
  • .NET1 719
  • Kotlin1 623
  • Rust1 453
  • C#709
  • PHP683
  • C++571

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

  • Kubernetes7 763
  • DevOps вакансии6 057
  • Linux-инфраструктура5 492
  • Terraform / IaC4 261
  • CI/CD3 240
  • Мониторинг и Observability1 783
  • SRE566
  • Кибербезопасность453

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

  • Data Scientist1 140
  • Бизнес-аналитик930
  • Аналитик данных853
  • Системный аналитик154

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

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

По регионам

  • Вакансии в США43 685
  • Вакансии в Европе23 862
  • Вакансии в Канаде4 413
  • Работа в России3 909

По формату

  • Удалённые вакансии73 887
  • Релокация в США43 685
  • Гибридная работа12 392
  • Офисная работа7 088

По уровню

  • Senior вакансии42 236
  • Middle вакансии20 545
  • Junior вакансии6 653

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

Все компании
  • Wise190 вакансий
  • Rakuten189 вакансий
  • ASML166 вакансий
  • Grab138 вакансий
  • Celonis39 вакансий
  • Spotify36 вакансий
  • Adyen29 вакансий
  • 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