east - ec2 dashboard
Trabajadores a pedido de Amazon EC2 para tareas cortas (2)
Estoy buscando construir una aplicación web que necesite ejecutar los cálculos de MCMC ( cadena de Markov de Monteov) que requieren un uso intensivo de recursos en R para generar algunos gráficos de probabilidad para el usuario.
Restricciones
Obviamente, no quiero ejecutar los cálculos que hacen un uso intensivo de recursos en el mismo servidor que el front-end de la aplicación web, por lo que estas tareas deben transferirse a una instancia de trabajo .
Estos cálculos requieren una buena cantidad de CPU para ejecutarse y me gustaría mantener la latencia lo más baja posible (con suerte segundos, no minutos), por lo que preferiría ejecutar los cálculos en hardware más robusto .
No puedo permitirme ejecutar una instancia de EC2 fornida a ~ 66 ¢ / hora x 24 horas / día, por lo que las instancias a pedido o de solicitud puntual son probablemente necesarias.
Aquí están las opciones que he encontrado:
Ejecute una instancia de trabajador barata y asequible las 24 horas del día, lo que requiere una tarea a la vez administrada por Amazon SWF (o SQS).
Contras:- alta latencia : hardware más barato, mayores tiempos de espera.
- alta latencia : hardware más barato, mayores tiempos de espera.
Genere una instancia de trabajador más robusta por tarea (se acelera cada vez que se agrega un trabajo a la cola) y finalice la instancia al finalizar.
Contras:- caro / inútil : pagaría una hora en el servidor cada vez y solo utilizaría segundos para mi cálculo
- gastos generales de inicio : ¿Acelerando una nueva instancia de EC2 a pedido introduciría una latencia no despreciable (compensando todo el propósito de utilizar hardware más robusto)?
- caro / inútil : pagaría una hora en el servidor cada vez y solo utilizaría segundos para mi cálculo
Como # 2, pero con solicitudes spot de EC2 de baja oferta.
Contras:- Gastos generales de inicio - ver # 2
- ¿inconsistencia? - Nunca he trabajado con solicitudes puntuales antes, así que no tengo idea de cuán volátil o práctica sería una solución de este tipo ... ¿tengo que ajustar continuamente mis ofertas para asegurarme de que aún puedo realizar las tareas en las horas pico? ? Además, supongo que tendría que controlar mis procesos de cerca para asegurarme de que no se interrumpan a mitad del cálculo.
- Gastos generales de inicio - ver # 2
Algún tipo de solución híbrida en la que superviso activamente las instancias de los trabajadores de hardware robusto y sus cargas, y de manera inteligente hago girar y finalizo las instancias a la hora para mantener un equilibrio óptimo de costos y disponibilidad
Contras:- Configuración complicada y costosa : a menos que haya un buen servicio administrado para manejar este tipo de cosas, tendría que configurar toda esa infraestructura yo mismo ...
- Configuración complicada y costosa : a menos que haya un buen servicio administrado para manejar este tipo de cosas, tendría que configurar toda esa infraestructura yo mismo ...
Me gustaría que hubiera algún servicio en el que pudiera pagar por un hardware a pedido de alta disponibilidad minuto a minuto en lugar de por hora.
Así que mis preguntas son las siguientes:
¿Cómo recomendarías resolver este problema?
¿Existe una buena solución de administración de instancias de EC2 que pueda ubicarse sobre Amazon SWF y ayudarme a cargar el saldo y terminar a los trabajadores inactivos?
¿Las ofertas de solicitud puntual resolverían mi problema o son más adecuadas para tareas que no necesariamente deben completarse de inmediato?
Me gustaría que hubiera algún servicio en el que pudiera pagar por un hardware a pedido de alta disponibilidad minuto a minuto en lugar de por hora.
Ese servicio es AWS Lambda , que no estaba disponible cuando hizo la pregunta:
Lambda ejecuta su código en la infraestructura informática de alta disponibilidad y realiza toda la administración de los recursos informáticos, incluido el mantenimiento del servidor y del sistema operativo, el aprovisionamiento de capacidad y el escalado automático.
Se le cobrará en función del número de solicitudes de sus funciones y la hora en que se ejecuta su código
La duración se calcula desde el momento en que su código comienza a ejecutarse hasta que regresa o finaliza, redondeado a los 100 ms más cercanos .
La capa gratuita de Lambda incluye 1 millón de solicitudes gratuitas por mes y 400,000 GB de tiempo de cómputo por mes.
También puede envolver una función Lambda con un punto final HTTP , posiblemente eliminando esta capa de su aplicación:
Puede invocar una función Lambda a través de HTTPS definiendo una API RESTful personalizada mediante Amazon API Gateway. Esto le proporciona un punto final para su función que puede responder a llamadas REST como GET, PUT y POST. Lea más sobre el uso de AWS Lambda con Amazon API Gateway.
Advertencia: en la actualidad, Lambda solo admite JavaScript, Java y Python, por lo que no estoy seguro de cómo conseguirías que R funcione. Es posible que deba hospedar R en uno de estos tiempos de ejecución.
Hay otra opción que quizás no conozcas. En realidad me topé con eso: http://multyvac.com
No tengo experiencia en usarlo (por lo que no puedo responder por ello), pero parece que es la primera solución que he visto que realmente ofrece "computación de utilidad". Comenzó con Python, pero ahora es compatible con cualquier idioma.