Я хочу создать веб-приложение, которое должно запускать ресурсоемкие вычисления MCMC (Цепь Маркова Монте-Карло) по требованию в R для создания некоторых графиков вероятностей для пользователя. .
Ограничения:
Очевидно, что я не хочу выполнять ресурсоемкие вычисления на том же сервере, что и внешний интерфейс веб-приложения, поэтому эти задачи необходимо передать рабочему экземпляру. ].
Для выполнения этих вычислений требуется значительное количество ресурсов ЦП, и я хотел бы, чтобы задержка была как можно меньше (надеюсь, в секундах, а не в минутах), поэтому я бы предпочел выполнять вычисления на более мощном оборудовании.
Я не могу позволить себе запустить мощный экземпляр EC2 со скоростью ~66 центов/час x 24 часа в день, поэтому экземпляры по запросуили спотовые запросы, вероятно, необходимы.
Вот варианты, которые я придумал:
Запуск дешевого и доступного рабочего инстанса 24 часа в сутки, что занимает
одна задача за раз управляется Amazon SWF (или SQS).
Минусы:
Создавать более мощный экземпляр работника для каждой задачи (запускается всякий раз, когда задание
добавляется в очередь) и завершает экземпляр по завершении.
Минусы:
Аналогично №2, но с спотовыми запросами EC2 с низкими ставками.
Минусы:
Какое-то гибридное решение, где я активно отслеживаю
рабочие экземпляры мощного оборудования и их нагрузки, а также разумно
запускать и завершать экземпляры в течение часа, чтобы поддерживать оптимальную
баланс стоимости и доступности
Минусы:
Хотелось бы, чтобы существовала служба, в которой я мог бы платить за высокодоступное оборудование по требованию поминутно, а не почасово.
Итак, мои вопросы следующие:
Как бы вы порекомендовали решить эту проблему?
Существует ли хорошее решение для управления инстансами EC2, которое могло бы работать поверх Amazon SWF и помогать балансировать нагрузку и прекращать простаивающие рабочие процессы?
Помогут ли спотовые ставки решить мою проблему или они больше подходят для задач, которые необязательно выполнять сразу?