Grid as a Service

Desde el último año, estuve trabajando con tecnologías relacionados con computación distribuida. Actualmente, mi trabajo está relacionado con Windows HPC (High Performance Computing). Pero también estuve en contacto con DSS/CCR de Microsoft Robotics, WCF (Windows Communication Foundation), y examiné algunas implementaciones de Java, como GridGain. Mencioné el concepto de Grid as a Service como una idea para implementar en mi posts Grid Computing Programming, Programando para una Grid,Más programando para una grid.

Un Grid as a Service es algo que podría ser implementado sobre diferentes tecnologías de base. Supongo que debe haber alguna implementación de estas ideas. Ésta es la idea que tengo en mente:

- Una grilla de computadoras, heterogéneas, de línea

- Software para distribuir una o varias tareas en la grilla

- API y front end Web, para definir y subir una aplicación en grilla.

- API e interface Web interface, para lanzar la ejecución de esa aplicación

La aplicación en grilla podría contener:

- Ejecutables, como .exe, .dlls (si está basado en Windows) o .jar (en Java).

- Un manifiesto, describiendo las características de la aplicación: parámetros necesarios, salida esperada (archivo, base de datos, XML,…)

Para lanzar una tarea, el usuario provee los parámetros de entrada, para enviar a ejecutar una aplicación ya cargada y definida en la grilla. Al final de la ejecución, recibiría una notificación, posiblemente una URL con el resultado calculado.

Mi trabajo con AjMessages, AjAgents, está, de alguna manera, orientado a este objetivo de grid as a service.

La grilla de soporte podría ser expandida para tomar más poder y capacidad de otras grillas. Esto es, la misma API que el desarrollador de aplicaciones usaría, podría ser consumida por otras grillas para sus aplicaciones.

Las máquinas podrían ser provistas por data centers (cada año que pase habrá más data centers disponibles, a costo razonables), como los que actualmente proveen servicios en el “cloud” o máquinas virtuales.

Habría varios detalles a discutir, como el monitoreo, nivel de servicio, temas de seguridad. Una alternativa es programar en una “sandbox”, o en un lenguaje dedicado orientado a grilla o computación en paralelo. Computación en paralelo no es lo mismo que computación en grilla: en mi opinión, grid computing es más flexible, una aplicación en grilla podría enviar mensajes a cualquier nodo en la grilla, en cualquier momento, en cambio, la computación en paralelo está más orientada a algoritmos como map reduce, y tecnologías más sincronizadas como MPI (Message-passing interface).

Otros enlaces relacionados:

Recursos de Grid Computing
Recursos de Windows High Performance Computing (HPC) y Programación
http://delicious.com/ajlopez/gridcomputing
http://delicious.com/ajlopez/hpc

Angel “Java” Lopez
http://www.ajlopez.com/
http://twitter.com/ajlopez

This entry was posted in 6149. Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>