Queremos tener un servicio web Restful que proporcione servicio a una futura aplicación con la que los clientes puedan ver los productos ofertados, comprar o visualizar sus compras anteriores y gestionar las ventas de la tienda.
-
En el proyecto nos vamos a basar en una arquitectura basada en microservicios, vamos a intentar implementar varios microservicios.
-
Enlace a la documentación extendida de la arquitectura.
- Para la integración continua en Ruby, vamos a usar Travis
- Para la integración continua en Python, vamos a usar Circleci.
Automatizar la ejecución:
buildtool: Catalogo/rakefile # Rake para Ruby
buildtool: Cesta/tasks.py # Invoke para Python
Enlace a la documentación extendida de la integración continua de mi proyecto.
Hemos levantado nuestro microservicio Catalogo, en el cual usamos Ruby. Usamos foreman como administrador, este llama al gestor de procesos web rackup, por último lo hemos automatizado incluyéndolo en nuestro archivo Rakefile.
Para levantar procesos web:
rake foreman env={numero de procesos}
Enlace a la documentación extendida del microservicio Catalogo
Desplegamos nuestro microservicio en un contenedor Docker, lo subimos al registro de Docker-Hub y por último lo hemos desplegado el contenedor Docker en Heroku.
- Contenedor: https://hub.docker.com/r/mati3/webproject
Enlace a la documentación extendida del contenedor de mi proyecto.
Prestaciones: Cesta/taurus.yml
Enlace a la documentación extendida del microservicio Cesta
Hemos medido las prestaciones del microservicio nombrado con Taurus. Se estimaba como buen rendimiento unas 1000 peticiones/s con 10 usuarios concurrentes. Después de algunos ajustes se ha alcanzado la meta propuesta.
Enlace a la documentación extendida de la medición de prestaciones
Hemos realizado dos despliegues, uno en local y otro en azure, hemos elegido Vagrant para la orquestación de maquinas virtuales, para el aprovisionamiento Ansible, para el despliegue Fabric. Posteriormente creamos un script que gestiona todo en conjunto.
Enlace a la documentación extendida Provición y Despliegue