Задачи: Усиление команды: 1 Senior Java-разработчик
Международная компания Noveo специализируется на разработке ПО под заказ, а также на проведении независимого тестирования.
История проекта
Cizoo — французское онлайн караоке. По сути это специализированная соцсеть, доступ к которой вы получаете через мобильное приложение. В нем вы записываете видео, как в tik-tok, а приложение позволяет сразу наложить фильтр, откорректировать голос, подстроить его под манеру исполнения любимого музыканта. Этими видео можно поделиться, можно посмотреть, что публикуют друзья. Идеальное изобретение для тех, кто хочет почувствовать себя звездой или записать красивое поздравление другу.
Кроме мобильного приложения, Cizoo запустили “живые кабинки” (la cabine Karaoké), которые стоят в развлекательных центрах. Специализированное оборудование в этих кабинках позволяет достичь профессионального уровня записи и правильной акустики. Кабинки уже завоевали любовь французов и активно используются на корпоративах. Спеть с коллегами и нефальшиво — мечта)
Продукт представлен на внутреннем французском рынке, но постепенно обретает популярность и инвесторы гипотетически рассматривают возможность выхода на внешние рынки. Заказчики пользуются французскими инфраструктурными решениями, и недавно перешли с подключенного жесткого диска на облачное хранение.
Как проект оказался в России и почему им занимаются наши разработчики? Французы-заказчики бизнес-ориентированные, они разрабатывают концепцию продукта, пути его продвижения, а вот для реализации своих достаточно сложных идей они решили привлечь специалистов-разработчиков высокого уровня. И вопрос, где искать таких высококлассных специалистов привел в Россию. Владельцы Cizoo обратились за поддержкой в Noveo. А с нашей стороны команду Noveo усилил Senior Java разработчик, Валентин.
В его задачи входила оптимизация бэкенда, приведение его в порядок. Например, транзакции в базе данных очень долго обрабатывались, и это вызывало постоянные ошибки, было много падений на сервере. Была улучшена модель работы транзакции. По своим бизнес-соображениям, заказчик пока не готов выделить бюджет на написание оптимального кода, поэтому рано или поздно, ошибки опять накопятся, их опять придется исправлять.
За последний отрезок времени, с марта по июнь, мы реализовали защиту от спамеров и DoS и DDoS-атак, когда в сторону сетевого ресурса или канала связи отправляется одновременно большое количество запросов с одного или многих компьютеров, расположенных в сети Интернет, система перестает справляться с нагрузкой, и легитимные пользователи не получают к ней доступа. Каждый облачный провайдер предоставляет такую защиту от сторонних DDoS-атак. Но подобная проблема может возникнуть и среди авторизованных пользователей сети, когда некий мамкин хакер, находясь внутри системы может наплодить спама, порнографии и устроить ее массовую рассылку в личных сообщениях другим пользователям. Это не было лимитировано. Мы реализовали защиту, на prod ее пока не вывели, но выведем впоследствии. Главное, что она есть уже!
И второй важный момент — мы подготовили переход на облачное хранилище информации и микросервисную архитектуру. Сейчас вся информация хранится на жестком диске. Это, говоря образно, просто монстрообразный сервер, который является слабым местом. Если он упадет, то всё, Cizoo ложится. Поэтому было принято решение уходить от него и осуществить перевод на взаимодействие насколько это возможно небольших, слабо связанных и легко изменяемых модулей — микросервисов. Это и называется “микросервисная архитектура”.
Мы отдельно вынесли микросервис, который занимается конвертацией видео, и отдельно вынесли кластер, с которого видео считывается. То есть мы разделили все эти вещи: обрабатывать запросы от пользователя, с мобильных устройств — для этого не нужны большие мощности. А вот конвертировать видео, особенно при увеличении количества пользователей, вот здесь нужна масштабируемость. Например, в праздники, когда нагрузка резко возрастает, можно было бы подключить 6 дополнительных микросервисов, и они должны весь этот поток обработать. Но при этом нам не нужно увеличивать мощности того приложения, которое обрабатывает просто запросы пользователей. И мы получаем итогом улучшенную масштабируемость приложения.
Также в отдельный кластер было вынесено чтение видео, и если будет нагрузка именно по проигрыванию видео, то отпадает необходимость покупать большой дорогой компьютер, а можно подключить необходимое количество микросервисов, то есть увеличивать количество рабочих, а не покупать новый завод. Это опять увеличивает масштабируемость. Мы это сделали, сейчас тестируется на предпродакшене.
Была проведена реализация HLS-стриминг кластера. Раньше все сконвертированные видео хранились на жестком диске, а теперь мы все это перевели на облачное хранилище, которое более надежно.