Do DevOps a F1 – Simulando

by Dezembro 8, 2017

Dando sequência à nossa série de artigos, hoje iremos abordar dois assuntos de extrema importância para os times de desenvolvimento que são: a integração sistêmica e a falta de dados para testes. Esses dois fatores que mais causam tempo de espera nos times de desenvolvimento, onde os Squads não conseguem desenvolver ou testar seus pedaços (peças) de software – devido às integrações com sistemas internos, externos ou massas de dados complexas, muitas vezes, impossíveis de serem criadas.


Nos últimos anos, as restrições financeiras estabelecidas no Circo da Fórmula 1, determinaram que os testes em pista (testes integrados e homologação) fossem realizados apenas na pré-temporada. Assim, engenheiros foram forçados a utilizar muito mais conceitos de simulação durante o desenvolvimento dos carros. Durante o ano, utilizam o software Computational Fluid Dynamics (CFD) para simular de forma aplicada as partes do carro que foram desenhadas com o CAD (Requisitos Ágeis). Depois que a peça é testada, ela é construída e colocada no túnel de vento (teste de sistema).

Portanto, podemos trazer o conceito de simulações para o desenvolvimento de software? Sim, existem duas abordagens importantes que podem nos ajudar que são a “Virtualização de Serviços” e a “Geração de dados sintéticos”.

Vamos falar um pouco sobre a “Virtualização de serviços” (CFD e Túnel de Vento), que simula sistemas indisponíveis em todo o ciclo da vida durante a propagação de software (SDLC), permitindo que as equipes de desenvolvimento testem a integração e o desempenho de forma paralela – o que disponibiliza o produto de maneira mais rápida, com mais qualidade e confiabilidade. Com isso, é possível diminuir os tempos do ciclo de lançamento de softwares, aumentar a qualidade e reduzir os custos da infraestrutura.

Um serviço virtual pode ser criado a partir de contratos (WSDL, WADL, Swagger por exemplo), gravações (proxy de escuta), pares de request e response, entre outras formas. Isto permite que um serviço simulado possa ser criado de formas diferentes.

Os serviços virtualizados terão a capacidade de simular todas as situações dos sistemas que estão sendo trabalhados, permitindo que cenários complexos possam ser simulados com rapidez e agilidade, tornando os times mais independentes e ágeis.

E as massas de dados de simulação (simulações de corrida), como podemos criar?

Na F1, por mais que se colete a telemetria do ano anterior, os dados sempre serão insuficientes nas simulações, porque as condições atmosféricas podem ser alteradas e os componentes dos carros já sofreram evoluções, por mudanças de regras ou melhorias identificadas pelos engenheiros.

Portanto, os dados colocados no CFD, ou no Túnel de Vento, são dados sintéticos de simulações que podem ocorrer em uma corrida.

É possível fazer o mesmo com o serviço virtualizado?

Nesse caso, é possível inserir informações relativas sobre os testes que serão explorados, utilizando dados sintéticos.

Para que isto ocorra, utilizamos soluções de Test Data Managment (TDM), que é a capacidade de retroalimentar serviços virtualizados com dados que simulem situações de testes (dados de corrida), e também gerar dados na base do sistema que está sendo testado, sincronizando as informações de ambas as partes (sistemas e serviço virtualizado). Com isto, o sistema em testes não terá restrições de massas de dados e os serviços virtualizados ficarão sincronizados com dados, permitindo que todos os testes planejados sejam executados sem restrições

Mas o que são os dados sintéticos para um sistema?

São dados criados a partir das regras de negócio, com dados não produtivos, podendo simular situações iguais às de produção. É possível, também, simular situações futuras ainda não existentes em ambientes produtivos, ou situações reais que ocorrem diariamente, evitando burocracias já conhecidas nos processos de redução e mascaramento e tornando a disponibilização de massa de dados extremamente ágil.

Portanto, uma boa solução de TDM deve ter a capacidade de gerar os dados sintéticos necessários e retroalimentar serviços virtualizados, reduzindo os custos com restrições de dados e habilitando os times de desenvolvimento às metodologias ágeis.

Virtualização de Serviços e Test Data Managment são duas abordagens que juntas irão ajudar a reduzir as restrições existentes com integrações sistêmicas e massa de dados, tornando cada Squad independente, reduzindo o wait time dos times de desenvolvimento, melhorando a qualidade, reduzindo o custo e aumentando a satisfação do cliente.

Escrito por Rogerio Sartori
Consultor Sênior Pré-vendas DevOps em CA Technologies
LinkedIn: rogeriosartori