cdnnow
Golang-разработчик
1 нед. назад
Страна неизвестна
golangpythoncrustcode reviewci/cdunit testingintegration testing
Компания разрабатывает облачные сервисы: хостинг, CDN и платформу видеотрансляций. Задача — переработать существующий высоконагруженный сервис, перенести реализацию с Python на Go, увеличить производительность.
О компании
- Наша компания разрабатывает и эксплуатирует облачные сервисы: хостинг, 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, се