Мы ищем Middle‑level Software Engineer для работы над ядром движка запросов крупномасштабной распределённой платформы данных. Вы будете разрабатывать функции в областях планирования запросов, оптимизации и выполнения, вносить вклад в критически важные по производительности компоненты и помогать развивать способность платформы обрабатывать массивные аналитические нагрузки из разнородных источников данных. Это роль системного уровня, backend‑инженерии, сосредоточенная на внутренностях распределённой обработки данных — а не на разработке приложений или CRUD‑сервисов.
Разрабатывать и поддерживать функции в движке запросов — планирование, оптимизацию, выполнение и уровни доступа к данным. Писать качественный, ориентированный на производительность код на Java и/или C++. Работать с семантикой SQL, планами запросов и операторами выполнения над крупномасштабными распределёнными данными. Интегрировать колонковые форматы, открытые форматы таблиц и драйверы подключения, используемые в платформе. Вносить вклад в CI/CD‑конвейеры и автоматическое тестирование — участвовать в процессах сборки, тестирования и релизов в Jenkins. Развёртывать и проверять работу в Kubernetes (GKE / EKS / AKS) в GCP, AWS и Azure с использованием Docker. Отлаживать сложные проблемы, охватывающие планирование запросов, распределённое выполнение, управление памятью и ввод‑вывод. Тесно сотрудничать с инженерными командами в США в рамках дизайн‑обзоров, код‑ревью и технических решений.
Образование: степень B.S. или M.S. в области Computer Science, Computer Engineering или смежной технической специальности. Программирование: высокий уровень владения Java или C++, прочные основы ООП и проектирования программного обеспечения. Кандидаты, комфортно работающие с обоими языками, особенно ценятся. SQL & Data: сильные навыки работы с SQL и хорошее понимание реляционных и аналитических систем данных, включая концепции выполнения запросов. Опыт работы с системами обработки данных: практический опыт работы с системами обработки данных — движками запросов, распределёнными базами данных, ETL/ELT‑фреймворками или аналитическими платформами. Инженерный опыт: 3+ года в backend/systems software engineering. CI/CD & DevOps основы: практический опыт работы с конвейерами Jenkins и современными процессами разработки. Контейнеры: знание Docker и базовое владение Kubernetes (запуск нагрузок, отладка pod‑ов, уверенное использование kubectl). Облако: уверенное владение хотя бы одним из крупных облаков (GCP, AWS или Azure). Система контроля версий: уверенное использование Git / GitHub. Английский: Upper‑Intermediate или выше (B2+) — ежедневное письменное и устное общение с инженерной командой в США. Доступность: возможность работать в часы EU с 2–3‑часовым сдвигом в сторону часового пояса западного побережья США для обеспечения ежедневного перекрытия с командой клиента.
Опыт работы с Apache Arrow (колонковый in‑memory формат). Знакомство с Apache Calcite (парсинг SQL, планирование, оптимизационный фреймворк). Опыт работы с Gandiva или компиляцией выражений на основе LLVM. Опыт с открытыми форматами таблиц — Apache Iceberg, Delta Lake или Hudi. Знакомство с распределёнными вычислительными фреймворками (например, Apache Spark, Kafka) и MPP‑движками SQL‑запросов (например, Presto, Trino или аналогичными). Понимание внутренностей планирования, оптимизации и выполнения запросов. Опыт работы с драйверами подключения к данным: JDBC, ODBC, Arrow Flight. Kubernetes в управляемых сервисах (GKE / EKS / AKS) и опыт работы в мульти‑облачных средах. Инструменты IaC, такие как Terraform. Опыт профилирования производительности и оптимизации систем, чувствительных к задержкам.