Работаем над двумя основными продуктами:
1. Мультипротокольный сервер потокового видео для трансляций и конференций. Модель "Star".
2. Сервер конференций вроде Zoom и приложение к нему. Модель "SFU, SVC".
Бэкенд выполнен на Java SE без использования фреймворков типа Spring, Hibernate.
Из основных библиотек, активно используется Netty.
Netty позволяет принять или отправить сетевой пакет, который представляет собой буфер байт.
Код сервера занимается тем, что получает трафик по различным протоколам: WebRTC (SRTP, ICE, DTLS), RTMP, RTSP, SRT, SIP, MPEG-TS, VoD, и т.д., далее обрабатывает полученный трафик: депакетизация, процессинг (запись, декодирование, транскодинг, пакетизация, и т.д.) и раздает уже по другим протоколам, которые используются для воспроизведения: WebRTC (SRTP, ICE, DTLS), RTMP, SRT, SIP, HLS, LL HLS, RTSP, MSE.
Вашими задачами будет работа с текущим кодом, который имплементирует все вышеописанные протоколы.
Над чем придется работать
Багфикс. Например, трафик проходит через сервер некорректно, нарушена синхронизация между аудио и видео пакетами. Устройство, отправляющее трафик на сервер, пакетизирует его таким образом, что сервер не может его раскрыть (депакетизировать). Вышла новая версия браузера Chrome, который не может корректно подключиться к серверу по WebRTC и пройти offer/answer — стадию обмена SDP. И другие баги.
Имплементация новых фич и моделей, например поддержка SVC.
Имплементация новых протоколов, например SRT.
Внедрение поддержки новых кодеков, внедрение поддержки работы с GPU Nvidia через JNI.
Оптимизация и рефакторинг существующей кодовой базы, приведение кусков кода к более читаемому виду и изменение архитектуры в лучшую сторону. Покрытие кода интеграционными тестами.
Профайлинг. Написание нагрузочных тестов, профилирование работы системы под нагрузкой, нахождение и устранение узких мест, утечек, многопоточных блокировок.
Требуемые скилы
Java SE
Linux на уровне продвинутого пользователя
Опыт работы с сетями и сетевыми протоколами
Желательно опыт имплементации сетевых или транспортных протоколов на Java или С++
Желательно опыт имплементации многопоточных серверных бэкендов на Java или C++
Условия
Удаленная работа из любой страны мира
Фулл тайм. Долгосрок. Не фриланс.
ЗП от 200 до 300 т. р. От $3000 до $4000 если вы работаете из другой страны. Зависит от вашего опыта и достижений в предметной области. Более высокие вилки готовы обсуждать индивидуально.
hr собакен flashphoner.com