1. Домой
  2. Документы
  3. Smarty
  4. Описание

Описание

Microimpuls Smarty — программное обеспечение для управления IPTV/OTT-сервисом. Smarty — это White Label платформа, с помощью которой оператор может разработать собственный брендированный независимый сервис с платным и бесплатным контентом.

Smarty состоит из сервера приложений (называемый также Middleware), портала для Set-Top Box, а также приложений под различные Smart TV, мобильные и медиа-платформы.

Для обработки и доставки контента до абонентских устройств оператор может использовать дополнительные решения от Microimpuls (такие как Microimpuls Spectr или MicroPVR), либо сторонние видео-серверы (такие как Flussonic или Astra и многие другие). Smarty умеет работать практически с любым сторонним ПО и хорошо интегрируется с различными сервисами.

Архитектура Microimpuls Smarty

На схеме ниже изображена общая архитектура решения.

(1) Single Page Application. Пользователи IPTV-приставок (называемых также Set-Top Box или STB) и Smart TV различных производителей взаимодействуют с сервисом IPTV/OTT, устанавливая приложение или прошивку, посредством визуального интерфейса, реализованного в виде портала. Технически это статический одностраничный сайт, который динамически формирует содержание экрана и переключает содержимое в зависимости от действий пользователя (нажатий на кнопки пульта).

Для Android-приставок и Android TV мы предоставляем для операторов отдельное приложение, которое представляет собой обертку над порталом (т.е. по сути содержит Webkit-браузер, который также как и большинство Linux-приставок и Smart TV загружает веб-портал).

(2) Web server (portal). Портал размещается на веб-сервере. Мы рекомендуем использовать nginx для его хостинга. Вместе с установочным пакетом портала на сервере разворачивается пример конфигурации для nginx.

Запросы к статическим файлам портала (html, js, css и другие) nginx обрабатывает как простое чтение локальных файлов.

В больших высоконагруженных сервисах nginx также выступает здесь в роли дополнительного кеширующего прокси (основной кеш хранится в Redis), таким образом снижая нагрузку на сервер приложений.

(3) Браузер устройства загружает портал через протокол HTTP(S) с веб-сервера. Стоит иметь ввиду, что некоторые старые устройства могут не иметь возможности работать с SSL/TLS современных версий.

(4) nginx, на котором размещается портал, обрабатывает запросы /api от приложений и направляет их к серверу приложений через директиву uwsgi_path. В случае размещения на разных хостах взаимодействие с uwsgi-сервером может быть настроено через tcp-сокеты вместо локальных сокетов.

(5) Native. Для мобильных устройств и некоторых других Microimpuls разрабатывает отдельные адаптированные нативные приложения. Такие приложения имеют свой пользовательский интерфейс и не используют веб-портал.

Также, как и портал, эти приложения взаимодействуют с сервером Smarty через API-запросы, который отправляются на веб-сервер и далее проксируются в uwsgi-сервер.

(6) Web server (smarty). В качестве проксирующего HTTP-запросы от приложений к серверу приложений мы также рекомендуем использовать веб-сервер nginx и предлагаем примеры конфигурации.

На схеме сущности (2) и (6) изображены отдельными блоками, поскольку такое разделение является удобной практикой администрирования и разделения запросов от приложений. Однако технически это может быть и общая точка входа, с отдельно определенными location в nginx.

(7) Application server. В качестве сервера приложений выступает uwsgi-сервер с сервисом Smarty. Данный сервис в конечном итоге обрабатывает все дошедшие до него HTTP REST API-запросы, взаимодействует с базами данных, проводит аутентификацию и авторизацию, занимается вычислениями и обработкой информации. uWSGI сервер запускает отдельные процессы, называемые uwsgi-воркерами, каждый из которых обрабатывает свой запрос в единицу времени, вычисляет результат и возвращает ответ в nginx, который в свою очередь возвращает ответ приложению.

(8) В некоторых распределенных конфигурациях допустимо в настройках портала указать адрес API, размещенный на другом хосте. В таком случае к веб-серверу портала будут осуществляться только запросы для загрузки статических ресурсов портала, а запросы к API будут осуществляться напрямую к веб-серверу Smarty.

Например, это может быть полезно, чтобы разместить портал в прошивке устройства (т.н. «толстый клиент»), или на внешнем CDN-ресурсе.

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

(9) Веб-сервер взаимодействует с сервером приложений по протоколу WSGI и соединяется через Unix-сокет, если сервер uwsgi и nginx размещаются на одном хосте (стандартная конфигурация). В случае размещения на другом хосте для взаимодействия с uwsgi используются tcp-сокеты.

(10) Admin panel. После установки и базовой настройки Smarty конфигурируется через веб-панель управления. Логика обработки запросов аналогичная обработке запросов к API. При необходимости с помощью настройки location в nginx доступ к панели управления может быть ограничен или вынесен на отдельный порт и домен или на отдельный хост.

(11) Statistical data. Для хранения телеметрии и других статистических данных Smarty использует MongoDB. Это является дополнительным сервисом и настраивается в том случае, если вам необходима функциональность сохранения телесмотрения и различных механизмов рейтингов и рекомендаций.

(12) SQL database. Для хранения метаданных Smarty использует реляционную СУБД. Взаимодействие с СУБД происходит через механизм ORM. Поддерживамые СУБД: MySQL, Maria DB, Percona, PostgreSQL, Oracle. СУБД является необходимым компонентом системы.

(13) Cache & Queue. Система кеширования и кластерного выполнения запросов в Smarty реализована на Redis. Redis является необходимым компонентом системы.

(14) uwsgi-воркеры Smarty взаимодействуют с базами данных и кеш-серверами через TCP-сокеты. Сервер Redis допустимо размещать локально вместе с сервером uwsgi для экономии пропускной способности сети (стандартная конфигурация). Мы не рекомендуем размещать локально на одном хосте серверы uwsgi и SQL/MongoDB, подобный вариант допустим только для начинающих сервисов с абонентской базой до 5000 онлайн пользователей.