Del DevOps a F1 – Simulación

Por diciembre 8, 2017

A raíz de nuestra serie de artículos, hoy vamos a tratar dos temas de extrema importancia para los equipos de desarrollo: la integración sistémica y la falta de datos para pruebas. Estos dos factores que más causan tiempo de espera en los equipos de desarrollo, donde los Squads no consiguen desarrollar o probar sus piezas de software, debido a las integraciones con sistemas internos, externos o masas complejas de datos, a menudo, imposibles de ser creadas.

En los últimos años, las restricciones financieras establecidas en Fórmula 1 determinaron que las pruebas en pista (pruebas integradas y homologación) fuesen realizadas sólo en la pretemporada. Así, los ingenieros se vieron obligados a utilizar mucho más conceptos de simulación durante el desarrollo de los coches. Durante el año, utilizan el software Computational Fluid Dynamics (CFD) para simular de forma aplicada las partes del coche que fueron diseñadas con el CAD (Requisitos Ágiles). Después que se prueba la pieza, se construye y es ubicada en el túnel de viento (prueba del sistema).

Por lo tanto, ¿podemos traer el concepto de simulaciones para el desarrollo de software? Sí, existen dos enfoques importantes que nos pueden ayudar, que son la “Virtualización de Servicios” y la “generación de datos sintéticos”.

Vamos a hablar un poco sobre la Virtualización de Servicios (CFD y túnel de viento), que simula sistemas indisponibles en todo el ciclo de vida durante la propagación de software (SDLC), permitiendo a los equipos de desarrollo probar la integración y el desempeño de forma paralela, lo que proporciona el producto de manera más rápida, con más calidad y confiabilidad. Con esto, es posible disminuir los tiempos del ciclo de lanzamiento de software, aumentar la calidad y reducir los costos de la infraestructura.

Un servicio virtual se puede crear a partir de contratos, así como WSDL, WADL y Swagger, entre otros, al igual que grabaciones (proxy de escucha) y pares de request y response (solicitud y respuesta), entre otras formas. Esto permite que un servicio simulado se pueda crear de formas diferentes.

Los servicios virtualizados tendrán la capacidad de simular todas las situaciones de los sistemas que están siendo trabajados, permitiendo que escenarios complejos puedan ser simulados con rapidez y agilidad, haciendo los equipos más independientes y ágiles.

Y las masas de datos de simulación (simulaciones de carrera), ¿cómo podemos crearlas?

En F1, por más que se recoja la telemetría del año anterior, los datos siempre serán insuficientes en las simulaciones, porque las condiciones atmosféricas pueden ser alteradas y los componentes de los coches ya han sufrido evoluciones por cambios de reglas o mejoras identificadas por los ingenieros.

Por lo tanto, los datos colocados en el CFD, o en el túnel de viento, son datos sintéticos de simulaciones que pueden ocurrir en una carrera.

¿Es posible hacer lo mismo con el servicio virtualizado?

En este caso, se puede introducir información relativa a las pruebas que serán exploradas utilizando datos sintéticos.

Para que esto ocurra, utilizamos soluciones de Test Data Managment (TDM), que es la capacidad de retroalimentar servicios virtualizados con datos que simulen situaciones de prueba (datos de carrera), y también generar datos en la base del sistema que están siendo probados, sincronizando la información de ambas partes (sistemas y servicios virtualizados). Con esto, el sistema en prueba no tendrá restricciones de masas de datos y los servicios virtualizados quedarán sincronizados con datos, permitiendo que todas las pruebas planificadas se ejecuten sin restricciones

Pero, ¿qué son los datos sintéticos para un sistema?

Son datos creados a partir de las reglas de negocio, con datos no productivos, pudiendo simular situaciones iguales a las de producción. Es posible, también, simular situaciones futuras aún no existentes en ambientes productivos, o situaciones reales que ocurren diariamente, evitando burocracias ya conocidas en los procesos de reducción y enmascaramiento y haciendo la disponibilidad de masa de datos extremadamente ágil.

Por lo tanto, una buena solución de TDM debe tener la capacidad de generar los datos sintéticos necesarios y retroalimentar servicios virtualizados, reduciendo los costos con restricciones de datos y habilitando a los equipos de desarrollo para las metodologías ágiles.

La virtualización de servicios y el Test Data Managment son dos enfoques que juntos ayudarán a reducir las restricciones existentes con las integraciones sistémicas y la masa de datos, haciendo cada Squad independiente, reduciendo el tiempo de espera de los equipos de desarrollo, mejorando la calidad, reduciendo el costo y aumentando la satisfacción del cliente.

Escrito por Rogerio Sartori
Consultor Senior Pré-ventas DevOps en CA Technologies
LinkedIn: rogeriosartori