Обязанности:
Наша компания разрабатывает и эксплуатирует облачные сервисы: хостинг, CDN и платформу видеотрансляций. Мы — аккредитованная IT-компания с более чем 10-летним опытом на рынке. Задача первого проекта (следом будут другие) — переработать существующий высоконагруженный сервис: перенести реализацию с Python на Go, сократить потребление памяти и увеличить пропускную способность примерно с 500 до 1000 RPS. Предметную область - обсудим на собеседовании. Описание исходного продукта: сервер на python с внешними запросами по http (json, protobuf); имеет микросервисную архитектуру; часть функций реализованы на C с подключением к python собранной библиотеки; нагрузка - около 500 rps по основным запросам. Требования к новой версии продукта: отчуждаемость и закрытость кода (поэтому cpython или pyinstaller не подходит); переход части библиотек (SDK) с C на Rust; появляются ограничения по оперативной памяти; требуется обеспечить производительность около 1000 rps; требуется реализовать механизмы мониторинга сервиса как при развертывании в нашей инфраструктуре, так и в инфраструктуре заказчика. P.S.: Мы не хотим использовать в этом проекте Rust, поскольку у нас нет компетенций в данном языке. Чем предстоит заниматься (и мы ожидаем, что вы это умеете): адаптировать процесс разработки под продукт, используемые технологии и команду, предлагать и внедрять улучшения в процесс разработки: правила code review, тестирования, CI/CD, релизов, документирования и контроля качества; спокойно относиться к конструктивной критике и уметь давать её коллегам; работать самостоятельно, но в команде с инженерами другой специализации (разработчики на других языках, DevOps и SRE инженеров) выполнять оценку сроков задач и уведомлять, если оценка существенно изменилась; проектировать и обосновывать архитектуру продуктов; формализовывать и согласовывать требования к задачам и план их реализации; разрабатывать сопровождаемый код, пригодный к промышленной эксплуатации, договариваться о code style на проекте; проводить и проходить code review; писать документацию по проекту и описание комитов; писать автоматизированные тесты и выполнять тестирование (unit, integration и т.д.); находить узкие места в CPU, памяти, I/O и сетевом взаимодействии; хорошо понимать устройство Linux на уровне, необходимом для разработки и оптимизации высоконагруженных сервисов: процессы и потоки, системные вызовы, память, I/O, сеть, файловые дескрипторы; проводить профилирование и нагрузочное тестирование; оптимизировать конкурентный код; проектировать эффективные структуры данных и алгоритмы; контролировать аллокации и потребление памяти; работать с GC и понимать его влияние на latency; интегрировать C/Rust SDK с Go; глубокое знание С / Rust не требуется, но потребуется уметь читать чужой код и документацию; при необходимости использовать lock-free / wait-free подходы и атомарные операции; читать код на python, C, Rust и, желательно, PHP; использовать линтеры и другие инструменты контроля качества кода; работать с sql базами данных с использованием транзакций; работать с внешними брокерами очередей, кэшами и т.п.; собирать docker контейнеры для улучшения процесса разработки; писать make и bash скрипты; использовать AI-инструменты в разработке для повышения продуктивности — при этом самостоятельно проверять сгенерированный код, тесты и технические решения и нести ответственность за результат (AI-assisted development); читать документацию на английском языке. Условия: оформление и социальные гарантии согласно ТК РФ; свободный график; работа удалённо или в комфортном офисе возле метро "Петроградская".Похожие вакансии
От 40 000 до 60 000 руб.
Санкт-Петербург. Станции метро: Спортивная, Горьковская
ОБЩЕСТВО С ОГРАНИЧЕННОЙ ОТВЕТСТВЕННОСТЬЮ "ДАТАДЖАЙЛ"
От 250 000 до 250 000 руб.
Санкт-Петербург. Станции метро: Спортивная, Горьковская
АРЕС
От 250 000 до 600 000 руб.
Санкт-Петербург. Станции метро: Спортивная, Горьковская
Shvacher
Договорная
Санкт-Петербург. Станции метро: Спортивная, Горьковская
ЭВРИКА, Санкт-Петербург