Objetivo
Nuestro cliente ofrece sus vehículos industriales en innumerables mercados internacionales de innumerables formas. Los distribuidores pueden proporcionar diferentes descuentos tramitados, por un lado, según las estrategias del grupo empresarial y, por otro lado, según las características regionales y las reglas de los mercados locales.
El objetivo es establecer un proceso unificado que abarque todos los sistemas iniciales y finales, para que los distribuidores puedan presentar una oferta al cliente en un plazo de 24 horas.
Proceso de descuento en el pedido de vehículos industriales.Fuente: Reproducción propia
Contribución de Novatec
Equipo de proyecto y procedimiento
El equipo, a excepción del propietario del producto (PO), está compuesto solo por trabajadores de Novatec. Así fluyen todos los requisitos del ámbito técnico a la lista de tareas pendientes por medio de dicho PO y Novatec se encarga de la implantación y ejecución técnicas. Durante el desarrollo han evolucionado continuamente el equipo, la plataforma, el proceso y el producto.
Un buen ejemplo de esa evolución es el proceso de desarrollo: al principio, usamos un planteamiento scrum con las reuniones periódicas como Daily-StandUp, Sprint-Review y Sprint-Retro, además de reuniones periódicas de perfeccionamiento para especificar el historial del usuario y aclarar los requisitos.
A petición del cliente, esto se modificó durante el proyecto y se instauró un procedimiento en el que los requisitos se administraron por medio de un Kanban-Board ejecutado en Jira. No se siguieron planificando Sprints, sino que la planificación de versión y lanzamiento se acordó en plazos fijos.
Resultado de este cambio
- Más versatilidad y flexibilidad para seleccionar el historial del usuario que implantar en la planificación por medio de Kanban-Board.
- La gestión más rápida de incidentes recién ocurridos por medio de un pipeline especial de procesamiento de parche rápido.
Causas de este cambio
El proyecto llegó en aguas tranquilas y el resto de lanzamientos del software se pudo planificar mejor. La flexibilidad que se requería al principio, que se consiguió al usar scrum, ya no era necesaria.
Básicamente, opinamos que las reuniones periódicas de perfeccionamiento en proyectos scrum son muy valiosas y disminuyen considerablemente la necesidad de mejoras posteriores. Por eso, no hay que perder de vista el contexto del proyecto y las circunstancias en cuestión al elegir e instaurar el procedimiento óptimo según corresponda. También podría requerirse cambiarlo a lo largo de un proyecto de desarrollo de software. Como en el caso que hemos descrito aquí, siempre lo tenemos presente.
Conceptos de diseño y arquitectura
Para facilitarles a los usuarios el acceso lo máximo posible, desarrollaremos, en un proceso ágil de diseño (diseño UX), conceptos de interacción y las interfaces de usuarios correspondientes para que el manejo sea lo más intuitivo posible. La aplicación web se desarrollará en Angular con TypeScript. Con el fin de mejorar el rendimiento, usaremos la programación reactiva.
El backend está compuesto por microservicios ejecutables con Spring Boot en Java. El BPM-Engine utilizado es Camunda. La aplicación funcionará entre contenedores docker en un clúster Kubernetes en una nube híbrida. Pondremos en práctica el enfoque de diseño guiado por el dominio para desarrollar el backend. El frontend se manejará conforme al principio HATEOAS (hipertexto como motor del estado de la aplicación, «Hypertext As The Engine Of Application State»).
Para un servicio especial de backend usamos Node.js. Un microservicio en el que se haya implementado genera para el usuario final un PDF del descuento para impresión y archivo. Para que el PDF coincida exactamente con la vista HTML utilizamos Puppeteer.
Con pipelines de CI/CD aseguramos la creación y suministro completamente automáticos de la aplicación. Para ello empleamos enfoques de infraestructura como código. Monitorizamos la aplicación en base a un stack compuesto por Kibana, AppDynamics y Prometheus con Granfana. Esto nos ayuda durante el funcionamiento de la aplicación, del que nuestro equipo es responsable todos los días.
Hemos aumentado aún más el rendimiento de la aplicación introduciendo patrones CRQS e implantado la separación de los procesos de lectura y escritura. Y es que los procesos de lectura iban cada vez más lentos, ya que creció la complejidad de la red de la entidad, cada vez fluían más datos en el sistema y algunos usuarios finales hicieron miles de solicitudes de descuento. Nuestra solución se basa en facilitar una vista materializada que solo se actualiza periódicamente. Para que la cantidad de datos siga siendo baja se implantó también paginación backend. Gracias a esos cambios, disminuyeron los periodos de respuesta de la pantalla, que al principio eran de hasta 30 segundos, a milisegundos.
Resultado
La solución que establecemos emplea un proceso de negocio basado en Camunda, que unifica los diferentes procesos locales y pone a disposición del usuario las funciones siguientes:
- Elaborar y atender solicitudes de descuento según el caso y derivarlas para su autorización al departamento que corresponda.
- Añadir información adicional en los campos de texto mientras se elabora la solicitud.
- Hacer el seguimiento del estado de las solicitudes de descuento y ver si se han autorizado.
- Hacer el seguimiento de la situación general de las solicitudes conforme al mercado objetivo local, distribuidores o usuarios.
- Descargar datos para informes de Excel.
- Elaborar promociones de venta, contratos marco y campañas y transmitirlas para su autorización a la dirección de ventas encargada en el mercado objetivo.
A la vez que el proyecto, se ha llevado a cabo un agile empowerment. Este ha sido el primer proyecto ágil en el sector del cliente con éxito en la fase de producción.
Su persona de contacto

Fabiola Saucedo Carmona
Director Digital Product Development