Cuarto hito: Creación de un entorno de pruebas para la aplicación usando contenedores

Descripción

Antes de desplegarse a producción, las aplicaciones tienen que probarse en un entorno aislado. Generalmente se denomina staging a esta etapa en el desarrollo y despliegue de la aplicación, y se usa algún tipo de entorno, similar en todo menos en los usuarios al entorno de despliegue definitivo.

En esta práctica se trata de diseñar, usando Docker, un contenedor o contenedores con el que se pueda probar fácilmente la aplicación que se está diseñando.

Prerrequisitos

Explicación

El principal objetivo del uso de Docker u otra infraestructura de contenedores es aislar la ejecución de una aplicación de forma que sea mucho más fácil desplegarla, incluyendo los datos y el estado en el que se encuentre en un momento determinado; también permite crear fácilmente infraestructuras que se pueden reproducir en cualquier instalación en la nube. Además de usarse para entorno de prueba, se puede usar también como entorno de producción, en caso necesario, por ejemplo, taperizando la aplicación de forma que se pueda desplegar con seguridad en cualquier entorno IaaS donde esté instalado un gestor de contenedores o permita directamente el despliegue de contenedores. De hecho, los PaaS usan docker (o algún tipo de infraestructura similar) para crear contenedores con los que se ejecutan las aplicaciones.

El objetivo secundario es el que el alumno tenga instaladas las herramientas necesarias para trabajar con Docker; también en qué casos conviene usarlas por motivos de seguridad o de conveniencia. Estas herramientas se añadirán a la panoplia de un administrador que al terminar la asignatura tendría que tener el alumno.

Para los fines del proyecto y objetivos de la asignatura, lo importante es que la creación de ese entorno de pruebas sea reproducible. No bastará mostrar que el entorno funciona, sino que habrá que crear una serie de scripts tales que, en una instalación determinada sin el contenedor o jaula, se pueda crear fácilmente ese entorno y reproducir la aplicación que se va a probar. Generalmente, si se usa un solo contenedor es suficiente con un Dockerfile. Si se usan varios, habrá que orquestarlos usando la aplicación correspondiente.

El énfasis de esta práctica es en la creación y uso de este entorno de pruebas, por lo que también se valorará cómo se han diseñado esas pruebas y lo realista que es ese entorno. Por supuesto, también se busca que el alumno empiece a usar sistemas de despliegue reales en su aplicación, usando git, claves, integración continua y el resto de los sistemas que se usan en el ciclo de vida de un aplicación moderna.

No se exigirá que se haga ningún fichero de despliegue adicional, pero se valorará que se usen las herramientas de construcción para hacer un despliegue y arranque de la aplicación en el contenedor.

Entrega de la práctica

Subir los fuentes a GitHub hacer un pull request al documento que describa las prácticas y que se anunciará en la web de la asignatura. El documento tendrá que incluir el nombre del proyecto y un enlace a un repositorio de contenedores docker o máquina virtual Azure o Bluemix donde se haya desplegado (o cualquier otro sistema).

Valoración

Si la aplicación no funciona o no están los fuentes publicados, la práctica estará suspensa. Si no hay constancia en issues o commits del trabajo de uno de los miembros del equipo, también.