O blog da AWS
Caso de Sucesso: Sistema de Pesquisa de Compras Governamentais
Apresentação Betha
A Betha Sistemas é especialista no desenvolvimento de soluções de tecnologia para a gestão pública. Conta com um portfólio de mais de 45 sistemas e seis aplicativos mobile, que tornam as atividades dos gestores e servidores públicos mais eficientes. Para oferecer ao mercado os melhores produtos, a Betha utiliza tecnologia cloud, machine learning, big data, internet das coisas, inteligência artificial e reconhecimento de voz e facial. Possui 35 anos de história, mais de 570 colaboradores, matriz em Criciúma/SC, seis filiais, 20 revendas parceiras, mais de três mil clientes, mais de 1,4 milhão de usuários e está presente em 19 estados brasileiros.
O problema
As leis que regem as compras e licitações relacionadas à gestão pública sofrem alterações de tempos em tempos, mas o que é imutável é a necessidade de zelar pelos recursos públicos. Na esfera municipal, além cumprir com os requisitos legais de licitações do levantamento de preços até a execução da compra, a preferência a fornecedores locais, por exemplo, a agricultura familiar, deve ser seguida.
Os gestores públicos, em diferentes setores de um mesmo órgão, seguem o rito de compras na esfera pública, que se inicia com o contato com os fornecedores locais para as cotações iniciais e a criação de um edital de compra.
O trabalho de levantamento de preços e busca de fornecedores é pouco eficiente, pois envolve checagem de preço com cada potencial participante, além da busca de novos fornecedores. Atualmente não existe uma base de consulta a esses dados. Muitas vezes acaba-se comprando repetidamente de um mesmo fornecedor, pois a identificação de novos não é uma tarefa trivial. Com isso, as compras podem não atingir a máxima eficiência desejada e a determinação se o preço ofertado é justo muitas vezes não é clara. Além disso, também não existe um meio simples de compartilhar essas informações com municípios vizinhos, o que tornaria todo o processo muito mais eficaz.
O desafio
O Painel de Preços Governamentais, sistema disponibilizado pelo Governo Federal, é a ferramenta padrão para esse processo, porém, a visão é voltada para o governo central, com poucos fornecedores a nível municipal e com a atualização trimestral de preços. Essas características criam algumas barreiras para o processo, como preços defasados, e ofertas inconsistentes ou inadequadas para demandas municipais.
O desafio encontrado foi o de oferecer uma ferramenta eficiente para as consultas dos municípios, ampliando a base de consultas disponível no Painel de Preços Governamentais, com informações mais dinâmicas, regionais e atualizadas diariamente.
A solução
Neste artigo será apresentada a arquitetura de um sistema que enriquece os dados do Painel de Compras Governamentais (dados abertos) com informações dos módulos de Compras e Contratos, componente da solução de GRP da Betha Sistemas.
A solução, combina informações registradas em quase uma centena de municípios, para consultar de forma unificada os produtos e preços disponibilizados pelo governo federal e dados da esfera municipal. Tudo isso de forma simples, integrado com um cadastro de fornecedores, trazendo informações de processos por meio de pesquisas eficientes e flexíveis.
O sistema utiliza, dentre outros, os serviços AWS Lambda, Amazon SNS, AWS Glue, Amazon S3, Amazon SQS, Amazon RDS PostgreSQL e Delta Lake (projeto de código aberto). O tempo entre a ideia e a produção foi de 5 meses.
Arquitetura da solução
Para fornecer uma solução completa foram utilizadas duas fontes diferentes: Base de Compras Governamentais do Governo Federal e o Sistema de Compras e Contratos da Betha Sistemas, consolidando dados no nível municipal de todos os clientes que utilizam continuamente o sistema.
A captura dos dados do Painel de Preços utiliza a API de compras governamentais (Dados abertos).
Com o serviço AWS Glue Workflow é possível definir um processo ETL com múltiplos jobs dentro de uma mesma entidade. A primeira parte do workflow funciona de forma cíclica. Ele é iniciado sob demanda de acordo com uma data marco, considerando atualizações trimestrais. Com esta data são geradas mensagens para uma fila do Amazon SQS (Simple Queue Service), contendo URLs para consulta, especificamente uma para cada dia. Um segundo job Spark consome as mensagens, realiza as chamadas API para obter os dados e armazena-os em um bucket do Amazon S3.
Os dados recuperados possuem uma estrutura normalizada. Após a primeira busca, é necessário realizar consultas adicionais. Por exemplo, após buscar as licitações, a pesquisa retorna referências para os itens licitados, que por sua vez retorna referências para o fornecedor vencedor do item. Dada a estrutura de dados disponibilizada na base de dados do Painel de Compras Governamentais, o processo é repetido diversas vezes, de forma automática, completando as informações necessárias.
Após a extração dos dados, é executado o processo que faz a transformação do Raw Data (armazenado em um bucket Amazon S3), desnormalizando os dados que serão consumidos pelo PostgreSQL. O resultado é armazenado em um novo bucket do Amazon S3 (Curated Data), para ser importado no banco de dados posteriormente.
Para garantir a consistência na execução no workflow, foi implementada uma função Lambda para, em caso de falha durante as chamadas de API, reiniciar a operação da etapa que parou, sem prejudicar o processo ETL.
Figura 1 – Arquitetura da Solução
Agregando dados da esfera municipal
Os sistemas de Compras e Contratos da Betha Sistemas trazem gestão e eficiência com relação às compras, licitações e execuções de contratos realizados pela Administração Pública.
Disponibilizar informações confiáveis para o usuário é um dos principais objetivos da solução. Em caso de alterações em contratos/licitações, os preços devem ser atualizados o mais rápido possível, para que não sejam criadas inconsistências.
Para que não fosse necessário realizar uma extração diária de todos os dados no banco da aplicação, foi utilizado o AWS DMS (Database Migration Service) para rastrear as modificações de registros nas tabelas de origem (Change Data Capture – CDC) e replicá-las para o Amazon S3. Em seguida, o tratamento dos dados internos das soluções de Compras e Contratos foi dividido em 2 Jobs AWS Glue:
Job de sincronização: A tarefa inicial em Spark reconstrói as tabelas da aplicação utilizando os arquivos de CDC e gera uma Delta Table para cada tabela da aplicação. As tabelas no formato Delta podem ser lidas via Spark SQL, além de registrar metadados sobre os eventos DMS já aplicados.
Com o uso do Delta Lake no processo de sincronização, foram mapeadas apenas as definições básicas da tabela, como nome e chaves primárias. Um único método processa as definições e aplica os eventos de inserts, updates e deletes que estão contidos nos arquivos do DMS. Não é necessário realizar nenhuma lógica para gerar queries de update ou delete. As manutenções neste job se resumem em adicionar uma linha de configuração ou adicionar/remover uma chave da tabela.
O AWS Glue permite configurar caminhos para integrar outros jars (Java Archives – bibliotecas) com o Spark, portanto os jars do Delta Lake são armazenados no Amazon S3 e importados para o job Spark.
Job de transformação: também em Spark, roda o ETL em cima das Delta Tables, gerando as visões que são importadas no banco relacional, fazendo os selects, agregações e transformações. O resultado é armazenado no bucket Curated Data.
Por fim, um processo python shell (Job de load) é executado, conectando no banco e chamando uma função que dispara as rotinas de exclusão de dados e atualizações nas views. Essa rotina vai consumir os dados das duas fontes, conectando-se ao bucket “Curated Data”.
Os dados de Compras Governamentais são carregados em uma instância Amazon RDS PostgreSQL, sistema escolhido pelos recursos e flexibilidade que oferece para a pesquisa textual, outra parte fundamental desta solução.
Materiais e serviços são cadastrados de diferentes formas entre os clientes. O usuário deve ser capaz de encontrá-los, mesmo com pequenas variações, por exemplo: nomes em plural, gênero, abreviações, etc.
Antes da carga nas tabelas, são removidos todos os dados onde a origem é a fonte que será atualizada. Isto garante que dados desatualizados ou municípios que deixaram de ser clientes da solução não sejam incluídos, por questões de conformidade com a Lei Geral de Proteção de Dados (LGPD). É importante destacar que os dados utilizados são públicos.
Esta arquitetura permite ter um histórico dos dados pelo tempo que for necessário, além de retroceder para uma determinada versão. Toda vez que os dados são atualizados em uma Delta Table, é gerada uma nova versão controlada por um arquivo de checkpoint. Isto possibilita que em caso de alguma inconsistência seja restaurada alguma versão anterior. Por exemplo, para retroceder 3 execuções anteriores (3 dias atrás), basta rodar uma consulta passando a versão desejada. Os componentes utilizados para o ETL permitem um acompanhamento e dimensionamento de recursos de acordo com o volume de dados e custos.
Considerações
A camada de dados foi concebida de modo a permitir que novas fontes de dados sejam plugadas. Portanto, os pipelines de dados rodam com frequências diferentes e são totalmente independentes.
O banco de pesquisa de preços atende a um micro serviço Java em Spring, que também pode ser escalado e apontar para diferentes versões.
Resultados
O alcance amplo de informações obtidas através da solução tem proporcionado uma experiência única para os usuários que realizam as cotações de preços, otimizando o tempo de realização da pesquisa bem como o resultado de um preço mais eficiente.
De acordo com a servidora do setor de Licitações da Prefeitura de Trombudo Central, Juliane Nicoladeli – “A ferramenta de pesquisa de preços é muito útil e nos ajuda de várias formas. A economia de tempo é um dos benefícios, porque nós não precisamos mais ligar para os fornecedores e justificar o motivo da ligação, o que acabava sendo uma tarefa demorada e algumas vezes estressante. O resultado da pesquisa também é mais confiável, porque a gente encontra todas as informações que precisa e de um jeito muito fácil e bem simples de usar”.
Com base em relatos de usuários, se observa que o tempo no processo de pesquisa de preços foi reduzido em até 60% – um processo de busca e contato com um fornecedor que levaria pelo menos 15 minutos, hoje leva menos de 5 minutos para obter o dado atualizado. A ferramenta está recebendo rapidamente uma grande adesão por parte dos clientes, superior a 70% da base instalada, com centenas de entidades realizando pesquisas no dia a dia.
Conclusão e Próximos Passos
O sistema demonstrou, utilizando uma arquitetura com capacidade de expansão automática, eliminando duplicações e considerando as peculiaridades de cada origem de dados, que a sinergia obtida por essa integração pode ampliar a qualidade das informações disponibilizadas além de aumentar a eficiência do processo como um todo.
A arquitetura modular do sistema de pesquisas de Compras Governamentais integra dados originários de dois sistemas diferentes, o Painel de Compras Governamentais e o Sistemas de Compras e Contratos da Betha Sistemas, e está pronto para expandir a sua abrangência, adicionando novas fontes de dados. Essa flexibilidade se traduz em uma oferta de informações mais ampla e confiável para os gestores públicos.
Sobre os Autores
Bruno Bitencourt, Cientista de Dados no setor de Tecnologia e Inovação na Betha Sistemas. Trabalha na área de tecnologia há mais de 7 anos. | |
Luan Figueredo, Arquiteto de software no setor de Tecnologia e Inovação na Betha Sistemas, atuando no desenvolvimento de aplicações e inovação há mais de 7 anos. | |
Wellington Zomer Nunes, Coordenador de Tecnologia no setor de Tecnologia e Inovação na Betha Sistemas, atuando no desenvolvimento de aplicações e inovação há mais de 14 anos. | |
Thiago da Hora Vieira, Arquiteto de Soluções da AWS, atua com o desenvolvimento dos parceiros do Setor Público. Trabalhou anteriormente em consultorias de TI como especialista em nuvem, banco de dados, infraestrutura, migração e desenvolvimento de software. Tem um interesse especial em Analytics, DevOps e Serverless. | |
Carlos Campana, Arquiteto de Soluções da AWS no time de Setor Publico com foco em ISV Partners. Atuando há mais de 20 anos em projetos de TI junto a Provedores de Serviços e empresas do Setor Público e Privado na América Latina, com especialização em redes. |