Tercer hito: Diseño y test de un microservicio

Descripción

Crear un microservicio sobre la base de la funcionalidad del hito anterior.

Prerrequisitos

Haber alcanzado el 60% de los objetivos del tema correspondiente tras haber realizado los ejercicios propuestos. Haber superado el hito anterior de la práctica.

Explicación

Sobre la base de la clase o funcionalidad hecha en la práctica anterior, en este hito lo esencial es diseñar una API consistente en una serie de rutas (en el caso de un API REST) o tareas (en el caso de un microservicio basado en eventos), testearlo exhaustivamente usando una biblioteca específica que te provea el microservicio o bien una biblioteca genérica, y crear la infraestructura necesaria para comenzar a ejecutarlo.

En cuanto a este último, se debe de usar el mismo fichero de construcción o *akefile que se haya usado en el hito anterior, añadiendo una tarea start, que suele ser estándar para arrancar. Esto también permite, por ejemplo, usar uno de los sistemas de integración continua que se hayan creado para hacer una ejecución de prueba, en vez de ejecutar los tests. En general, todas las tareas que se ejecuten desde el sistema de integración continua deberán lanzar órdenes de esta herramienta que ejecute tareas.

Aparte de las rutas que se hayan añadido, el servicio web debe cumplir también un requisito muy importante: debe incluir una ruta /status que devuelva el JSON { "status": "OK" } de forma que se pueda comprobar de forma fehaciente que se ha desplegado de forma correcta. Esto se comprobará automáticamente en el hito siguiente.

“Como este” no significa exactamente este. Tendrás que sustituir el valor de ruta por las rutas que haya en la aplicación y el valor por un JSON que efectivamente se devuelva en esa ruta.

El objetivo secundario es poner en práctica las principales técnicas usadas hoy en día para despliegue de aplicaciones web u otro tipo de aplicaciones, basadas principalmente en interfaces REST con clientes basados en JS y, sobre todo, en marcos de aplicaciones tales como Dancer2, Ruby on Rails, Express o Django, dejando de lado servidores web específicos y de propósito general como Apache o nginx (que se pueden usar, en todo caso, en el primer caso para aplicaciones que incluyan múltiples lenguajes o marcos y en segundo, sobre todo, para contenido estático). Un tercer objetivo secundario es aprender a usar en producción GitHub y otras herramientas de desarrollo colaborativo y liberar el resultado del proyecto.

Como ya el proyecto ha llegado a un estado en el cual se puede desplegar como un servicio web, habrá que documentar cómo las rutas se ajustan a las historias de usuario que se hayan planteado desde el principio. No hace falta que en este punto todos los tests e historias estén implementadas, pero sí las suficientes para que se puedan llevar a cabo estos tests de integración.

Se recuerda que en este caso, la integración de la que se habla es la de otras bibliotecas que dependan de la clase o clases que sean la base del servicio web, y el propio servicio web. No es necesario ningún otro tipo de servicio, y especialmente desaconsejamos, en esta fase, integrar almacenes de datos de cualquier tipo.

Entrega de la práctica

Subir los fuentes a GitHub y hacer un pull request al documento que describa las prácticas y que se anunciará en la web de la asignatura.

Valoración

Si la aplicación no funciona o hay plagio o trabajo en común, la práctica estará suspensa.

Se recuerda también que este es un hito de un proyecto, y como tal los tests para este hito incluyen los de todos los anteriores; el proyecto tendrá que seguir desarrollándose de acuerdo a lo indicado en el hito anterior y tener como mínimo la estructura que se creó en el hito 1.

En este último caso no hay por qué alterar nada, aunque sí si se decide, a mitad de la asignatura, cambiar de proyecto. Los tests se pasan para todos los hitos, así que habrá que tenerlo en cuenta.

Reenvío

Si ya se ha entregado y corregido la práctica y se quiere subir nota, se reenviará siguiendo estas instrucciones.