Мне нужно смоделировать приложение Rails, которое обрабатывает видео с использованием ресурсов Amazon AWS (EC2).
Приложение позволяет пользователям конвертировать видео. Видео загружают пользователи. Сейчас он работает на одном экземпляре, но я вижу необходимость в масштабировании / изменении.
Вопрос:
Есть ли смысл создавать два экземпляра:
1) Интерфейс приложения. Обрабатывает загрузки, работу с базами данных.
2) Экземпляр обработки видео. Что-то с высоким объемом памяти, которое попадает под действие приложения N1.
Будет ли это эффективнее? Есть ли способ, чтобы экземпляр N2 работал не постоянно, а только тогда, когда это необходимо для обработки видео?
Увижу ли я какие-либо преимущества по сравнению с простым масштабированием до большего размера экземпляра и сохранением вещей в одном экземпляре?
Это одна из тех ситуаций, которые зависят от обстоятельств. Существует большое количество вариантов, в которых вы выиграете от возможности масштабировать интерфейс вашего приложения отдельно от работы с интенсивным использованием ЦП. Вам обязательно стоит прочитать Спотовые инстансы AWS и автоматическое масштабирование.
OTOH, если ваши запросы на обработку видео относительно постоянны с течением времени, а их потребности в процессоре не перегружают ресурсы одного сервера, вы можете обнаружить, что определение размера вашего экземпляра - лучший способ. Лично я считаю, что проблемы горизонтального масштабирования (большее количество серверов, выполняющих специализированные задачи) более увлекательны, но YMMV.