descripcion_mcloud - MutakamwoyoCloud/MCloud GitHub Wiki
Descripción
Con Mutokamwoyo Cloud pretendemos llevar a cabo un proyecto basado en el nuevo y famoso paradigma de Cloud Computing que sea capaz de hacer llegar recursos necesarios en sitios donde seria imposible conseguirlos de otra manera.
Para poder llevar a cabo este proyecto hemos tenido que separar el proyecto en varias zonas, separadas geográficamente con un rol que interpretar en nuestro sistema Cloud y diseñar un protocolo de comunicaciones para ese sistema que nos sea válido.
Es importante añadir que además de separar las distintas zonas del sistema Mutokamwoyo Cloud también planifica el diseño hardware y la arquitectura básica de la red donde se implementara por lo que el trabajo del proyecto a su vez tiene dos partes:
- Software: El sistema operativo y el código de la aplicación que realizará la interacción con las distintas zonas y la definición del protocolo de comunicación.
- Hardware: Maquinas, servidores que harán de host del sistema operativo junto con el código ya mencionado, además de los dispositivos necesarios para que sea posible la comunicación entre las zonas.
Una vez sabidos los conceptos básicos vamos a enumerar las zonas de nuestro sistema Cloud como podemos ver en la figura [1]:
Zona cliente
En nuestro sistema, esta sera la zona que no disponga de banda ancha y su población no tenga acceso a internet, en nuestro caso esa zona es el Congo, en ella dispondremos como mínimo de una maquina con acceso a datos a través del satélite de una forma muy lenta con alto coste y a unas horas determinadas del día.
El sistema operativo utilizado sera una distribución GNU/Linux como Ubuntu, la maquina correrá dos procesos para nuestra zona cliente, uno de interfaz gráfica que permite a otros clientes conectarse remotamente a la GUI de la aplicación y el proceso core que ejecutara las distintas acciones necesarias del sistema que corren por debajo (demonio).
Para desarrollar el software de la zona cliente como ya hemos dicho Javascript sera nuestro lenguaje principal, la zona cliente ademas deberá de tener algún tipo de conexión exterior por mala que sea, en nuestro caso usamos un satélite que ya se encuentra disponible y dispositivos hardware inalámbricos que nos permitan extender una intranet de la capacidad deseada.
Zona Proovedor
Esta parte del sistema se instalara en una zona que tenga disponible banda ancha a internet como puede ser ADSL, VDSL o fibra optica, en nuestro caso la zona proovedor se encontrara en una empresa de Madrid con disponibilidad de internet, el despliegue en fase de produccion es recomendable de que se haga en una maquina virtual o container para conseguir una capa de abstraccion portable de esta parte de la aplicacion.
El sistema operativo utilizado sera una distribucion de GNU/Linux como puede ser Debian o Ubuntu, sobre ella correremos un proceso de Python que se encargara de manejar el acceso real a los recursos solicitados por la zona cliente, aunque la zona cliente tenga una mala conexion y solo pueda acceder a internet a determinadas horas del dia, la zona proovedor sin embargo estara activa las 24h y no tendra ninguna restriccion a la hora de acceder al contenido.
Protocolo comunicacion
La clave para que funcione nuestro sistema con las dos zonas que acabamos de definir es la comunicacion, en nuestro caso hemos decdido definir una especie de protocolo por encima de FTP y un compresor binario como puede ser tar o gzip para enviar informacion con diferentes tipos de instrucciones:
- push
- fetch
- pull
- flush
