Сассан Пежан (Sassan Pejhan), вице-президент по развивающимся технологиям компании ATEME, рассказывает о том, как использовать преимущества облачных вычислений. Он также приводит конкретные примеры обработки медиаданных с применением облачных технологий, в которых описывается адаптированная для облака архитектура модульного программного комплекса ATEME.
Чтобы воспользоваться преимуществами облака, очень важно хорошо разбираться в различных облачных технологиях, знать их плюсы и минусыю А также такие возможности обработки медиаданных (как в виде файлов, так и в реальном времени), как использование микросервисных приложений.
Микросервисы (MS) — это программная архитектура, в которой вместо большого монолитного приложения со множеством функций используется несколько небольших автономных программных компонентов. Каждый компонент выполняет только одну функцию и обменивается данными с другими компонентами по облегченным протоколам. Эти небольшие программные компоненты упакованы в контейнеры и запускаются локально или в облаке с помощью среды выполнения (например, Docker) под управлением оркестратора Kubernetes.
В качестве примера рассмотрим рабочий процесс монтажа видеофайлов. Каждая функция рабочего процесса — от папок отслеживания до графического интерфейса пользователя, от предварительной обработки до кодирования, от формирования аварийных сигналов до планировщика заданий — может быть микросервисом. Обычное монолитное приложение-транскодер можно разбить на отдельные микросервисы, такие как аудиодекодер, видеодекодер, препроцессор, аудиокодер, видеокодер или упаковщик. И это еще не весь список.
Модульность. Модули можно обслуживать, обновлять и создавать независимо от других модулей. Кроме того, поскольку модули имеют небольшой размер и выполняют конкретную функцию, их проще анализировать, обслуживать и тестировать.
Эффективное масштабирование. Если требуется масштабировать определенную функцию, например, когда для создания дополнительных выходных потоков при распространении контента по технологии ABR нужно большее количество процессов кодирования, то реплицируется только эта функция. При этом не требуется реплицировать функции декодирования или предварительной обработки, что имело бы место в монолитном приложении.
Быстрое аварийное восстановление. При сбое одного микросервиса требуется перезапустить только этот микросервис, что гораздо быстрее, чем перезапуск крупного монолитного приложения. Что еще важнее — такой сбой меньше сказывается на клиенте. Например, при транскодировании в реальном времени сбой соответствующего микросервиса затронет только один канал, тогда как сбой в монолитном приложении — все каналы сервера.
Оптимальное распределение ресурсов. Каждому микросервису может выделяться нужное количество ресурсов (ЦП, память и т. д.) в зависимости от его конкретных потребностей. Видеокодеру потребуется больше ресурсов, чем, например, модулю коррекции громкости звука. Кроме того, потребление ресурсов небольшими компонентами легче оценить. После распределения ресурсов для каждого микросервиса их потребление полностью предсказуемо. Это позволяет более эффективно использовать ресурсы в целом и увеличить плотность.
Низкое энергопотребление. Адаптация системы электропитания с учетом конкретных потребностей в ресурсах также позволяет сократить общее энергопотребление и сформировать более экологичную производственную среду.
Совместное использование ресурсов . Различные компоненты могут использовать общие ресурсы. На рис. 3 монолитная архитектура в левой части, для которой требуется отдельный экземпляр базы данных на каждый сервер или ВМ, противопоставлена архитектуре MS, в которой три базы данных совместно используются целым кластером.
Независимость от аппаратных средств. Микросервисы позволяют использовать аппаратные средства разных поколений (Kubernetes запустит узлы, требующие больше ресурсов, на новых поколениях оборудования).
Все программные приложения ATEME доступны в архитектуре микросервисов. В сочетании с гибкой методологией проектирования и методами непрерывной интеграции и доставки (CI/CD) эта архитектура позволяет постоянно совершенствовать наши предложения за счет внедрения новых функций или повышения производительности. В целях повышения эффективности ATEME использует проекты с открытым исходным кодом Cloud Native Computing Foundation (CNCF), которые, помимо прочего, включают в себя следующие компоненты:
- оркестратор;
- хранилище;
- базу данных;
- реестр;
- мониторинг;
- сетевой интерфейс.
Модульный характер нашей архитектуры позволяет повторно использовать некоторые блоки и микросервисы, которые являются общими для нескольких приложений. Например, модуль препроцессора для шумоподавления видео может использоваться как для OTT, так и для традиционного вещания. Аналогичным образом, модуль упаковщика можно использовать как для трансляций в реальном времени, так и при подготовке видео по запросу (OTT VOD). Использование нескольких экземпляров микросервисов в различных комбинациях обеспечивает простоту, последовательность и надежность создания приложений. Воспринимайте это как «лего для взрослых»!
В приложении ATEME Live Encoder добавление резервирования в определенные компоненты, например, в ядро, которое выполняет критически важную обработку контента, легко реализуется путем запуска нового микросервиса.
Наконец, система управления и мониторинга ATEME Management System (AMS), которая позволяет добавлять, настраивать и контролировать каналы в реальном времени, также реализована на основе архитектуры MS.
Микросервисы не только позволяют сравнительно легко переходить от одного поставщика к другому, но и дают возможность реализовать многооблачную архитектуру, за счет чего операторы могут использовать сильные стороны разных поставщиков облачных услуг и сохранять независимость.