SITUAÇÃO (ANTES DA NOSSA ATUAÇÃO)
A Icatu Seguros tinha uma rotina de processamento de lote judicial, que era executada um vez por mês. A execução desse processo, levava cerca de 17 horas de duração, causando diversos impactos negativos no banco de dados, pois era inviável utilizar o sistema enquanto o processamento do lote estivesse executando. A ausência de índices assertivos para determinadas consultas, bem como alguns padrões de escrita de código, utilização de cursores e processamento linha a linha de cada movimento, tornava o processo muito lento e oneroso para o banco de dados gerando uma série de bloqueios.
IMPLICAÇÕES
A escrita do código para bancos de dados relacionais, utilizando essa abordagem row-by-row, gera um impacto muito negativo no ambiente como um todo. Apesar do baixo processamento, a execução do código tende a ser morosa, levando muito mais tempo do que realmente se faz necessário para recuperar e processar os resultados das consultas. Ainda a ausências de índices assertivos para as consultas em questões, fazia com que uma grande massa de dados fosse lida para processar poucas linhas, gerando bloqueios desnecessários de registros no banco de dados, e em alguns casos, tabelas inteiras.
O QUE FIZEMOS
A abordagem da EximiaCo nesse projeto, foi literalmente colocar a mão na massa, para reescrever milhares de linhas de código em procedures no banco de dados. Após uma análise detalhada elencou-se os principais gargalos do processo. na qual proveria um ganho substancial de tempo de processamento e uso de recursos do ambiente do banco de dados. Durante todo processo foram feitas entregas incrementais do código refatorado em que foi possível constatar uma melhora consideravel no tempo de duração do processamento. Últimos testes todo o processo foi feito em cerca de uma hora no ambiente de testes. O processo de refatoração foi fundamental também para aprimorar o conhecimento da equipe de desenvolvimento, mostrando como evitar determinadas armadilhas, assim como a forma correta de desenvolver para banco de dados, utilizando uma abordagem set-based.
ENTREGÁVEIS
O trabalho ainda está em fase de desenvolvimento, apesar dos ganhos já se mostrarem muito interessantes:
Entregas Incrementais: Devido a complexidade do código (milhares de linhas), as entregas estão sendo incrementais, sendo feito diversos testes a cada procedure alterada.
Confiabilidade: Todo código que foi refatorado é submetido a testes rigorosos não apenas de performance, mas também garantido a confiança em relação ao código anterior.
Sustentabilidade: A criação de índices assertivos, se torna primordial para garantir a sustentabilidade do sistema, mesmo com o constante crescimento do volume de dados no banco de dados. Isso dá mais segurança que para cada novo mês, a duração total do processamento não aumente com o passar do tempo.
Disseminação do Conhecimento: Todo código alterado é discutido com a equipe de desenvolvimento, mostrando os benefícios alcançados. Essa constante discussão aumenta o conhecimento da equipe no desenvolvimento diário das suas tarefas, visando entregas com mais qualidade e performance, minimizando os problemas no ambiente do banco de dados.
CHANGELOG
O projeto encontra-se finalizado no momento. O resultado final foi a redução de uma rotina de 17 horas, para 20 minutos, o tempo total de execução.