Herramientas
Lenguaje de programación
El lenguaje con el que se van a desarrollar los distintos microservicios va a ser Python. Tras valorar otras opciones como Node.js, Ruby o Go, y observar algunas comparativas.
La versión escogida será Python 3.6, por lo que será la versión mínima requerida, siendo compatible con las versiones superiores. De esta forma quedará establecido:
- Mínima: Python 3.6.
- Máxima: Python 3.9.
Por lo tanto, las herramientas que se escogan a continuación buscarán obtener la mayor integración natural posible con el lenguaje.
Gestor de tareas
El gestor de tareas empleado será Invoke. Se han examinado otras herramientas, realizado una comparativa y realizado la decisión, tal y como se puede ver aquí.
Biblioteca de aserciones
Como biblioteca de aserciones se ha decidido utilizar assertpy, tras realizar una comparativa con otras opciones, junto a las aserciones estándar de Python, tal y como se puede ver aquí.
Marco de pruebas
Se ha escogido como marco de pruebas Pytest, tras realizar un análisis de las diferentes opciones disponibles, el cual se puede ver aquí.
Contenerización Docker
Para la contenerización del proyecto, se ha decidido utilizar dos registros distintos Docker Hub y GitHub Container Registry, tras realizar un estudio sobre la imagen base de Docker que se puede ver aquí.
La información se organiza de la siguiente forma:
- Documentación sobre Dockerfile
- Docker Hub y automatización de subidas
- Github Container Registry y automatización de subidas
Integración continua
Se ha decidido utilizar varias herramientas de CI, entre las cuales se encuentran:
Además se puede encontrar un estudio sobre las herramientas CI existentes.
Por último se puede observar una documentación sobre la integración del gestor de tareas con las herramientas de CI y el aprovechamiento del contenedor Docker para CI.