UNACLOUD
Opportunistic cloud computing platform

Especificación

UnaCloud nace como una alternativa para satisfacer las necesidades propias del desarrollo de la e-Ciencia que requieren de grandes capacidades computacionales, que tradicionalmente son suplidas por soluciones basadas en Grid Computing y Cloud Computing, siendo este último paradigma en tecnología el que presenta un mayor auge en los últimos años. Poder ofrecer servicios y recursos computacionales por demanda ha resultado atractivo para el sector empresarial de TI que han desarrollado una serie de implementaciones propietarias a gran escala, pero también ha llamado la atención de la comunidad científica que ha visto el potencial de este paradigma para el apoyo de la investigación en áreas como medicina, biología, matemática y educación, entre otros.

La diferencia principal entre las implementaciones propietarias y las de uso libre son los recursos económicos que las soportan, incluso las versiones libres requieren de inversiones muy grandes en infraestructura dedicada que provea suficientes recursos para el soporte de la virtualización, almacenamiento y velocidad de transmisión de datos. Por lo tanto, la implementación de plataformas que sigan un modelo de Cloud Computing como IaaS, SaaS o PaaS, resulta complejo y costoso en diversos ambientes que no cuentan con los recursos necesarios.

Ante este panorama, en el cual se presenta la necesidad de aprovechar el paradigma de computación en la nube, la implementación de una solución independiente de proveedores comerciales, lo limitado de los recursos económicos y la carencia de infraestructura dedicada se presenta UnaCloud. UnaCloud es una implementación que sigue el modelo IaaS apoyado en la virtualización, para ofrecer por demanda recursos computacionales de una manera oportunista y que se encuentran subutilizados en los equipos de escritorio de la Universidad de Los Andes, esto permite ofrecer una plataforma de investigación y experimentación escalable a bajo costo.

Con la claridad de los motivadores de negocio para el desarrollo de esta aplicación, UnaCloud está definida por una serie de requerimientos funcionales que permiten a unos usuarios solicitar por demanda instancias de ejecución y a otros la administración del ambiente. UnaCloud también está definida por una serie de requerimientos no funcionales y atributos de calidad entre los que se encuentran escalabilidad, modificabilidad, extensibilidad, portabilidad y disponibilidad, los cuales permiten que esta solución pueda evolucionar adicionando nuevas funcionalidades o extendiéndose a otros modelos como son PaaS y/o SaaS.


Requerimientos y atributos de calidad

El diseño de UnaCloud está basado en los requerimientos funcionales y no funcionales de los stakeholders que intervienen en el sistema. Entre los stakeholders relevantes para esta versión de la aplicación se encuentran:

Dueño del sistema

Miembro del equipo de desarrollo e investigación, el cual mantiene el código de la aplicación e incluye nuevas funcionalidades por demanda de otros usuarios. Funciones

  • Agregar nuevas funcionalidades al sistema
  • Mantener el código de la aplicación
  • Mantenimiento de la infraestructura que soporta el servidor de UnaCloud.
  • Extender el soporte de la aplicación a nuevas plataformas y sistemas operativos.

Atributos de calidad relevantes

  • Modificabilidad
  • Extensibilidad
  • Portabilidad
  • Escalabilidad
  • Disponibilidad
  • Autenticación
  • Facilidad de despliegue

Investigador

Miembro de un grupo de investigación que demanda alto consumo de recursos de cómputo como soporte a sus tareas o proyectos de investigación.

Funciones

  • Configurar instancias de ejecución con aplicaciones propias para sus pruebas y proyectos de investigación.
  • Desplegar, ejecutar y detener instancias de ejecución a voluntad.
  • Acceder a las instancias para ejecutar aplicaciones, configurar ambientes o descargar resultados de pruebas.

Requerimientos

  • Como investigador deseo poder subir archivos de imágenes a la plataforma, de manera que puedan ser ejecutados posteriormente sobre la infraestructura.
  • Como investigador quiero modificar o eliminar archivos de imágenes de la plataforma de manera que pueda mantener actualizados los repositorios de archivos.
  • Como investigador deseo gestionar conjuntos de imágenes de manera que se facilite la puesta en ejecución de cada una de ellas.
  • Como investigador deseo solicitar múltiples instancias de ejecución de una misma imagen, de manera que se facilite correr múltiples pruebas, ahorrando tiempo de investigación.
  • Como investigador quiero gestionar mis ejecuciones de manera que pueda detener o adicionar nuevas ejecuciones cuando lo requiera.
  • Como investigador deseo acceder remotamente a mis instancias de ejecución desplegadas, para configurar, ejecutar aplicaciones o descargar resultados.
  • Como investigador deseo almacenar una instancia que se encuentran en ejecución, de manera que pueda ejecutar posteriormente una imagen con un estado en el tiempo.

Atributos de calidad relevantes

  • Confiabilidad
  • Desempeño
  • Disponibilidad
  • Usabilidad

Administrador de tecnologías

