Proyecto de la asignatura Cloud Computing: Fundamentos e Infraestructura del Máster Universitario en Ingeniería Informática de la ETSIIT, UGr
Actualizado el 01/02/2017
Consiste en el despliegue de un bot de telegram, para lo que utilizaremos pyTelegramBotAPI, una API para realizar bots en Telegram.
Este bot apoyará a las gestiones de requerimientos de un ente gubernamental del Paraguay: El Programa Nacional de Becas en el Exterior para el Fortalecimiento de la Investigación, la Innovación y la Educación del Paraguay Don Carlos Antonio López.
Actualmente, debido al gran número de beneficiarios del programa gubernamental, se hace díficil poder gestionar las solicitudes de requerimientos en tiempo y en forma de todos ellos. Estas solicitudes se realizan vía e-mail, incluso la confirmación de recepción de las mismas lleva días, por lo que su resolución y respuesta muchos días más, por lo tanto un bot que gestione y administre estos requerimientos resulta útil.
En principio utilizaremos la arquitectura basada en microservicios, donde estos son independientes entre si y por lo tanto, pueden ser desarrollados, desplegados y testeados de manera indiviual. Es deseable que el bot funcionará como API, donde el usuario se comunicara con el bot lo más natural posible.
Es ideal contar con al menos estos dos microservicios:
Almacenará información sobre los detalles de las solicitudes y su estado, utilizaremos una base de datos Relacional u Objeto/Relacional (como MySQL o PostgreSQL) con Python.
Administrará el avance y resolución de los requerimientos solicitados al bot, podría ser una web simple o responsiva en HTML, CSS y JS, con una base de datos Orientada a Objetos u Objeto/Relacional (como MongoDB o PostgreSQL)
- Ubuntu Server 16.04 en AWS (Amazon Web Services) para la Gestión de solicitudes
- Ubuntu Server 14.04 también en AWS para la Gestión de tareas.
En la experiencia, la arquitectura de microservicios así lo sugiere, entonces decidí priorizar una instancia para cada servicio, para que puedan trabajar totalmente independientes.
AWS ofrece alternativas gratuitas y de bajo coste para estudiantes de la universidad y los hay también para usuarios de Github, además es la pionera en este ámbito y unas de las más utilizadas. Ubuntu Server, tanto para su versión 14.04 como 16.04, es una distribución Linux muy popular y existe mucha documentación para casi cualquier cosa que se desee hacer.
Su elección se basa en que este sistema Ansible funciona sobre Python (instalado por defecto en la mayoría de las imágenes), es muy práctico en su uso y posee el apoyo de Red Hat Inc.
Chef es muy utilizado hoy día, incluso posee una comunidad muy activa. Al utilizarlo resulta bastante sencillo, aunque puede terminar resultando no muy práctico por su sistema de directorios, propios de usuarios más sotisficados.
- Paquetes: Git, MongoDB, NodeJS, ndm; y con ndm: Mongoose.
- Paquetes: Git, PostgreSQL, pip; y con pip: Flask, FLask-SQLAlchemy, pyTelegramBotAPI.
- Herramienta: Vagrant.
- Objetivo: Orquestar un ambiente software completo, clic aquí.
- Se elige trabajar con instancias de AWS y VirtualBox por su popularidad y estabilidad, OpenStack por su gran capacidad y alcance (aka TryStack).
- Herramienta: Docker.
- Objetivo: Valerse de Docker para el uso de contenedores en un ambiente completo: crear un repositorio en Docker Hub sincronizado con GitHub y una instancia en local/AWS/Vagrant; clic aquí
- De esta manera se cubren las herramientas de mayor aceptación: Docker + GitHub + AWS
Para llevar a cabo el despliegue final de la aplicación se realizó una miscelánea, de tal manera a aprovechar cada una de las siguientes herramientas:
- Herramientas:
- Vagrant (AWS plugin)
- AWS (Amazon Linux Ami)
- Docker
- DockerHub con Alpine
- Servicios externos de Daas y Lass
EL porqué de la elección de esta tecnología se justifica en su funcionamiento aquí.
GNU GENERAL PUBLIC LICENSE (Versión 3, 29 de Junio de 2007).