Задачи, которые необходимо решать:
- анализ различных интернет-сайтов и сервисов на возможность извлечения интересующих данных;
- эксперименты и исследования для достижения высокой производительности извлечения;
- написание приложений на Rust, умеющих максимально быстро и полно извлекать интересующие данные.
Мы ожидаем, что кандидат уверенно знает Rust и с лёгкостью отвечает на вопросы:
- зачем нужны маркер-трейты, для чего нужен Pin и чем динамическая диспетчеризация отличается от статической.
- В своей работы мы используем tokio, cdrs-tokio, tokio-postgres, scraper/tl, sled и много чего из инфраструктуры rust. Знание этих библиотек не является обязательным, но будет хорошим бонусом при найме.
- Понимание устройства WEB или желание им овладеть: модель TCP/IP, TOR на уровне пользователя, устройство HTTP 1/2, скрапить HTML и читать JS/TS.
- Опыт базового администрирования Linux-систем: работа с SSH, использование systemd или init, работа с сетью (посмотреть свой IP, переадресовать траффик, настроить DNS), работа с файловой системой (настроить права доступа, примонтировать или отмонтировать ФС).
Плюсами будут:
- наличие GitHub с примерами Rust-кода;
- опыт быстрой обработки высокого потока трафика;
- опыт работы с большими объёмами данных;
- опыт разработки распределенных систем;
- навыки работы с популярными и производительными базами данных (Redis, Sled, SQLite и т.д.);
- знакомство с RabbitMQ, Cassandra, Postgres;
- знакомство с Systemd для запуска сервисов;
- знакомство с Ansible для автоматизации настройки серверов;
- навыки работы с Prometheus/Grafana для мониторинга и профилирования приложений;
- опыт низкоуровневых оптимизаций кода для снижения потребления CPU/RAM.
- полностью новый код инфрастуктуры на Rust, нету legacy;
- полностью официальное оформление по ТК РФ;
- работа в аккредитованной ИТ-компании;
- гибкий график;
- работа на полный рабочий день;
- возможность работать полностью удалённо или в благоустроенном просторном офисе в Москве (своя кухня, зона отдыха и спорта);
- заработная плата обсуждается индивидуально.