Publications / Платформа Since - задачи и решения
Эта статья была написано мною еще около полутора лет назад, но потом так сложилось, что введу большой занятости я так и не опубликовал ее, а чуть позже просто забыл о ней. В проекте Since TV я не участвую уже около года, но тем не менее, в ходе работы над проектом было накоплено много полезных знаний и реализовано много интересных и решений, которыми хотелось бы поделиться.
На сегодняшний день интернет, социальные сети и современные технологии задали достаточно высокий уровень вовлеченности человека в процесс получения информации. При отсутствии последней человеку становится неинтересно потреблять информацию. Исходя из этого новые медиа должны обеспечивать высокий уровень вовлеченности, а медиа, которые уже существуют, — на этот уровень выйти.
Анализ и предпосылки
Если проанализировать развитие современных медиа, то можно сделать вывод, что все они стремятся быть более интерактивными, а также стать ближе к потребителям информации.
На радио возможность отправки поздравления по телефону, или через смс уже является стандартом. Слушатели могут самостоятельно заказывать те музыкальные композиции, которые хотят услышать.
На телевидении процесс идет медленнее, но вектор развития сохраняется тот же — в программах "Свобода слова", "Шустер Live" и подобных, взаимодействие происходит уже не только между ведущим и непосредственными гостями студии, но и между зрителями в зале, симпатии которых можно наблюдать в прямом эфире. Еще больше развил этот тренд известный писатель и публицист Сергей Минаев. Автор романов «Духless» и «The Телки» создал новый формат - интернет-телеканал, где каждый дозвонившийся по Skype зритель может стать полноценным участником передачи, а также может полностью изменить направление дискуссии в студии.
Сейчас пришло время сделать еще один шаг вперед, объединив разрозненные преимущества существующих проектов и добавив нечто новое. Это новое — технология Since, разработанная Аленой Сибиряковой и воплощенная командой молодых профессионалов из группы компаний «Рост». Как известно, самые интересные проекты и решения получаются на стыке различных областей знаний. В нашем случае мы видим возможность объединения телевизионных и ИТ-технологий - это достаточно эффективная и многообещающая комбинация.
Что же нужно, чтобы современного человека снова заинтересовало телевидение?
Возможность влияния на контент — как уже говорилось, в интернете человек является не только потребителем контента. В интернете человек сам выбирает, что именно он хочет увидеть и что ему интересно. То есть он сам влияет на то, какой контент он потребляет. Следовательно, возможность влиять на контент и изменять его является основополагающей для новых медиа.
Вовлечение людей в процесс — современному человеку мало наблюдать за процессом. Он хочет участвовать в процессе. Понимание того, что человек влияет на происходящие события, увеличивает его заинтересованность.
Удобный инструмент взаимодействия с телеэфиром – необходим для того, чтобы позволить как можно большему количеству людей принять участие в трансляции. Инструмент должен быть простым и доступным. Им может быть персональный компьютер, ноутбук или планшет, которые сейчас есть у очень и очень многих людей.
Надежная платформа — стабильно и быстро работающая с большим количеством людей одновременно. Такая платформа необходима для того, чтобы технически обеспечить весь процесс. Ведь когда мы говорим о телевещании, охват аудитории должен быть очень большим и исчисляться десятками и сотнями тысяч. Для обеспечения работы такой системы в реальном времени нужны технические средства, позволяющие обрабатывать всю получаемую информацию за доли секунды. Сегодня такие средства есть — это облачные технологии.
Сегодня наша задача-минимум — сделать так, чтобы телевидение снова вызывало максимальный интерес у людей. Задача-максимум — создать новый формат телевидения.
Процесс
Для создания любого нового (а тем более интонационного) продукта необходима слаженная работа всех участников проекта. В качестве модели построения процессов разработки мы взяли Scrum. Это хорошо зарекомендовавшая себя методология управления проектами, активно применяющаяся при разработке информационных систем для гибкой разработки программного обеспечения. Scrum делает основной акцент на качественном контроле процесса разработки. Учитывая специфику нашего проекта, методология была несколько модернизирована для построения более эффективного взаимодействия. Так, например, мы уменьшили длительность спринтов (спринт - итерация, в ходе которой создаётся новый функционал в продукте) со стандартных двух-трех недель до одной. Немного изменили некоторые роли. Но в целом работали именно по скрамовскому сценарию.
Кроме того, в процессе разработки программного обеспечения мы внедрили базе практику Continuous Integration. Данная практика заключается в выполнении частых автоматизированных сборок проекта для скорейшего выявления и решения интеграционных проблем. В обычном проекте, где над разными частями системы разработчики трудятся независимо, стадия интеграции является заключительной. Она может непредсказуемо задержать окончание работ. Переход же к непрерывной интеграции позволил нам снизить трудоёмкость интеграции и сделать её более предсказуемой за счет наиболее раннего обнаружения и устранения ошибок и противоречий.
Нужно отметить, что использование данных методик позволило достаточно оперативно решать вопросы возникающие во время разработки. А вопросов таких было очень много. Проведя для себя небольшие расчеты, я убедился, что в случае использования классических подходов к разработке, мы бы на сегодняшний момент были бы гораздо более далеки от конечного результата, чем сейчас.
Архитектура
В процессе разработки мы столкнулись с несколькими принципиальными проблемами:
- Нагрузки
- Масштабирование
- Интеграция
Нагрузки
Вопрос нагрузок был одним из самых первых поднятых вопросов. С самого начала в систему закладывалось обеспечение возможности работы с большим количеством телезрителей. В ходе работы архитектором проекта Тимуром Шемсединовым была создана система выдерживающая многотысячные пиковые нагрузки. Ядро системы основано на платформе node.js — использующей язык программирования JavaScript. Эта платформа предназначена для создания распределённых сетевых приложений. Основной упор в Node делается на создании высокопроизводительных, хорошо масштабируемых клиентских и серверных приложений для «реального времени».
Облачная платформа
Проблема масштабирования была решена путем переноса компонент платформы Since в облачное окружение Windows Azure.
Что же такое облачная среда, и почему мы решили использовать именно облачные технологии для нашего проекта? Облачная платформа предоставляет возможность разработки и выполнения приложений и хранения данных на серверах, расположенных в распределенных датацентрах. Также она дает нам возможность планирования и оптимизации затрат на поддержку инфраструктуры - во время использования облака мы оплачиваем только те ресурсы и мощности, которые задействованы в приложении и только за фактическое время использования этих ресурсов.
Кроме того, Microsoft Azure предоставляет надежную среду выполнения, и обеспечивает безопасность на уровне операционной системы и инфраструктуры. Таким образом, размещение компонент Since TV в «облаке» позволяет улучшить и их безопасность. Стоит отметить, что ноябре 2011 года Microsoft Azure прошла сертификацию по стандарту ISO 27001. Это международный стандарт в котором описаны лучшие мировые практики в области управления информационной безопасностью. Это также является одним из факторов, почему нашей командой была выбрана именно эта платформа.
Для развертывания платформы Since TV мы выбрали европейские дата-центры - это позволило уменьшить время доступа к системе жителей СНГ и Европы. При необходимости доступа к системы из других регионов мы можем достаточно быстро развернуть платформу так же в Американских и Азиатских дата-центрах. Одним из преимуществ облачной платформы является то, что нам нет необходимости тратить ресурсы на поддержание собственной ИТ-инфраструктуры, это значит, что мы можем выделять больше ресурсов на решение непосредственных задач по разработке и менеджменту проекта.
Таким образом - именно облачные технологии позволили реализовать нашей небольшой команде те технические и инженерные решения, которые еще лет пять назад были под силу только крупным технологическим и ИТ-компаниям.
Интеграция
Как и любая современна платформа Since TV не может, да и не должна работать изолированно. В плане интеграции у нас стояло две задачи – интеграция с другими информационными системами и продуктами и интеграция с телевидением.
Для интеграции с программными продуктами архитектором ситемы был разработан и реализован Since API - позволяющий настроить взаимодействие системы Since TV, портала Since, и сторонних продуктов. Since API – это набор функций и структур данных, предоставляемых для использования во внешних программных продуктах. В ИТ-индустрии общие стандартные API играют очень важную роль - они гарантируют, что все программы, использующие общий API, смогут нормально взаимодействовать предсказуемо работать.
Для интеграции с телевидением была разработана специальная система визуализации базирующаяся на векторном отображении информации и позволяющая выводить графики и информацию в формате приемлемом для телевизионного оборудования.
Процесс
Для построения процесса Continuous Integration нами использовались возможности интеграции сервисов Microsoft Azure и GitHub. Мы настроили автоматическую публикацию проектов из системы контроля версий в облако. Благодаря этому, уже через пару минут после того как разработчик сохранял свои изменения в корпоративный репозиторий (место хранения исходного кода проекта на сервере), они попадали на закрытую тестовую версию площадку. Дальше подключались менеджеры проекта, которые могли сразу же оценить изменения и, если необходимо, внести корректировки в техническое задание.
Еще одним важным вопросом был вопрос масштабирования. Модель проекта Since предполагает несколько этапов активности пользователей.
- Относительно невысокая среднесуточная активность;
- Анонс события по телевидению и предложение зарегистрироваться на портале Since – большое количество пользователей желающих зарегистрироваться, возможны краткосрочные пиковые нагрузки во время трансляции рекламы;
- Непосредственная трансляция события и долгосрочные пиковые нагрузки, связанные с активностью пользователей во время голосования;
- Относительно невысокая среднесуточная активность до следующего сеанса.
В таких условиях есть несколько вариантов обеспечения платформы ресурсами - создание собственной мощной аппаратной базы, аренда аппаратной базы у хостинг-провайдеров, аренда вычислительных мощностей в облачном окружении. Однако первый и второй варианты будут финансово невыгодными, учитывая наши задачи. Кроме того, они потребуют значительного увеличения количества участников команды. Поэтому нами и был выбран вариант реализации на базе облачной платформы, позволивший арендовать только те ресурсы и только на то время, которые нам необходимы.
В целом, с технической точки зрения, проект примечателен тем, что позволяет объединить технологии, концепции и профессионалов из самых различных областей и раскрыть потенциал каждой технологии.
Тесты и нагрузки
На очередном этапе работ необходимо было проверить, действительно ли система выдерживает те нагрузки, под которые она проектировалась. Для этого было решено обратиться в Конструкторское Бюро «Информационных Систем» при НТУУ КПИ. После ряда переговоров между КБ и ГК «Рост» конструкторским бюро при участии научных сотрудников были разработаны методики тестирования. Сами тесты были проведены совместно ИТ-специалистами двух команд. По результатам тестов система показала стабильный работу на 55 000 эмулируемых респондентах. Это немного меньше закладываемых нами в проект 60000, но вполне вписывается в допустимые рамки. И это только на одном сервере, без построения кластерной системы.
Выводы
Пример проекта SINCE демонстрирует то, как благодаря использованию облачных сервисов и технологий, относительно небольшая группа специалистов может разработать и поддерживать продукт, на создание которого еще лет 5 назад потребовалась бы большая команда, включающая не только разработчиков но и большое количество других технических специалистов.
Read publication