Dados e web crawlers à sua disposição

Você provavelmente já viu ou pelo menos ouviu falar sobre o Impostômetro. Ele foi desenvolvido pelo IBPT – Instituto Brasileiro de Planejamento e Tributação, que atua no mercado há 27 anos. Porém, o IBPT não trabalha apenas com dados relativos à arrecadação; ele trabalha também com outros dados relacionados ao mercado, como a tributação de produtos. Mas você já se perguntou como funciona a tecnologia por trás do Impostômetro? Neste artigo vamos analisar a robusta arquitetura que possibilita toda essa Inteligência de Mercado.

 

Dados, dados e mais dados

Para entregar uma leitura inteligente dos dados, o IBPT precisa coletar a maior quantidade possível. Utilizando um web crawler, dados públicos e abertos são coletados de diversas fontes, como a Receita Federal do Brasil, Secretarias de Estado da Fazenda, Caixa Econômica Federal, entre outras. A partir dos sites correspondentes, são coletados dados relacionados à arrecadação e a operações B2B, entre outros.

A análise dos dados coletados, realizada por analistas com ferramentas Microsoft, gera um conhecimento que é devolvido ao mercado. Existem duas formas desse material ser entregue: quando as informações são relativas a um setor do mercado, ele se torna público. Por outro lado, quando existe uma requisição personalizada da informação, ele é entregue a um cliente específico.

Os web crawlers trabalham dentro do Service Fabric, realizando a coleta dos dados na web. Os dados então são processados e normalizados para que possam ser armazenados em um banco de dados SQL e a partir daí são transformados em informação.

O Service Fabric é responsável pela execução e resiliência das instâncias dos web crawlers. Com o Log Analytics é possível acompanhar em tempo real, em dashboards do Azure, a saúde dos programas em execução, bem como o status e a volumetria dos dados coletados. Por meio do Azure Analytics Service, esses dados são transformados em informação, que é compartilhada através de relatórios gerenciais do Power BI.

 

O exército de bots

Os web crawlers são executados em um cluster composto por 24 servidores Windows, virtualizados com o Hyper-V, os quais se conectam aos sites das fontes selecionadas, coletam os dados desejados e os enviam para uma fila do Service Bus. Um programa do SQL Server Integration Services (SSIS) conecta-se a essa fila para obter os dados coletados e gravá-los em um banco SQL. Todo esse processo é automatizado, incluindo o deploy dos robôs no Service Fabric.

Para se precaver em relação a possíveis bloqueios, o IBPT conta com um serviço que balanceia as requisições através de quase mil IPs exclusivos. O serviço é composto por mais de 200 servidores Linux Ubuntu, também virtualizados com o Hyper-V. Utilizando ferramentas open source, as requisições realizadas pelos robôs são distribuídas entre os IPs disponíveis.

A seguir você pode identificar o fluxo de coleta de dados:

um close up de um mapa

Para que as múltiplas instâncias dos web crawlers não coletem dados em duplicidade, as chaves de pesquisa que identificam os dados desejados, controladas em um banco de dados SQL, são enfileiradas no Service Bus através do SSIS. Antes de iniciar a captura, o robô conecta-se a uma fila e obtém uma chave para realizar a coleta. Terminado esse processo, ele envia o resultado no formato JSON para outra fila, garantindo assim o desacoplamento com o banco de dados. No SSIS, outro programa conecta-se à fila de resultados para obter e inserir os dados coletados no banco correspondente e, por fim, atualizar o status da chave correspondente.

Depois de tudo isso, os dados são tratados e enviados para um data warehouse – a partir deste, um cubo OLAP é disponibilizado através do SQL Server Analysis Services para que os analistas possam realizar seu trabalho utilizando, por exemplo, o Excel.

A seguir você pode visualizar a arquitetura como um todo:

um close up de um mapa

Azure, economia e performance

O Azure auxiliou o IBPT basicamente em dois pontos principais: economia e performance. Antigamente a empresa utilizava o serviço IaaS, porém com a nova arquitetura isso não foi mais necessário, gerando assim uma grande economia.

Em termos de performance, a empresa ganhou muito com a utilização dos web crawlers. O arquiteto de soluções do IBPT, Eduardo Ramiro de Assis, conta que “uma hora de trabalho de uma instância dos nossos robôs equivale a 200 dias de trabalho de um humano”. Mas isso não reduziu o quadro de funcionários da companhia, pelo contrário, como a empresa tornou-se mais madura e eficiente, foi possível aumentar a equipe, dedicando mais tempo para arquitetura e planejamento da solução em detrimento do tempo que era gasto no trabalho de coleta. Atualmente os robôs fazem esse trabalho, rodam no piloto automático e economizam tempo da empresa, permitindo que os funcionários concentrem suas forças em ações mais estratégicas e menos operacionais.

 


Autor: Microsoft Tech