{"id":14284,"url":"\/distributions\/14284\/click?bit=1&hash=82a231c769d1e10ea56c30ae286f090fbb4a445600cfa9e05037db7a74b1dda9","title":"\u041f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0444\u0438\u043d\u0430\u043d\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043d\u0430 \u0442\u0430\u043d\u0446\u044b \u0441 \u0441\u043e\u0431\u0430\u043a\u0430\u043c\u0438","buttonText":"","imageUuid":""}

OrbitSoft починил: как мы переписали медицинский видеопортал с нуля

Инструмент

Видеопортал для обучения пластических хирургов методам нитевого омоложения кожи

Бизнес-задачи

- Научить клиентов эффективно пользоваться продукцией

- Поддержать имидж экспертов в своей области

- Построить комьюнити для повторных продаж

Проблема

- Портал морально устарел, тормозит: главная страница с видео открывается 10 секунд

- Тяжелые видео не всегда загружаются, система не выдерживает большой аудитории при онлайн-трансляциях

- Имидж заказчика страдает, пока портал не работает

Результаты

- Оптимизировали сайт: страницы открываются мгновенно, большие файлы загружаются полностью, независимо от размера и скорости интернета, портал выдерживает более 10 тысяч зрителей во время прямых трансляций

- Настроили интеграцию с единой системой авторизации и сервисом прямых трансляций, которыми пользуется заказчик

- Добавили посты, интеграцию с Zoom, расширенный поиск, рекламные врезки

- Уложились в бюджет заказчика


Компания занимается пластической хирургией

Компания проводит операции в сфере эстетической и пластической хирургии в 11 клиниках в России, Грузии и Китае. Под собственным брендом выпускает нити для омолаживающих процедур: подтяжка и укрепление кожи. Продукцию компании используют хирурги и косметологи в 50 странах мира.

Специалисты компании разрабатывают авторские методы нитевого лифтинга, проводят тренинги для врачей. Чтобы учиться было удобней, компания запустила онлайн-сервисы: школу с обучающими курсами, информационный портал с поддержкой для специалистов и видеопортал с уроками, мастер-классами, онлайн-трансляциями и записями конференций и вебинаров. С их помощью врачи могут:

  • общаться, обсуждать продукты и методики, задавать вопросы;

  • поддерживать актуальность своих знаний, повышать квалификацию;

  • знакомиться с новыми продуктами компании и учиться выполнять процедуры с их применением.

Портал помогает компании сопровождать клиентов после покупки, оказывать сервис высокого уровня, собирать вокруг себя профессиональное сообщество и поддерживать репутацию лидера отрасли.

Видеопортал с учебными материалами для пластических хирургов

Проблема: видеопортал тормозит, компания теряет имидж

В OrbitSoft компания пришла с проблемой: портал морально устарел, часто падал, потреблял много ресурсов, работал медленно. Например, страницы с видео загружались по 10 секунд первый раз и по 2 секунды из кеша. Пользователь открывал главную страницу и ждал, когда на ней просто появятся видео.

Сайт был создан в начале 2010-х, за это время объем данных значительно увеличился. Старая архитектура перестала справляться. Плохая работа портала сказывалась на репутации компании. Врачам не нравилась медленная работа сайта, постоянные неполадки, они не могли проходить обучение и получали негативный опыт.

Компания решила поручить обновление портала команде разработчиков на аутсорсе.

Задача: обновить портал, убрать тормоза и ошибки

Видеопортал был написан на Ruby on Rails, но связь с изначальными разработчиками потеряли. Компания пришла к выводу, что поддерживать его на Ruby нет смысла: язык громоздкий и сейчас почти не используется.

Компания обсудила с OrbitSoft новый технологический стек и сформулировала техническое задание:

  • Переписать серверную часть портала на PHP с использованием фреймворка Symfony.
  • Реализовать интеграцию с системой авторизации Passport и стриминг-сервисом Wowza, которыми пользуется заказчик.
  • Добавить интеграцию с Zoom, расширенный поиск по всем разделам портала, текстовые посты, рекламные врезки в видео.
  • Вместе с бэкендом переделать фронтенд на Angular и мобильные приложения.

Разработка портала заняла 9 месяцев чистого времени. Проектом занималась команда из 6 человек: бэкенд, верстальщик, фулстек, 2 мобильных разработчика и проджект-менеджер.

Оптимизировали портал

Мы полностью переписали бэкенд портала, переделали структуру базы данных и архитектуру проекта: спроектировали ее так, что заказчик по мере увеличения нагрузки сможет масштабировать проект горизонтально, в том числе задействовать балансировщик.