Persona encargada del mantenimiento y acceso a la infraestructura de las salas de cómputo. Debe garantizar que estudiantes e investigadores puedan hacer uso de los recursos de manera compartida.

Funciones

Administrar los recursos de las salas de informática. Garantizar el acceso por parte de usuarios a los recursos.

Requerimientos

  • Como administrador deseo controlar que usuarios pueden ingresar al sistema y hacer uso de los recursos de cómputo, de manera que pueda tener un mayor control de las ejecuciones y recursos disponibles.
  • Como administrador deseo que solo usuarios validados por mi puedan tener privilegios de administración en el sistema, de manera que pueda tener un mayor control sobre los usuarios y sus funciones.
  • Como administrador deseo gestionar los despliegues de otros usuarios para liberar u ocupar recursos de las salas cuando lo vea conveniente.
  • Como administrador deseo gestionar permisos de los usuarios para la solicitud de instancias de ejecución, de manera que pueda controlar en que máquinas físicas pueden tener ejecuciones y que cantidad de recursos pueden tomar los usuarios.
  • Como administrador quiero gestionar permisos de usuario por grupos de usuarios, para que se facilite la labor de administración.
  • Como administrador deseo gestionar la infraestructura del sistema que está disponible para instancias de ejecución, de manera que pueda adicionar, habilitar, modificar o retirar recursos cuando lo vea necesario.
  • Como administrador deseo gestionar los repositorios donde se almacenan los archivos de las imágenes de los usuarios, de manera que pueda garantizar capacidad del sistema para atender a nuevos usuarios y sus solicitudes.
  • Como administrador deseo poder visualizar e interactuar con las imágenes y ejecuciones de otros usuarios, de manera que pueda gestionar de mejor manera los recursos de la plataforma.
  • Como administrador quiero poder descargar el agente de UnaCloud para configurarlo en las máquinas físicas que serán adicionadas a la infraestructura de UnaCloud.

Atributos de calidad relevantes

  • Autenticación
  • Autorización
  • Usabilidad
  • Facilidad de configuración
  • Desempeño

Estudiante

Usuario de las salas de informática que requiere acceso a las máquinas físicas o equipos de escritorio para actividades académicas durante su estancia diaria en la Universidad.

Funciones

  • Acceso a las instancias de ejecución para ejecución de aplicaciones y desarrollo de proyectos académicos.
  • Ejecución de imágenes propias para actividades académicas.

Atributos de calidad relevantes

  • Eficiente en desempeño
  • Coexistencia (no intrusividad)

Decisiones de diseño

Con base en las necesidades de los usuarios se determinó los atributos de calidad relevantes para la primera fase, así como las decisiones de diseño que se implementarían para su cumplimiento eran:

  • Modificabilidad:
    • División de responsabilidades de la aplicación del servidor en aplicaciones más pequeñas, lo que beneficia el control de cambios y el desarrollo.
    • Desacoplamiento de las aplicaciones por medio de comunicación asíncrona conducida por mensajes.
    • Capas definidas en los componentes.
  • Extensibilidad:
    • Desacoplamiento de componentes por comunicación a través de mensajes lo que permite extender en componentes sin que esto afecte el comportamiento de los demás.
    • Manejo de capas y patrones de diseño en el agente que permite la implementación de nuevas funcionalidades a futuro sin necesidad de cambiar el comportamiento del agente.
  • Portabilidad:
    • Uso de lenguajes Java y Groovy, altamente portables que pueden ser puestos en producción en diversos sistemas operativos.
    • Uso de protocolos conocidos y librerías embebidas comunes que son soportadas en diversos sistemas operativos.
    • Uso de software de terceros como RabbitMQ y MySQL que se caracterizan por su robustez y soporte en los sistemas operativos convencionales.
  • Escalabilidad:
    • Manejo de aplicaciones sin estado, a excepción de la aplicación web donde se maneja sesión. Esto se debe a que no se espera un alto flujo de usuarios por vía web pero si un crecimiento en número de los nodos donde se ejecuta el agente.
    • Desacoplamiento de aplicaciones lo que permite que cada aplicación pueda ser replicada de manera independiente para responder a las necesidades del ambiente donde sea implementado.
    • Manejo de pool de conexiones a la base de datos para responder a picos de solicitudes por parte de los usuarios.
    • Manejo de pool de hilos para responder a las solicitudes y mensajes por parte de los agentes al sistema.
  • Autenticación:
    • Manejo de sesión para el usuario en la parte web.
    • Manejo de tokens para el envío de archivos por parte del usuario a la aplicación de gestión de archivos.
    • Validación de la proveniencia de los mensajes enviados por los agentes.
    • Uso de mecanismos de autenticación en los componentes soportados en software de terceros.
    • Autorización
    • Validación de sesión y de rol de usuario que garanticen que un usuario solo pueda hacer uso de las funcionalidades definidas para él.
    • Definición de permisos de usuario para el despliegue de instancias de ejecución sobre la infraestructura de UnaCloud.