Назад | Перейти на главную страницу

Как смоделировать инфраструктуру для приложения Rails с задачами, интенсивно использующими процессор / память (с использованием EC2)?

Мне нужно смоделировать приложение Rails, которое обрабатывает видео с использованием ресурсов Amazon AWS (EC2).

Приложение позволяет пользователям конвертировать видео. Видео загружают пользователи. Сейчас он работает на одном экземпляре, но я вижу необходимость в масштабировании / изменении.

Вопрос:

Есть ли смысл создавать два экземпляра:

1) Интерфейс приложения. Обрабатывает загрузки, работу с базами данных.

2) Экземпляр обработки видео. Что-то с высоким объемом памяти, которое попадает под действие приложения N1.

Будет ли это эффективнее? Есть ли способ, чтобы экземпляр N2 работал не постоянно, а только тогда, когда это необходимо для обработки видео?

Увижу ли я какие-либо преимущества по сравнению с простым масштабированием до большего размера экземпляра и сохранением вещей в одном экземпляре?

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

OTOH, если ваши запросы на обработку видео относительно постоянны с течением времени, а их потребности в процессоре не перегружают ресурсы одного сервера, вы можете обнаружить, что определение размера вашего экземпляра - лучший способ. Лично я считаю, что проблемы горизонтального масштабирования (большее количество серверов, выполняющих специализированные задачи) более увлекательны, но YMMV.