{"id":2924664,"url":"https://alion.io/job/agregatoreat-go-razrabotchik","title":"Go разработчик","company":{"id":2789510,"name":"Agregatoreat","domain":"agregatoreat.ru","url":"https://alion.io/company/agregatoreat","size_band":null,"is_staffing_agency":false,"employer_type":"direct","is_intermediary":false,"listed_via":null,"ats_vendor":"HeadHunter","truth_index":null},"role":"Backend","role_family":"Backend","seniority":"middle","employment_type":"full_time","work_mode":"on_site","remote_scope":null,"remote_scope_basis":null,"remote_working_hours":null,"hiring_geo_confidence":"structured","locations":["Moscow, Russia"],"countries":["RU"],"hiring_countries":[],"hiring_countries_total":0,"salary":{"min":250000,"max":350000,"currency":"RUB","period":"month","gross":false,"usd_annual":48804},"salary_estimate":null,"experience_years_min":null,"visa_sponsorship":false,"relocation_package":false,"has_equity":false,"technologies":[{"name":"Go","optional":false},{"name":"Amazon S3","optional":true},{"name":"Apache Kafka","optional":true},{"name":"ClickHouse","optional":true},{"name":"ElasticSearch","optional":true},{"name":"Git","optional":true},{"name":"gRPC","optional":true},{"name":"Java","optional":true},{"name":"Lua","optional":true},{"name":"NATS","optional":true},{"name":"OpenSearch","optional":true},{"name":"OpenTelemetry","optional":true},{"name":"PostgreSQL","optional":true},{"name":"RabbitMQ","optional":true},{"name":"Redis","optional":true},{"name":"Rest API","optional":true},{"name":"SQL","optional":true},{"name":"Testcontainers","optional":true},{"name":"КриптоПро","optional":true}],"status":"live","first_seen_at":"2026-10-20T13:07:20Z","employer_posted_date":"2026-10-20","last_verified_at":"2026-10-25T01:14:59Z","board_verified":true,"closed_at":null,"days_open":5,"trust":{"level":"ok","repost_count":null,"flags":[],"days_open":5},"description":"Ищем Middle Go Developer для разработки backend-сервисов. Предстоит самостоятельно реализовывать функции в принятой архитектуре, писать тесты и сопровождать код. Решения обсуждаем с архитектором и Senior-разработчиками. Рассматриваем также Senior-кандидатов с опытом из раздела «Будет преимуществом».\n Особые условия (обратить внимание):\n Формат работы: только офис\n Тип занятости: проектная работа до 30.07.2027. После выполнения проекта рассматривается возможность оформления в штат на постоянной основе.\n Чем предстоит заниматься\n Разрабатывать сервисы на Go, REST API, gRPC-взаимодействие, обработчики сообщений и операции с БД.\n Реализовывать транзакции, конкурентную обработку и фоновые задачи; работать с XML/XSD.\n Писать unit- и интеграционные тесты, проводить нагрузочное тестирование; исправлять ошибки и оптимизировать Go-код и SQL.\n Участвовать в code review, обсуждать решения с командой, поддерживать документацию API и компонентов.\n Обязательные требования\n От 3 лет коммерческой разработки на Go; опыт самостоятельной реализации и сопровождения функций в промышленной эксплуатации.\n Go. Структуры, указатели, slices, maps и interfaces; передача значений, общий backing array у slices и nil в интерфейсах. Небольшие интерфейсы, композиция, разделение обработчиков, прикладной логики и доступа к данным. Go modules и зависимости.\n Ошибки и ввод-вывод. Сохранение причины ошибки, errors.Is/As, defer, panic/recover. Работа с io.Reader/io.Writer, частичными чтениями; закрытие файлов и тел HTTP-ответов.\n Конкурентность. Goroutines, channels, select, sync.WaitGroup/Mutex; понимание data race и deadlock, защита общих данных, корректное закрытие channels и завершение задач. Применение ограничений параллелизма и очередей, контроль фоновых задач при остановке сервиса.\n Context. Передача context.Context в SQL и межсервисные вызовы, тайм-ауты и отмена, вызов cancel и освобождение ресурсов. Понимание, что отмена context не завершает goroutine автоматически.\n PostgreSQL. JOIN, группировки, подзапросы; PK/FK/UNIQUE/CHECK, индексы и чтение EXPLAIN. pgx/pgxpool или database/sql: параметризованные запросы, пул соединений, тайм-ауты, закрытие Rows, проверка ошибок итерации и обработка NULL. Контроль числа запросов и устранение N+1.\n Транзакции и миграции. ACID и конфликты конкурентных изменений; выполнение связанных запросов через один Tx, обработка Commit/Rollback и конфликтов записи. Отсутствие длительных сетевых вызовов внутри транзакции. Миграции goose/golang-migrate или аналогом с проверкой данных и совместимости схемы с кодом.\n REST и HTTP. Обработчики на net/http или фреймворке поверх него; OpenAPI, DTO, JSON, валидация, ошибки и пагинация. Переиспользование Client/Transport, тайм-ауты, ограничения размера запросов, обработка ошибок и ограниченные повторы с учётом идемпотентности.\n gRPC. Реализация методов по Protocol Buffers-контрактам, работа со сгенерированными клиентами, status codes, deadlines и cancellation. Сохранение совместимости сообщений.\n Доступ. Применение принятой аутентификации и авторизации, проверка прав на объект. Валидация JWT через библиотеку: подпись, допустимый алгоритм, issuer, audience и срок действия.\n Redis. Чтение и запись, TTL, правила ключей и инвалидации. Обработка отсутствующих и устаревших значений, тайм-аутов и отказа кэша с сохранением корректности приложения. Понимание отличий pipeline от атомарной операции.\n Kafka илиRabbitMQ. Практика с одним брокером: topics/partitions/consumer groups/offsets либо queues/exchanges/routing keys/ack/nack. Публикация, обработка и подтверждения, повторная доставка, идемпотентность, дедупликация, ограниченные retry и DLQ. Применение существующего механизма согласования записи в БД и отправки сообщений.\n Состояния и фоновые задачи. Переходы по заданной модели, проверки допустимости, атомарные изменения, защита от повторных и конфликтующих операций. Работа с принятыми механизмами запуска, повторов и восстановления задач; расширение пакетов и обработчиков с сохранением контрактов.\n XML и XSD. encoding/xml, теги структур, пространства имён, атрибуты, кодировки и ограничения размера данных. Чтение и изменение XSD: типы, ограничения, include/import. Работа с подключённым валидатором или сервисом: ошибки проверки и контроль доступа к внешним ресурсам.\n Тестирование. testing, table-driven tests, subtests, подмена зависимостей через интерфейсы. Проверка граничных случаев, ошибок и отмены; go test -race и разбор гонок. Интеграционные тесты с PostgreSQL, Redis и брокером через Testcontainers for Go или аналог: rollback, повторы и доставка сообщений. httptest, проверка ошибок gRPC.\n Инструменты. Структурированные логи, stack trace, данные запросов и отладчик. Git, gofmt, go vet, статический анализ и code review.\n Будет преимуществом\n Для Middle - дополнительные навыки. Для позиции Senior эти навыки обязательны.\n Самостоятельное проектирование сервисов, границ компонентов, владения данными и контрактов; выбор синхронной или событийной модели. Переиспользуемые Go-пакеты и обоснованное применение generics.\n Go Memory Model, happens-before, sync.RWMutex, sync/atomic, errgroup. Диагностика сложных data race, deadlock и утечек goroutines.\n Проектирование worker pool, ограниченных очередей, backpressure и graceful shutdown. Потоковая обработка, частичные чтения и записи, контроль объёма данных в памяти.\n PostgreSQL: MVCC, уровни изоляции, CTE, оконные функции, SELECT FOR UPDATE, оптимистическая блокировка. Обработка deadlock и ошибок сериализации; EXPLAIN (ANALYZE, BUFFERS), составные и частичные индексы.\n Оптимизация пула соединений, пакетных операций и COPY. Миграции схем и данных с учётом блокировок и одновременно работающих версий приложения.\n Проектирование REST/gRPC-контрактов, совместимая эволюция Protobuf, interceptors. OAuth 2.0/OpenID Connect, ротация ключей проверки токенов, retry с backoff и jitter.\n Стратегии кэширования и инвалидации, singleflight и защита от массового обновления значения; транзакции Redis, Lua-скрипты и ограничения блокировок на основе TTL.\n Надёжная обработка сообщений: порядок и rebalance в Kafka, prefetch и publisher confirms в RabbitMQ; Transactional Outbox, границы at-least-once/exactly-once для брокера, БД и внешних вызовов.\n Идемпотентность через ключ операции, ограничения уникальности и сохранение результата; обработка частичного выполнения и неопределённого результата удалённого вызова.\n Проектирование фоновых задач с сохранением состояния, восстановлением после перезапуска и защитой от захвата несколькими экземплярами сервиса. Temporal или аналоги, компенсации многошаговых операций.\n Потоковая обработка больших XML через Decoder; проектирование и версионирование XSD, выбор и интеграция валидатора.\n Самостоятельная интеграция с КриптоПро: CMS/CAdES, XMLDSig, присоединённая и отсоединённая подпись, каноникализация XML, кодирование подписываемых данных. cgo: передача указателей, память Go/C, освобождение нативных ресурсов.\n Тестирование переполнения очередей, остановки и восстановления сервиса с управляемой синхронизацией; fuzzing парсеров и преобразований, benchmarks и benchmem.\n pprof, go tool trace: CPU-, heap-, goroutine-, mutex- и block-профили. Аллокации, escape analysis, GC, удержание backing arrays, лишние копирования; применение sync.Pool после измерений.\n Инструментирование кода через OpenTelemetry: метрики, трассировка, перенос контекста через HTTP/gRPC и сообщения; диагностика задержек во взаимодействующих сервисах.\n Практика NATS JetStream, OpenSearch/Elasticsearch, ClickHouse или S3-совместимого хранилища; проектирование схем данных и API.\n Мы предлагаем\n Разработка нового продукта вместе с архитектором и опытными разработчиками; возможность развивать технические навыки и брать более сложные задачи.\n Оформление по ТК РФ. Уровень вознаграждения обсуждается по результатам собеседования.","description_format":"text","description_chars":7812,"description_truncated":false,"requirements":{"experience_years_min":null,"management_years_min":null,"team_size_min":null,"manages_managers":false,"education":null,"security_clearance":false,"languages":[{"language":"Russian","level":"Advanced (C1)","optional":false}]},"benefits":[],"hiring_locations":[],"hiring_excludes":[],"relocation_offered":false,"industries":[],"lifecycle":[{"event":"open","at":"2026-10-20T13:10:49Z"}],"visa":[],"liveness":{"score":85,"band":"hot","label":"Hiring now","p_open":1,"p_active":0.853,"p_room":1,"age_days":4,"expected_fill_days":23,"reasons":["conf:4","win:early"],"computed_at":"2026-10-25T05:49:26Z"},"pay":{"stated_usd_annual":48804,"is_top_pay":false},"html_url":"https://alion.io/job/agregatoreat-go-razrabotchik","json_url":"https://alion.io/job/agregatoreat-go-razrabotchik.json","meta":{"generated_at":"2026-10-26T00:28:36Z","cache_seconds":300,"methodology":"https://alion.io/methodology","terms":"https://alion.io/terms","contact":"https://alion.io/contact","api":"https://alion.io/developers","about":"Alion is a live layer of people, companies and AI agents: who they are, whether they are real and active right now, what they do and how to work with them, readable by people and by agents and paid per call.","catalog":"https://alion.io/catalog.json","usage":{"tier":"crawler_verified","counted_by":"address","units_charged":1,"used_today":598,"day_limit":null,"remaining_today":null,"minute_limit":300,"resets_at":"2026-10-27T00:00:00Z"}},"offers":[{"id":"company.slices","title":"One company in depth, by slice","status":"live","price":{"credits":0.02,"usd":0.002,"plus_per_slice":{"credits":0.05,"usd":0.005}},"unit":"per company, plus each slice with data","note":"the employer in depth","call":{"mcp_tool":"get_company","arguments":{"id":2789510},"rest":"https://alion.io/mcp/rest/get_company?id=2789510"},"human":"https://alion.io/catalog?offer=company.slices&for=job%2Fagregatoreat-go-razrabotchik"},{"id":"market.stats","title":"A market slice: pay, demand and time to fill","status":"live","price":{"credits":1,"usd":0.1},"unit":"per slice","note":"pay, demand and time to fill for this role and place","call":{"mcp_tool":"market_stats"},"human":"https://alion.io/catalog?offer=market.stats&for=job%2Fagregatoreat-go-razrabotchik"},{"id":"job.search","title":"Open jobs by role, technology, place, pay and visa","status":"live","price":{"credits":0.02,"usd":0.002},"unit":"per posting in a list","note":"similar open postings","call":{"mcp_tool":"search_jobs"},"human":"https://alion.io/catalog?offer=job.search&for=job%2Fagregatoreat-go-razrabotchik"},{"id":"company.verify","title":"Is this company real and active right now","status":"pilot","price":null,"unit":"per company","request":{"url":"https://alion.io/catalog/request","method":"POST","body":"{\"offer\": \"company.verify\", \"for\": \"job/agregatoreat-go-razrabotchik\", \"note\": \"what you need it for\"}"},"human":"https://alion.io/catalog?offer=company.verify&for=job%2Fagregatoreat-go-razrabotchik"}]}