• No se han encontrado resultados

Resultados y dificultades encontradas

Durante el desarrollo de la memoria se han ido extrayendo y analizando los resultados a medida que se han ido alcanzando. Por ejemplo, se han analizado los resultados obtenidos y las dificultades encontradas en la implementación de cada API o las diferentes pruebas de software realizadas: unitarias, de integración y de rendimiento.

Además de los resultados parciales obtenidos en cada apartado, se ha conseguido que el entorno de desarrollo propuesto funcione tanto desde la red local del entorno, como desde una red externa. Gracias a esto, uno o más desarrolladores de APIs podrán utilizarlo sin tener que volver a comunicar y configurar todas las herramientas y componentes.

Se ha logrado aumentar el ritmo de implementación de las APIs gracias a la estrategia seguida: empezar con APIs sencillas y acabar desarrollando una API más compleja. De esta forma, el desarrollo de la API compleja no ha supuesto muchas dificultades.

También se ha conseguido llevar un control de versiones de documentos, código y ficheros de pruebas desde el inicio del proyecto, facilitando su gestión.

Un aspecto importante del proyecto que no se ve durante la carrera es el de integración continua. A partir del entorno de desarrollo creado se ha logrado llevar a cabo la práctica de integración continua que todo proyecto software debería incluir. Al principio del proyecto no se tuvo en cuenta la importancia de este componente, dado que se desconocían la mayor parte de sus características y funciones dentro de un proyecto software.

Al igual que una cadena de producción en una fábrica convencional sigue unos pasos definidos, para garantizar la calidad del software también es necesario seguir un proceso parecido. Esto se consigue con la integración continua, donde un producto software va escalando por los distintos entornos, hasta llegar al entorno de producción donde se comercializa. Aunque en este proyecto solo se ha definido el entorno de desarrollo, la práctica de integración continua seguiría el mismo camino que el planteado en este proyecto.

Tras concluir el proyecto, se ha observado la relación existente entre control de versiones e integración continúa. Para que exista la práctica de integración continua en un proyecto software es necesario que exista también un buen control de versiones. Sin control de versiones no puede haber integración continua, sin embargo, la existencia en un proyecto de un control de versiones, no implica la existencia de la práctica de integración continua. Aunque por lo estudiado y obtenido en este proyecto, se recomienda hacer uso de estos dos aspectos en un proyecto software.

93

Una vez diseñado y probado (pruebas unitarias y de integración) el backend de la API Gestión de Bancos con la herramienta MySQL Workbench, se procedió a realizar las pruebas de rendimiento. Se observó que al ejecutar más de un procedimiento almacenado de forma paralela (dos o más usuarios concurrentes), aparecían inconsistencias en algunos datos de la Base de Datos, por ejemplo, al actualizar el saldo de una cuenta.

Este problema era debido a un error de diseño en los procedimientos almacenados implementados, en donde no se habían tenido en cuenta los problemas de concurrencia. Esto se solucionó modificando el script SQL de los procedimientos almacenados, añadiendo un tratamiento especial a las transacciones que afectasen a otras tablas. En concreto, al principio de la transacción se añadió la sentencia start transaction; y al final la sentencia commit;. Para más detalles del método seguido, consultar el 9.4 donde se ha añadido el script SQL del backend de la API Gestión de Bancos con comentarios.

Otro problema que surgió casi al final de proyecto, era que la herramienta Jenkins se quedaba sin espacio en memoria para procesar todas las tareas de automatización definidas. Para solucionar el problema, se modificó el fichero de configuración de la herramienta para asignarle más memoria en el arranque (este fichero es jenkins.xml, accesible desde el directorio de instalación de Jenkins). En concreto, se actualizó la memoria de arranque de Jenkins a 1024MB, cuando antes estaba en 256MB.

La herramienta JMeter es adecuada para realizar pruebas de rendimiento sobre servicios. Sin embargo, la automatización de pruebas desde Jenkins con JMeter puede que no sea la mejor estrategia, ya que los ficheros de resultados que genera la ejecución de una prueba de rendimiento ocupan mucho espacio en disco, llegando a generar ficheros resultado de hasta 120MB en una prueba de 180 segundos.

De la forma en la que están configuradas las tareas de Jenkins (ver 9.2), el repositorio Git donde se vuelcan los ficheros de resultados se sobrecargaría en poco tiempo. Por lo tanto, la mejor solución para la automatización de pruebas de rendimiento con Jenkins, es mediante la herramienta SoapUI a través de la ejecución de pruebas de carga, en vez de los test de rendimineto de JMeter.

A pesar de esto, se ha encontrado una solución parcial a ese problema. Consiste en modificar el fichero de configuración de JMeter (jmeter.properties, accesible desde el directorio de instalación de JMeter), y modificar la fila jmeter.save.saveservice.subresults=false. Con esto, reducimos considerablemente el tamaño del archivo generado por la prueba de rendimiento al no guardar los subresultados.

Los inconvenientes encontrados a lo largo del proyecto se han solucionado con eficacia y ahora forman parte de los resultados obtenidos. Las soluciones permiten alcanzar los resultados más importantes: conseguir un entorno de trabajo funcional, y que éste pueda ser utilizado por otros desarrolladores más adelante. Con todo esto, se puede decir que los resultados obtenidos en el proyecto han sido muy satisfactorios.

Como conclusiones de este trabajo, destaca la capacidad de integrar de forma satisfactoria todos los componentes, protocolos, lenguajes y herramientas explicados en este documento. Para ello, se han aplicado conocimientos teóricos y prácticos adquiridos en el grado. También, se han aplicado nuevas herramientas y tecnologías que al principio del proyecto se desconocían y no se estudian durante la carrera.

94

Capítulo 7

En este capítulo se han extraído las conclusiones más relevantes del proyecto en base a los objetivos planteados en la introducción.