База данных была спроектирована неоптимально. Мы переделали структуру таблиц. Это позволило нам ускорить отдачу контента, теперь видео появляются на странице мгновенно.

Раньше у заказчика все компоненты портала хранились вместе на одном сервере и потребляли одни и те же ресурсы. Соответственно, когда нагрузка увеличивалась, ресурсов не хватало всем. Например, начиналась трансляция в Wowza — чем больше к ней добавлялось зрителей, тем больше тормозил фронтенд. На нескольких тысячах пользователей вся система падала.

Мы разложили компоненты портала на 4 сервера и систему хранения данных (СХД) на 10 терабайт:

  • 1-й сервер: фронтенд и часть бэкенда — логика на PHP;

  • 2-й сервер: база данных MySQL;

  • 3-й сервер: стриминг-сервис Wowza;

  • 4-й сервер: модуль транскодирования;

  • СХД: загруженные видео, транскодированные трансляции, рекламные ролики, картинки к постам.
Теперь компоненты работают независимо и не замедляют работу друг друга

Со сложностями мы столкнулись, когда понадобилось загружать на портал большие видео — по 5—7 гигабайт. Изначально мы собирались принимать файлы целиком через стандартный HTTP. Но он не рассчитан на такие объемы и не предполагает докачки в случае обрыва связи. Как мы нашли решение этой технической задачи, рассказали в другой статье.

Настроили старые интеграции

Заказчик пользуется сторонними сервисами: системой авторизации Passport и стриминг-сервисом Wowza. Когда мы переписали бэкенд, пришлось заново настраивать с ними интеграцию.

Система авторизации Passport — это единая форма входа во все сервисы заказчика: интернет-магазин, приложение, школу с обучающими курсами, порталы для врачей и пациентов. Она работает как авторизация через Google или Mail.ru: создав аккаунт, можно использовать данные для входа в другие онлайн-сервисы. Мы связали новый портал с Passport. Теперь ранее зарегистрированные пользователи могут на него зайти используя свои логин и пароль.

Wowza Streaming Engine — это система для передачи и записи потокового видео. Заказчик использует ее для онлайн-трансляций уроков: хирург выполняет операцию, камеры его снимают, Wowza записывает видео с камер и подготавливает его к просмотру, а пользователи смотрят прямую трансляцию на видеопортале.

Wowza помогает организовать прямые трансляции на портале

Предыдущая интеграция с Wowza была написана на Java. Этот сервис отслеживал начало и окончание трансляции, создавал обложку и транскодировал видео под разные разрешения и форматы. Но сервис работал с ошибками: например, при удалении видео часто не чистил место.

Мы переписали сервис на Golang: он быстрее, чем Java, и покрывает все задачи проекта. Однако при интеграции сервиса с Wowza всплыла проблема. У системы есть SDK, но только на Java. И есть REST API, но он не позволяет подписываться на события. Как связать сервис на Go с Wowza, сохранив весь объем задач?

Рассказали в другой статье, как обошли проблему и настроили интеграцию.

Добавили интеграцию с Zoom

Заказчик решил, что кроме трансляций в Wowza ему нужно собирать коллективные встречи в Zoom. Мы настроили интеграцию — теперь администраторы портала и пользователи могут созваниваться в Zoom не открывая саму программу. Вот как это работает:

  • Администратор из своей части портала создает встречу, описывает ее, назначает дату, нажимает кнопку «Создать». Бэкенд портала создает встречу в Zoom.

  • Когда встреча заканчивается, Zoom конвертирует ее в видеофайл и уведомляет об этом бэк.

  • Когда администратор начинает встречу, бэк рассылает пользователям ссылки на нее, пользователи могут подключиться.

  • Пользователи видят анонс, нажимают кнопку «Подписаться».

  • Бэкенд забирает видео, передает его сервису транскодирования, после чего публикует на портале.
Администраторы могут создавать коллективные встречи в Zoom прямо в административной части портала

Расширили функции портала

Посты. На старом портале основным контентом было видео. Содержание видео не индексируется поисковиками, что затрудняет SEO-продвижение. Мы добавили раздел «Публикации» со статьями, в которые можно включать поисковые запросы. В этом разделе заказчик публикует анонсы событий, новости о компании и продукции.

Расширенный поиск. Раньше поиск на портале был возможен только по заголовку и только внутри раздела. То есть, чтобы найти видеоурок по имплантации нитей, пользователю нужно было зайти в раздел «Видео» и обязательно написать в поисковом поле слово из заголовка, например «имплантация». Если искали то же самое в разделе «Трансляции и вебинары» или по словам из описания к видео, портал ничего не находил. Теперь искать можно по всему порталу по словам из заголовка, описания к видео и категориям.

