BETBY
Middle Python Developer with SQL Skills
Автоматический пересказ вакансии на русском. Полный текст на языке оригинала и форма отклика — на сайте работодателя.
Python-разработчик в команду Backoffice Reports, отвечающую за раздел отчётов бэк-офиса. Бэкенд аналитических отчётов на async Python поверх ClickHouse для операционных команд (риск-менеджмент, трейдинг, аккаунт-менеджмент).
Задачи
- Разрабатывать и поддерживать отчёты в бэк-офисе: фильтры, группировка, сортировка, пагинация, итоги, drill-down, экспорт в CSV и данные для графиков
- Писать и оптимизировать аналитический ClickHouse SQL: агрегации по сотням миллионов ставок, многоуровневая группировка, разбивка по периодам
- Описывать отчёты как типизированные контракты (Pydantic-модели фильтров и вывода) в общей библиотеке отчётов
- Работать с RPC-слоем между API бэк-офиса и сервисом отчётности ClickHouse (RabbitMQ)
- Реализовывать контроль доступа к отчётам: scopes и роли, изоляция данных операторов и брендов, скрытие полей по роли
- Разбираться с медленными отчётами: читать планы запросов, выбирать фильтры, PREWHERE, предагрегацию, работать с командой аналитики над дизайном таблиц
- Покрывать отчёты и SQL тестами, обеспечивать корректность данных
- Участвовать в код-ревью и развитии фреймворка отчётов
Требования
- 3+ года коммерческой разработки на Python
- Уверенный asyncio: async/await, конкурентность, асинхронные I/O клиенты
- Pydantic v2 (модели, валидация, сериализация) и type hints
- Сильный SQL: сложные SELECT с JOIN, подзапросами и CTE, GROUP BY по нескольким измерениям, условная агрегация, оконные функции
- Понимание, как масштабируются аналитические запросы и почему запрос медленный
- Опыт с колоночной / OLAP базой (предпочтительно ClickHouse; плюс Vertica, Exasol, BigQuery, Redshift, Snowflake)
- Опыт построения REST API на асинхронном фреймворке (Sanic, aiohttp, FastAPI, Starlette)
- Понимание брокеров сообщений (RabbitMQ и/или Kafka) и RPC поверх очередей
- Git, Docker, написание тестов с pytest
- Умение разобраться в бизнес-метрике (GGR, stake, payout, margin) и превратить её в корректный запрос
Условия
- Медицинская страховка
- Оплачиваемый больничный до 10 дней без справки
- 20 дней оплачиваемого отпуска плюс дополнительный отпуск на важные жизненные события
- Поддержка обучения и профессионального развития
- Поддержка изучения языков
- Современное оборудование для работы
- Международная команда в нескольких странах
- Корпоративные мероприятия
- Программа поддержки в критических ситуациях
- Подарки и поддержка на важные жизненные этапы
Навыки
- Python
- asyncio
- Pydantic
- SQL
- ClickHouse
- Jinja2
- GraphQL
- REST API
- Kafka
- RabbitMQ
- MongoDB
- Docker
- Prometheus
- Grafana
- ELK
- pytest
- Git
- Sanic
- aiohttp
- FastAPI
- Starlette
- Pandas