Introdução às soluções de Big Data
Imagine abrir sua caixa de e-mail todos os dias e encontrar uma média 500 mensagens de erros vindos de sistemas que sua equipe é responsável: o que fazer? Analisar uma a uma?
Com tantas mensagens de erro, o mais salutar seria primeiro priorizar aquelas mais graves e/ou com maior ocorrência, mas para fazer isso seria necessário ler todas as mensagens (se você tiver tempo hábil) ou colocar o computador para trabalhar para você e dar um resultado mais “mastigado”.
Eu optei por começar devagar e o primeiro passo seria tentar copiar os dados das mensagens nos e-mails em uma planilha do Excel para tentar encontrar padrões. Como abomino fazer CRTL+C e CRTL+V mais de um punhado de vezes, seria necessário criar alguma automação.
Primeiro, era necessário separar as mensagens de erros das outras mensagens de e-mail, então criei filtros no Outlook para isolar as mensagens de erro em uma pasta separada. Essa foi fácil.
Depois foi questão de, a partir do Outlook, abrir uma planilha do Excel via VBA e copiar o conteúdo do e-mail, depois de realizado um parsing simples, em cada linha da planilha. Isso permitia pelo menos limpar a caixa postal e ainda ter as informações.
Depois disso, foi um trabalho bastante manual tentar categorizar as mensagens de erro para conseguir identificar quais os tipos de problema que apresentavam maior ocorrências. Iniciei isso tentando categorizar manualmente usando palavras-chave e uma mistura de fórmulas como”=SE(SEERRO(LOCALIZAR(‘error types’!$B$2;C2);0)>0;1;0)”com “=SOMASE(‘EAI errors’!E2:E424;”>0″)”que realmente era uma dor de cabeça para acertar manualmente a cada nova extração do Outlook.
Antes de eu continuar massacrando dados, as mensagens de erro mudaram de lugar: a área de infraestrutura optou por parar de mandar mensagens de erro (algo inteligente, pela quantidade) e registrar as mesmas em um banco de dados relacional. Confesso que fiquei um pouco frustado pelo tempo empregado com Outlook e VBA, mas depois a vida ficou mais fácil já que os dados estavam mais bem estruturados e obtê-los era muito menos doloroso.
Facilitando a vida com Naive Bayes
Próximo passo era tentar categorizar os erros automaticamente. Eu já havia lido alguma coisa sobre o algoritmo de Naive Bayesno Bogofilter, anos atrás, para lidar com SPAM e me pareceu uma boa escolha.
Criei então um programa em Perl utilizando o módulo AI::Categorizer(cujo nome bem sugestivo ajudou na decisão de escolha). O script gerava como saída era um arquivo XML que eu importava novamente no Excel para gerar os gráficos… pelos menos era mais fácil acertar as fórmulas e eu não tinha que categorizar coisa nenhuma.
Categorizar não é tão fácil quanto parece: tive que quebrar a cabeça para criar training corpus que não se intrometessem um na vida do outro e categorizasse mensagens de forma errada, mesmo considerando que as mensagens de erro de uma categoria qualquer não mudavam tanto assim entre uma e outra, mas com certeza valeu a pena.
Já importar XML no Excel pode ser bem lento também, principalmente se seu computador é lento e o arquivo XML grande. Logo passei a usar MySQL como back-end para guardar os dados em tabelas normalizadas. Depois comecei a usar DBIx::Classpara não ter que fazer CRUD manualmente.
Finalmente, o trabalho restante seria criar gráficos para resumir os resultados e fornecer a gerência insumo para definir quais erros precisavam ter maior prioridade. Segue alguns exemplos de gráficos gerados com os dados categorizados abaixo:
Eque tal acompanhar se as correções estão sendo eficazes ou não?
Conclusões
Utilizar as ferramentas corretas para o trabalho é sempre o melhor, o problema é saber de antemão o que é mais adequado ou não. Mas com alguma experiência anterior, experimentação e paciência você pode promover o amadurecimento da sua aplicação aos poucos e ainda colher os resultados esperados durante o processo!
Espero também que você tenha percebido que mesmo que não tenha terabytes de dados para analisar, alguns megabytes são o suficiente para formar uma carga pesada demais para uma pessoa só analisar, e algumas ferramentas -também empregadas em Big Data-podem lhe ajudar.
Gostou do artigo? Veja agora como o Big Data em Saúde tem revolucionado o mercado!