Категории выполняют функцию тегов: позволяют группировать видео по хирургическим методикам, областям их применения, используемой продукции. Категории нужны для рекомендаций: когда пользователь смотрит видео, портал предлагает ему ссылки на продукцию из видео и похожие ролики — другие видео из этих категорий.

Благодаря категориям портал предлагает похожие видео и продукты компании, необходимые для выполнения методики, со ссылками на интернет-магазин

Реклама. Раньше на портале не было возможности вставить рекламу в видео. Теперь заказчик может добавить рекламный ролик перед видео, в середине или в конце. Например, вставить в видеоурок по коррекции губ рекламу нитей, с помощью которых выполняется процедура.

Обновили фронтенд на Angular

Библиотека Angular Material. Чтобы ускорить работу, мы использовали Angular Material от Google. Это библиотека готовых компонентов интерфейса: кнопок, элементов меню, форм регистрации, всплывающих окон. Библиотека разработана по принципам Material Design — концепции Google, объясняющей, как создавать интерфейсы мобильных и веб-приложений так, чтобы все помещалось в маленькие экраны смартфонов и было удобно управлять приложением с помощью пальцев.

С Angular Material разработка идет быстрее:

  • Дизайнер экономит время: не придумывает и не отрисовывает заново дизайн стандартных компонентов, а вставляет в макет готовые и настраивает их цветовую гамму по брендбуку заказчика.

  • Фронтенд-разработчик экономит время: не описывает функции компонентов в коде, а добавляет в проект набор компонентов Angular Material и подключает на каждой из страниц нужные.

Мультиязычность. Изначально разработка сайта велась на английском языке. Чтобы сделать русскоязычную версию интерфейса, мы использовали механизмы Angular: отметили специальным тегом места, где есть текст, извлекли его и перевели на русский язык, Angular подхватил перевод и сформировал русскую версию интерфейса. Это заняло меньше времени, чем добавление перевода вручную.

Уведомления. Чтобы заинтересованные пользователи сразу узнавали о новых видео и запуске трансляций на портале, мы настроили уведомления. Когда администратор публикует видео, он может поставить флажок «Оповестить всех пользователей». Тогда те, кто разрешил нотификацию в настройках аккаунта, получают уведомление: всплывающее, системное или пуш.

Переписали мобильное приложение

Для разработки нового мобильного приложения мы выбрали фреймворк Qt. Вот почему:

  • Кросс-платформенный фреймворк. Qt подходит для разработки на iOS и Android. На нем написаны участки кода с общей логикой приложения, одинаковой для каждой операционной системы. Это позволило сэкономить бюджет на разработку: понадобилась одна команда аутсорс-разработчиков вместо двух.

  • Построен на вызовах нативных функций. Это упрощает программирование: если разработчик сталкивается с задачей, которую Qt не может решить, он просто вставляет участок нативного кода.

Конечно, у Qt есть ограничения в отличие от нативных языков. Но в данном проекте все задачи были для него доступны: просмотр трансляций, видеоуроков, комментирование, поддержка чата в прямых эфирах, чтение новостей, пуш-уведомления. Qt позволил сэкономить бюджет на разработку и при этом охватить всех пользователей мобильных устройств.

Результаты

Справились за 9 месяцев, уложились в бюджет. Команда из бэкенд-, фулстек-, двух мобильных разработчиков и верстальщика за 9 месяцев полностью переписала сайт и мобильное приложение видеопортала, не превысив бюджет.

Оптимизировали портал, исправили недоработки:

  • раньше страницы с видео загружались по 10 секунд, сейчас на это уходит меньше секунды;

  • большие видеофайлы загружаются на сервер полностью, независимо от размера и скорости интернета;
  • старый портал не выдерживал, когда прямой эфир смотрели несколько тысяч пользователей. Сейчас трансляцию могут одновременно смотреть более 10 тысяч человек.

Настроили интеграцию с другими сервисами заказчика: единой системой авторизации и сервисом для прямых трансляций.

Добавили новые функции: текстовые посты, интеграцию с Zoom, расширенный поиск на сайте, рекламу в видеороликах.

Сейчас, в июле 2022 года, заказчик переносит контент на новую версию портала. Для пользователей работает старая версия. Как только сайт перезапустят, мы опубликуем приложение в магазинах. Пользователи получат его в виде обновления.

Заказчик доволен результатами проекта и планирует поручить OrbitSoft доработку других своих сервисов. Например, системы единой авторизации.

0
Комментарии
-3 комментариев
Раскрывать всегда