Publicado em 25 de Outubro de 2018, por Denis.
1. Introdução
O Sistema Integrado de Gestão de Ações Judiciais - SINGAJ é um sistema de gestão jurídica utilizado para gerenciar todo o departamento jurídico e organização de processos da Secretaria Municipal de Assuntos Jurídicos da Prefeitura Municipal de Campinas (PMC). Ele é utilizado juntamente com o NetJur, um sistema integrado que extrai informações de processos dos tribunais relacionados a PMC, importando no SINGAJ, informações de processos capturados nos diários publicados pelos tribunais de justiça do estado de São Paulo permitindo o monitoramento de prazos, liminares, sinistros entre outros fatores jurídicos.
Com a utilização do SINGAJ, o departamento jurídico tem um ganho muito grande em agilidade além de grande importância para o acompanhamento dos andamentos dos processos, impedindo que os prazos sejam perdidos.
Devido a grande quantidade de informações, a possibilidade de buscar os dados do sistema é fundamental, portanto precisava de uma funcionalidade de busca de alta performance.
2. Como era feita a busca?
Antes da implantação da nova funcionalidade de busca, os usuários utilizavam a funcionalidade chamada “Busca Rápida”. Para o usuário utilizar essa funcionalidade era necessário acessar o menu da página principal e selecionar o que será procurado (processo, incidente, recurso, parte, entre outros). Após, era necessário escolher o critério de busca, dizendo se a palavra ou número que se desejava encontrar deveria estar no início, no meio ou em qualquer posição da informação que possivelmente constasse no sistema. Pesquisando, retornava uma lista de resultados do qual pode ser escolhido o item que se esperava, clicando e exibindo seu conteúdo, por exemplo, um processo jurídico.
3. Quais problemas existiam?
O procedimento de busca realizado pela “Busca Rápida” é uma das principais funcionalidades do sistema, muito utilizada pelos usuários e, conforme descrito acima, além de exigir muitos passos, estava se tornando mais lenta, visto que o sistema tem aumentado consideravelmente o volume de informações. Logo entendemos que seria preciso uma alternativa para evoluir o sistema com processamento de informações mais veloz e eficiente.
4. Como melhoramos e quais resultados?
Diante do problema apresentado, a Informática de Municípios Associados - IMA, com esforços da equipe de desenvolvimento do SINGAJ atuantes na Gerência de Sustentação e contando com o forte apoio do Product Owner da Secretaria Municipal de Assuntos Jurídicos, em 2018, criou uma solução para busca utilizando a tecnologia Elasticsearch.
O Elasticsearch permite a otimização de busca de dados utilizando sua base de dados não SQL própria. A definição encontrada no site oficial da ferramenta diz: “Elasticsearch is a distributed, RESTful search and analytics engine capable of solving a growing number of use cases.” (ELASTICSEARCH, 2018, online). Tradução livre “O Elasticsearch é um mecanismo distribuído de pesquisa e análise RESTful capaz de solucionar um número crescente de casos de uso.”
Analisando soluções, tinhamos como opções, além do Elasticsearch, o Apache Solr, porém após breve estudo realizado, observamos que ambos funcionam de maneira bem semelhante para busca textual utilizando o mesmo engine chamado Apache Lucene. Assim optamos pelo Elasticsearch devido a sua frequência de atualização de versões e sua alta utilização no mercado, garantindo assim um melhor suporte aos desenvolvedores. Além disso nossa equipe já tinha um prévio conhecimento para carga de dados no Elasticsearch diretamente da nossa base de dados Postgres.
Utilizamos também o Logstash para realizar a tarefa de carga e monitoramento do Postgres para o Elasticsearch garantindo que ao ocorrer mudança de dados no sistema SINGAJ, a atualização fosse executada na base do Elasticsearch mantendo a consistência. Para essa atualização automatizada de dados, foi necessária a criação de um campo no Postgres que é visível ao Elasticsearh e Triggers para cada campo criado na tabela a ser monitorada.
Assim que definidos os dados necessários para retornar em nosso resultado de busca, e estando a carga realizada no Elasticsearch, iniciamos o desenvolvimento de uma API para construção da busca no SINGAJ. Essa API IMA utiliza chamadas na API Rest disponibilizada pelo Elasticsearch, que por sua vez é responsável por todas as operações necessárias para a utilização da busca, retornando o resultado esperado da pesquisa em um pequeno delta de tempo. O tempo de retorno é muito menor se comparado a uma query em SQL comum. Foi criada uma API IMA em vez da utilização direta da API do Elasticsearch para possibilitar que outros projetos utilizem a funcionalidade além de prover uma maior segurança já utilizada por outros serviços do mesmo projeto de APIs.
Nas figuras 1 e 2 abaixo está o tempo de resposta da requisição da antiga funcionalidade e comparação com o tempo de resposta da nova funcionalidade com Elasticsearch. A medição foi realizada utilizando a ferramenta de debug do Google Chrome ao buscar partes de processos do sistema SINGAJ.
Para a medição foi escolhido o termo de busca “rald”.
Figura 1. Tempo de resposta da antiga funcionalidade entre 70.000ms e 80.000ms.
Figura 2. Tempo de resposta utilizando Elasticsearch entre 3.500ms e 4.000ms.
Essa Arquitetura foi pensada para que a utilização do Elasticsearch pudesse ser ampliada, possibilitando que outras partes do sistema e também outros sistemas ampliassem suas soluções, utilizando conceitos de Inteligência Artificial e mineração de dados, que exigem alta performance de processamento de dados, uma das principais características do Elasticsearch.
Para o SINGAJ a busca já está tendo um grande ganho em agilidade já que o tempo de retorno da busca em uma grande quantidade de dados é muito pequeno e em apenas um click ele consegue abrir a tela com os dados esperados.
Por fim, vale a pena destacar o trabalho feito em conjunto com o time de Devops e DBAs da IMA, que disponibilizaram os servidores e incorporaram os jobs de acordo com a estrutura planejada e solicitada além do suporte e monitoramento após a implantação. Também foi essencial o apoio de toda a Supervisão, Coordenação e Gerência durante todo desenvolvimento.
5. Conclusão
Este estudo de caso teve como objetivo prover ao usuário do SINGAJ maior agilidade e experiência, aumentando a eficiência nos quesitos propostos pelo sistema, e impulsionar trabalhos futuros. Esse trabalho foi o pioneiro a utilizar o Elasticsearch para aplicações da PMC aumentando a possibilidade de evolução tecnológica e ampliando o “know-how” dos profissionais da IMA, mantendo a coerência do objetivo tecnológico da empresa no contexto de mercado atual.
DENIS DE PAULA é Analista de Tecnologia da Informação Junior da área de Transformação Digital da Gerência de Sustentação.
Referência Bibliográfica
Elasticsearch. Open Source Search & Analytics · Elasticsearch. Disponível em: <https://www.elastic.co/products/elasticsearch>.
Logstash. Open Source Search & Analytics · Elasticsearch. Disponível em: <https://www.elastic.co/products/logstash>.
Solr is the popular, blazing-fast, open source enterprise search platform built on Apache Lucene™. Apache Lucene - Welcome to Apache Lucene. Disponível em: <http://lucene.apache.org/solr/>.
Comentar