Arquitetura de Dados

Como ajudamos o time de Previdência a otimizar seus projetos para lidar com alta demanda, reduzir acoplamentos e aumentar a resiliência

RESUMO

Para atender às metas de performance e escalabilidade dos projetos do time de Previdência, identificamos a necessidade de otimizar APIs e serviços críticos a fim de suportar o aumento previsto de volume de acesso. As implementações atuais apresentavam limitações de escalabilidade e tempos de resposta acima do ideal em operações de consulta intensiva.
Os alocados conduziram ajustes nos fluxos de processamento e na comunicação com os bancos de dados, reduzindo a latência e aprimorando a eficiência das consultas. Com isso, as soluções do time passam a sustentar altas cargas de trabalho sem perda de desempenho, garantindo consistência e rapidez na experiência do usuário.

Status
Em andamento
Sponsor: Eduardo Fontenelle

Situação (antes da nossa atuação)

O time de Previdência operava uma série de APIs responsáveis por operações críticas como compras, consultas de propostas e movimentações em fundos. Essas interfaces sustentavam o core de atendimento da área, mas começaram a sofrer com limitações diante do crescimento acelerado de usuários e transações.

A infraestrutura era híbrida: parte dos serviços já havia migrado para a nuvem, enquanto outros ainda rodavam on-premise. Esse cenário, somado à multiplicidade de APIs e à alta dependência de serviços externos — fora do domínio do time de Previdência —, tornava a operação complexa e expunha o sistema a diversos pontos de falha.

Embora os projetos fossem tecnicamente separados, com responsabilidades bem definidas, o ecossistema como um todo apresentava forte interdependência. O uso intensivo de bancos distintos, acoplamentos contextuais e o crescente volume de dados geravam desafios significativos de performance, estabilidade e evolução arquitetural.

Implicações

As limitações de escalabilidade do ambiente híbrido comprometiam o cumprimento dos SLAs em momentos de alta demanda, principalmente em fluxos sensíveis como consultas de propostas e movimentações financeiras. A latência elevada em endpoints estratégicos impactava diretamente a experiência do usuário final e a fluidez dos atendimentos.

A complexidade das queries SQL, combinada ao uso ineficiente de recursos de banco e à aplicação limitada de cache, resultava em sobrecarga de CPU e IO, aumentando os riscos de instabilidade e degradando o desempenho do sistema como um todo. Essa situação tornava especialmente crítica a operação em horários de pico.

Além disso, a dependência de múltiplos serviços externos e a ausência de uma arquitetura resiliente dificultavam a manutenção e a evolução dos sistemas. Isso elevava os custos operacionais e aumentava o risco de falhas em cadeia, comprometendo a confiabilidade da plataforma e a confiança dos parceiros de negócio.

O que fizemos

Iniciamos com uma reestruturação dos principais endpoints e das consultas SQL associadas, com foco na eficiência e redução de latência. Otimizamos instruções SQL, aplicamos índices direcionados e simplificamos joins, além de implementar paginação e projeções seletivas de campos, reduzindo significativamente os payloads e evitando overfetching.

Desenvolvemos uma camada de cache adaptativo, capaz de identificar padrões de requisições com filtros dinâmicos e armazenar os resultados de alta frequência. Essa camada foi integrada a eventos de domínio, permitindo invalidações inteligentes e reduzindo o número de acessos repetitivos ao banco de dados.

Do ponto de vista arquitetural, trabalhamos no desacoplamento entre serviços e no aumento da resiliência do ecossistema. Introduzimos contratos bem definidos (DTOs e eventos), mecanismos de processamento assíncrono e estratégias como circuit breaker, retry e health checks contínuos. Isso reduziu as dependências diretas e aumentou a estabilidade em cenários adversos.

Também elaboramos um plano de escalabilidade e migração gradual para a nuvem. Definimos uma topologia elástica com uso de load balancers e auto-scale, e utilizamos infraestrutura como código para facilitar a replicação de ambientes. Por fim, ajustamos a comunicação com o banco, otimizando o schema e os parâmetros de execução para aproveitar melhor o cache de planos.

Entregáveis

  • Endpoints críticos reestruturados, com redução significativa nos tempos de resposta.
  • Camada de cache adaptativo em produção, diminuindo substancialmente o volume de consultas repetitivas ao banco.
  • Arquitetura mais desacoplada, com código simplificado e serviços mais resilientes.
  • Plano de escalabilidade validado, com diretrizes para transição progressiva do on-premise para a nuvem.
  • Infraestrutura como código implementada, permitindo rápida replicação e consistência entre ambientes.

Feedbacks

O time de Previdência destacou o ganho de performance como um dos principais resultados do trabalho, classificando-o como “notável” em diferentes fluxos de negócio. Também relataram uma melhora visível na estabilidade dos sistemas e na fluidez das entregas após a implementação das soluções.

A percepção interna foi de avanço importante em maturidade técnica e operacional, com elogios à clareza das propostas e à condução das mudanças. A nova estrutura proporcionou mais confiança para lidar com picos de demanda e impulsionou discussões sobre futuras evoluções da arquitetura.

CLIENTE

Confira o cliente que está associado a este case:

CONSULTORES E ENGENHEIROS

Confira os consultores e engenheiros que participaram deste case:

Desenvolvedor .NET
0
Gostaríamos de ouvir sua opinião!x

ACESSO RESTRITO

Esse conteúdo é de acesso restrito à equipe de colaboradores da EximiaCo.

Trabalha na EximiaCo? Então conecte-se com sua conta:

Tenho interesse em conversar

Se você está querendo gerar mais resultados através da tecnologia, preencha este formulário que um de nossos consultores entrará em contato com você:

Área de colaboradores

Esse ambiente é de acesso restrito à equipe de colaboradores da EximiaCo.

Trabalha na EximiaCo? Então conecte-se com sua conta: