З розвитком нашої платформи обробки відео зростала і складність управління обчислювально-інтенсивними робочими навантаженнями. Такі завдання, як нормалізація відео, вилучення аудіо, транскрипція, генерація накладень та рендеринг, можуть споживати значні ресурси CPU та пам'яті, особливо при одночасній обробці кількох проектів.
Виконання цих робочих навантажень безпосередньо в інфраструктурі основної програми може призвести до конфліктів ресурсів, уповільнення часу обробки та обмеженої масштабованості. Зі зростанням попиту нам був потрібен більш гнучкий та ефективний спосіб керування робочими навантаженнями без впливу на продуктивність наших основних сервісів додатків.
Щоб вирішити ці проблеми, ми впровадили AWS Elastic Container Service (ECS) як нашу платформу оркестрації контейнерів.
Завдяки AWS ECS ми можемо ефективно керувати фоновими процесами, масштабувати ресурси відповідно до попиту та виконувати робочі навантаження в окремих контейнерах. Це дозволяє нашій платформі обробляти різні робочі навантаження, підтримуючи продуктивність, надійність та операційну ефективність.
У цьому блозі ми розглянемо, що таке AWS ECS, чому ми його обрали та як він допомагає нам масштабувати нашу інфраструктуру обробки відео.
Проблема масштабування обробки відео
Робочі навантаження з обробки відео за своєю природою є ресурсомісткими та дуже мінливими.
Один проект може включати:
- Нормалізація відео
- Вилучення аудіо
- Перетворення мови в текст (транскрипція)
- Генерація накладень
- Рендеринг кількох варіантів виведення
- Обробка медіаактивів високої роздільної здатності
Зі збільшенням кількості проектів потреби в інфраструктурі можуть швидко зростати.
Нам було потрібне рішення, яке могло б:
- Масштабувати обробні ресурси за потреби
- Керувати кількома завданнями одночасно
- Ізолювати ресурсомісткі завдання від сервісів, що взаємодіють з користувачами
- Підвищити надійність під час пікового навантаження
- Оптимізувати використання інфраструктури
- Скоротити операційні витрати
Традиційні підходи, що покладаються виключно на довгопрацюючі сервери, можуть стати неефективними зі зростанням робочих навантажень. Ми хотіли систему, яка могла б динамічно виділяти ресурси на основі фактичного попиту.
Що таке AWS ECS?
AWS Elastic Container Service (ECS) — це повністю керований сервіс оркестрації контейнерів, який дозволяє організаціям запускати та керувати контейнеризованими програмами у масштабі.
ECS допомагає автоматизувати:
- Розгортання контейнерів
- Планування завдань
- Розподіл ресурсів
- Управління сервісами
- Масштабування робочих навантажень
- Моніторинг стану
Замість ручного керування серверами та процесами додатків, ECS надає централізовану платформу для ефективного виконання контейнеризованих робочих навантажень.
Чому ми обрали AWS ECS
Масштабованість за вимогою
Однією з найбільших переваг ECS є його здатність масштабувати робочі навантаження на основі попиту.
Вимоги до обробки відео можуть значно коливатися протягом дня. Деякі періоди можуть включати лише кілька завдань з обробки, тоді як інші можуть вимагати одночасної обробки великих партій рендерингу та медіа-завдань.
ECS дозволяє нам динамічно запускати додаткові завдання обробки, коли попит зростає, і зменшувати масштаб, коли робочі навантаження зменшуються.
Ця гнучкість допомагає нам підтримувати продуктивність, не виділяючи постійно зайві ресурси.
Ізоляція робочих навантажень
Завдання, пов'язані з обробкою відео, часто вимагають великої кількості CPU та пам'яті.
Запускаючи робочі навантаження в окремих контейнерах, ECS дозволяє нам ізолювати операції обробки від наших основних сервісів додатків.
Ця ізоляція допомагає:
- Підвищити стабільність системи
- Уникнути конкуренції за ресурси
- Спростити усунення несправностей
- Збільшити відмовостійкість
Якщо завдання обробки стикається з проблемою, це не впливає безпосередньо на решту платформи.
Ефективне використання ресурсів
Не всі робочі навантаження з обробки вимагають однакової обчислювальної потужності.
Деякі операції є легкими, тоді як інші включають інтенсивний рендеринг та обробку медіа.
ECS дозволяє нам розподіляти ресурси на основі вимог робочого навантаження, забезпечуючи ефективне та дієве використання інфраструктурних ресурсів.
Це допомагає оптимізувати як продуктивність, так і експлуатаційні витрати.
Зниження операційної складності
Ручне керування великою кількістю сервісів обробки може швидко стати складним.
ECS спрощує керування інфраструктурою, обробляючи:
- Планування контейнерів
- Виконання завдань
- Перевірки стану
- Управління ресурсами
- Відновлення сервісів
Це звільняє наш технічний персонал, дозволяючи зосередитися на покращенні платформи, а не на її підтримці.
Безшовна інтеграція з AWS
ECS природно інтегрується з іншими сервісами AWS, які є частиною нашої інфраструктури.
Це забезпечує оптимізоване розгортання, моніторинг, безпеку та операційні робочі процеси, підтримуючи послідовну хмарну архітектуру.
Як ми використовуємо AWS ECS
AWS ECS відіграє вирішальну роль у нашому конвеєрі обробки відео.
Замість того, щоб запускати всі операції обробки безпосередньо на наших основних серверах додатків, ми виконуємо ресурсомісткі робочі навантаження за допомогою контейнеризованих завдань обробки, керованих ECS.
Нормалізація відео
Завантажені відео часто вимагають підготовки, перш ніж вони зможуть увійти в подальші робочі процеси.
ECS допомагає нам обробляти ці завдання нормалізації незалежно, забезпечуючи послідовні вхідні формати для подальших операцій.
Вилучення аудіо та транскрипція
Вилучення аудіо та транскрипція можуть бути обчислювально інтенсивними, особливо при одночасній обробці кількох відео.
Виконання цих завдань у ECS дозволяє нам масштабувати обробну потужність зі зростанням попиту.
Робочі навантаження рендерингу
Рендеринг відео є одним із найбільш ресурсомістких етапів нашого робочого процесу.
Використовуючи ECS, ми можемо виконувати завдання рендерингу незалежно та виділяти ресурси спеціально для завдань рендерингу.
Це допомагає підтримувати стабільну продуктивність навіть у періоди високого навантаження.
Фонова обробка
Багато операцій відбуваються асинхронно у фоновому режимі.
Приклади включають:
- Підготовка медіа
- Обробка активів
- Виконання робочих процесів
- Післяобробні операції
ECS забезпечує надійне середовище для виконання цих фонових робочих навантажень у масштабі.
Наш контейнеризований робочий процес обробки
Спрощена версія нашого робочого процесу обробки виглядає так:
Крок 1: Подача проекту
Користувач подає проект, що містить відеоматеріали та вимоги до обробки.
Крок 2: Створення завдання
Платформа ідентифікує необхідні операції обробки та генерує відповідні робочі навантаження.
Крок 3: Виконання завдання ECS
ECS запускає контейнеризовані завдання обробки з ресурсами, необхідними для кожної операції.
Крок 4: Обробка та рендеринг
Завдання виконують нормалізацію, транскрипцію, рендеринг та інші операції обробки.
Крок 5: Завершення та доставка
Після завершення обробки результати зберігаються та стають доступними для користувачів.
Цей робочий процес дозволяє нам ефективно обробляти робочі навантаження, підтримуючи масштабованість та надійність.
Переваги для наших користувачів
Рішення щодо інфраструктури, які ми приймаємо, безпосередньо впливають на досвід користувачів.
Використовуючи AWS ECS, ми можемо забезпечити:
Швидша обробка
Динамічний розподіл ресурсів допомагає скоротити час обробки та рендерингу.
Покращена масштабованість
Платформа може обробляти зростаючий попит без значних архітектурних змін.
Стабільна продуктивність
Ізоляція робочих навантажень допомагає підтримувати чутливість платформи навіть під час пікової активності.
Підвищена надійність
Контейнеризовані робочі навантаження покращують відмовостійкість та зменшують вплив збоїв обробки.
Краща ефективність використання ресурсів
Ресурси розподіляються на основі вимог до робочого навантаження, що допомагає оптимізувати продуктивність та вартість.
Погляд у майбутнє
Оскільки наша платформа продовжує розвиватися, вимоги до обробки будуть зростати. Підтримка більших проектів, додаткових робочих процесів та зростаючої активності користувачів вимагає інфраструктури, яка може ефективно масштабуватися.
AWS ECS забезпечує гнучкість та можливості оркестрації, необхідні для підтримки цих змінних вимог. Продовжуючи використовувати контейнеризовані робочі навантаження обробки, ми можемо адаптуватися до мінливих потреб, підтримуючи продуктивність, надійність та операційну ефективність.
Висновок
Масштабування робочих навантажень з обробки відео вимагає інфраструктури, яка може ефективно обробляти ресурсомісткі операції, залишаючись при цьому гнучкою та надійною.
AWS ECS дозволяє нам запускати та керувати контейнеризованими робочими навантаженнями у масштабі, забезпечуючи оркестрацію, масштабованість та ізоляцію робочих навантажень, необхідні для підтримки сучасних конвеєрів обробки відео.
Використовуючи ECS як ключову частину нашої архітектури, ми можемо ефективніше обробляти робочі навантаження, підвищувати надійність системи та продовжувати надавати високопродуктивний досвід для наших користувачів у міру зростання нашої платформи.

