Skip to content

Latest commit

 

History

History
77 lines (60 loc) · 3.61 KB

6.Compose.md

File metadata and controls

77 lines (60 loc) · 3.61 KB

Sexto hito: composición de servicios

Descripción

Cuando una aplicación no cabe en un solo contenedor por la existencia de varios tier, o simplemente nodos que sirven para almacenar datos, es necesario usar Docker compose para describir de forma repetible la relación que tales contenedores tienen entre si.

En esta práctica se trata de diseñar, usando docker-compose y describiendo la infraestructura mediante un fichero docker-compose.yml, un servicio que incluya varios contenedores, incluyendo uno cuyo contenido exclusivo sea almacenar datos.

Prerrequisitos

Haber pasado todos los tests hasta el hito anterior.

Explicación

En general, el despliegue de una aplicación incluirá una serie de servicios que invocarán a la aplicación, o bien serán invocados desde ella. Estos servicios van desde simples servidores web, hasta enrutadores más complejos o servicios para almacenar datos. Estos servicios tienen que componerse para poder desplegarse, y para ello hay una serie de herramientas; entre ellas, nos fijaremos en docker-compose es una herramienta útil en entornos de desarrollo o de prueba, e incluso en producción, siempre que no se requieran escalado de cada uno de los nodos u algún tipo de orquestación complicada, para lo que habría que usar Kubernetes.

No es la única herramienta de composición de servicios, y su utilidad es principalmente en entornos de desarrollo, más que de producción. Sin embargo, como introducción a los conceptos de despliegue es bastante útil.

Lo importante es que la creación de ese entorno de pruebas sea reproducible. 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 creado, es decir, la existencia de un programa real que implemente un servicio web de forma que se pueda monitorizar desde fuera si está funcionando o no.

En este hito tendrán que llevarse a la práctica diferentes conceptos relacionados con la composición de servicios.

  • Uso de contenedores de datos (o volúmenes), que permitan componer de forma variable las fuentes de datos que se van a usar en un clúster (o grupo de servicios) determinado.
  • Aplicación (map) de puertos, interna y externa, de forma que se puedan usar y testear los servicios.
  • Configuración del clúster para que todos los contenedores tengan la configuración que necesitan.
  • Configuración-como-código, para que los servicios sean capaces de arrancar correctamente independientemente del entorno en el que se encuentren (un clúster, una instancia, o un test local).

Entrega de la práctica

La URL del proyecto se subirá al fichero con el formato habitual.

El fichero docker-compose.yml debe estar en el directorio principal del proyecto. Habrá que añadir un test que construya el clúster y responda a algunas peticiones; en la clave test-docker-compose de cc.yaml habrá que indicar el nombre del fichero.

Valoración

  1. 2 puntos: documentación y justificación de la estructura del clúster.
  2. 2 puntos: documentación y justificación de la configuración de cada uno de los contenedores que lo componen.
  3. 2 puntos: documentación del fichero de composición.
  4. 2 puntos: testeo del mismo. Se recibirán los dos puntos completos si se testea más extensivamente.
  5. 2 puntos: pruebas de velocidad del mismo, grado de terminación del proyecto, despliegue a algún servicio cloud.

Si la aplicación no funciona, no se realiza de forma individual o no están los fuentes publicados, la práctica estará suspensa.