Resumo Executivo

06 de maio de 2026

CQRS para Escalabilidade e Desempenho em Bioinformática

Luis Felipe Feliciano da Silva; Eduardo Fernando Mendes

Resumo elaborado pela ferramenta ResumeAI, solução de inteligência artificial desenvolvida pelo Instituto Pecege voltada à síntese e redação.

A crescente demanda por aplicações web eficientes e escaláveis tem desafiado os padrões arquiteturais tradicionais, forçando a análise de compromissos entre soluções que não possuem uma melhor prática definida (Ford et al., 2022). A essência dessa dificuldade reside na complexidade do próprio domínio do problema, sendo que a chave para controlá-la é um modelo de domínio eficaz que ofereça aos desenvolvedores a alavancagem necessária para lidar com lógicas de negócio intrincadas (Evans, 2004). Em ambientes altamente especializados, como laboratórios de genética e cardiologia molecular, o volume de dados cresce de forma exponencial, e sistemas baseados na arquitetura tradicional de criação, leitura, atualização e exclusão frequentemente enfrentam gargalos severos de performance e escalabilidade. Além da complexidade inerente à gestão de concorrência, observam-se mecanismos ineficientes de recuperação de dados, especialmente em aplicações de grande escala (Jayaraman e Sharma, 2025). Esse cenário exige a investigação de abordagens alternativas, como o padrão de segregação de responsabilidade de comando e consulta, que propõe a separação das responsabilidades de escrita e leitura de dados para otimizar ambas as operações de forma independente (Vernon, 2013).

A fundamentação teórica que sustenta a necessidade de evolução arquitetural em sistemas de bioinformática aponta que, embora existam benefícios documentados sobre o uso de modelos segregados em sistemas corporativos, há uma lacuna na literatura sobre a aplicação prática e comparativa em cenários com altíssima carga de leitura e dados genômicos. A maioria das discussões acadêmicas limita-se a comparar modelos básicos, ignorando o potencial de otimizações táticas, como a indexação profunda, que podem melhorar significativamente o desempenho do modelo tradicional antes de uma transição completa para arquiteturas mais complexas (Kumar, 2019). Portanto, torna-se imperativo confrontar modelos de segregação não apenas com estruturas simplistas, mas com versões otimizadas de sistemas convencionais, refletindo um cenário de desenvolvimento mais realista e desafiador. A justificativa para tal análise reside na busca por eficiência operacional em sistemas que processam milhões de variantes genéticas, onde a latência na consulta impacta diretamente a velocidade do diagnóstico clínico e da pesquisa científica. O objetivo central reside em analisar em que medida a segregação de comandos e consultas supera os gargalos de um sistema convencional otimizado em um ambiente de bioinformática com grande volume de dados.

A metodologia adotada para esta investigação consistiu em um estudo de caso, abordagem considerada adequada para a análise aprofundada de fenômenos em ambientes complexos, permitindo compreender relações causais em situações nas quais a experimentação controlada não é viável (Yin, 2013). O estudo foi aplicado a um cenário real de desenvolvimento de software, com foco na avaliação das decisões arquiteturais adotadas no gerenciamento e estruturação de interfaces de programação de aplicações. A pesquisa concentrou-se em um dos sistemas internos utilizados em um laboratório de genética e cardiologia molecular, responsável pelo armazenamento e análise de variantes genéticas. Este laboratório foi selecionado por conveniência de acesso e por representar um cenário real cujos desafios de escalabilidade com grandes volumes de dados são típicos da área de bioinformática. O sistema original seguia o modelo de responsabilidade única para leitura e escrita, organizado em camadas de responsabilidade, um padrão clássico de arquitetura de software corporativo (Fowler, 2002).

O conjunto de dados analisado foi composto por documentos no formato de notação de objetos de JavaScript armazenados em uma coleção de banco de dados não relacional. Cada documento representava uma variante genética e possuía uma estrutura complexa, contendo campos-chave para a análise bioinformática, tais como cromossomo, posição, gene e identificador da variante, além de múltiplos subdocumentos com classificações de patogenicidade e frequências populacionais. Essa estrutura rica e densa é o principal fator que torna as operações de consulta computacionalmente custosas. Para subsidiar a análise, foram empregadas técnicas de coleta e avaliação de dados divididas em etapas operacionais detalhadas. Primeiramente, realizou-se o mapeamento da estrutura atual da aplicação, incluindo os principais pontos de extremidade utilizados no fluxo de operação. O levantamento permitiu compreender a forma como o sistema realizava suas operações de escrita e leitura, destacando os pontos sensíveis à medida que o volume de dados aumentava.

Os procedimentos de teste de desempenho foram executados em dois conjuntos distintos para identificar e quantificar os gargalos. O primeiro conjunto estabeleceu o diagnóstico base sem otimizações, utilizando uma ferramenta de gerenciamento de banco de dados para executar uma operação de busca sem filtros em uma coleção com 50.759.893 documentos. O objetivo foi estabelecer um tempo de resposta base para uma leitura completa de coleção. Adicionalmente, registrou-se o tempo de resposta em uma consulta similar no ambiente web da aplicação, que retornava aproximadamente 3 milhões de documentos. O segundo conjunto de testes focou na otimização tática por meio da implementação de índices na coleção principal. Após a identificação do gargalo de varredura completa, executou-se um novo teste de carga utilizando uma ferramenta de teste de desempenho de código aberto, simulando uma carga de até 50 usuários virtuais concorrentes realizando buscas de variantes por um período contínuo de 4 minutos e 30 segundos.

As métricas e critérios de análise basearam-se em indicadores quantitativos e qualitativos para garantir a replicabilidade. A latência, medida em milissegundos, foi a principal métrica para avaliar a performance percebida pelo usuário, considerando o tempo médio de resposta e o percentil 95. A taxa de requisições, ou vazão, correspondeu ao número total de requisições que o sistema conseguiu processar com sucesso durante o teste de carga. A taxa de falhas foi monitorada para garantir a estabilidade da aplicação sob carga, onde um valor de 0% indicaria sucesso operacional. Por fim, a utilização de índices foi verificada através do plano de execução da consulta, confirmando se as operações de leitura estavam utilizando as estruturas criadas ou resultando em varreduras completas de coleção. Devido a restrições de tempo, a validação da arquitetura segregada foi conduzida em nível teórico e de modelagem, fundamentada em princípios estabelecidos na literatura e na projeção de ganhos baseada nos dados quantitativos obtidos (Flyvbjerg, 2006).

Os resultados obtidos na primeira etapa de avaliação do sistema original revelaram que as operações de leitura, antes de qualquer otimização, apresentavam tempos elevados de resposta. O teste de diagnóstico executado sobre a coleção de 50.759.893 documentos levou 11,5 segundos para ser concluído. A análise do plano de execução confirmou que a operação resultou em uma varredura completa da coleção, indicando a ausência total de índices para suportar a consulta. De forma complementar, observou-se o comportamento em um ambiente similar ao de produção, com uma base de aproximadamente 3 milhões de documentos, onde o carregamento dos dados em uma tabela de visualização registrou um tempo de resposta de aproximadamente 17 segundos. Esses dados evidenciam que, em sistemas de bioinformática, a estrutura complexa dos documentos genômicos agrava a latência quando não há uma estratégia de recuperação de dados eficiente.

Após a identificação desse gargalo crítico, a implementação de uma otimização tática com a criação de um índice na coleção de variantes produziu uma melhoria drástica de performance. No teste de carga simulando 50 usuários virtuais concorrentes, foram processadas 11.273 requisições com sucesso, apresentando uma taxa de falhas de 0%. O tempo de resposta médio caiu para 2,09 ms, enquanto o percentil 95 situou-se em 2,47 ms, indicando que a vasta maioria das requisições foi concluída em tempos extremamente baixos. O tempo de resposta máximo registrado durante o estresse foi de 249 ms. Embora esses resultados demonstrem que a indexação é capaz de alcançar excelente performance de leitura, a discussão técnica revela que tal abordagem não resolve, mas apenas contorna os desafios arquiteturais inerentes ao acoplamento de leitura e escrita.

A drástica redução no tempo de resposta valida a eficácia da indexação como solução imediata, porém introduz um compromisso fundamental. Índices melhoram a performance de consultas, mas representam uma contrapartida que reduz o desempenho de operações de inserção, atualização e exclusão (Harrison e Harrison, 2021). Isso ocorre porque o banco de dados precisa atualizar não apenas os documentos, mas também todas as estruturas de índice associadas a cada modificação. Em cenários de alta ingestão de dados, como o carregamento de arquivos de variantes genéticas em larga escala, esse fator torna-se um novo e significativo gargalo. É nesse ponto que a proposta de segregação de responsabilidades se mostra estrategicamente superior, pois permite otimizar cada operação de forma independente, separando o modelo de escrita do modelo de leitura (Richardson, 2018).

A superioridade estratégica da segregação reside na possibilidade de criar um modelo de leitura totalmente independente e desnormalizado. Para o contexto da bioinformática, isso significa manter uma coleção de leitura onde os dados de variantes genéticas, originalmente em subdocumentos complexos, são pré-processados e achatados. Uma consulta que no modelo tradicional precisaria percorrer estruturas aninhadas passaria a buscar um documento já otimizado para a visualização. Essa abordagem simplifica a busca e melhora a eficiência da memória do banco de dados. Documentos menores permitem que um número maior deles seja mantido no cache do motor de armazenamento, reduzindo a necessidade de operações de leitura em disco, que são consideravelmente mais lentas (Harrison e Harrison, 2021). Projeta-se que o tempo de resposta das consultas em um modelo segregado seria, no mínimo, equivalente ao do modelo tradicional otimizado, com potencial para ser ainda menor devido à redução da carga computacional de processamento de documentos complexos.

A análise estende-se ao impacto da otimização nas operações de escrita. Embora a sobrecarga de escrita possa ser marginal no volume de dados atual, ela representa um gargalo de escalabilidade latente. Com o crescimento exponencial da base de dados, o tempo necessário para a manutenção de múltiplos índices tende a aumentar, tornando a ingestão de dados em massa progressivamente mais lenta. Para um desempenho ideal, os índices precisam ser armazenados na memória de acesso aleatório, e uma quantidade excessiva de índices exerce pressão sobre a memória, forçando o sistema a remover dados do cache para liberar espaço, o que lentifica todas as operações (Harrison e Harrison, 2022). O padrão de segregação aborda essa questão de forma proativa, permitindo que o lado da escrita opere com um número mínimo de índices, focados apenas na integridade dos dados, garantindo uma performance de ingestão rápida e sustentável a longo prazo.

A abordagem de segregação oferece desempenho superior em ambientes com grande volume de operações, sejam elas de leitura ou escrita (Maxime, 2024). A comparação entre a abordagem tradicional otimizada e a projeção da segregação revela limitações estratégicas importantes. A contenção entre leitura e escrita é um fator crítico, onde a otimização de uma operação penaliza a outra. Além disso, a complexidade do modelo único exige que o mesmo esquema de dados atenda a dois propósitos distintos, acumulando regras que dificultam a manutenção. A escalabilidade torna-se limitada, pois o modelo tradicional exige escalar a base de dados como um todo, enquanto a segregação permite escalar os serviços de leitura e escrita de forma independente, conforme a demanda específica de cada um. A flexibilidade também é superior no modelo segregado, pois novos modelos de leitura otimizados para diferentes casos de uso podem ser criados sem qualquer impacto no sistema de escrita.

A análise heurística dos atributos de qualidade demonstra que, embora o modelo tradicional seja mais simples e amplamente conhecido, ele falha em prover uma estratégia de crescimento planejada para sistemas críticos de bioinformática. O custo de infraestrutura no modelo tradicional é inicialmente menor, operando geralmente em um único banco, mas a segregação, apesar de exigir possivelmente múltiplos bancos e sistemas de mensageria, oferece um caminho mais robusto para a manutenibilidade e evolução do sistema. O estudo evidencia que a segregação não deve ser vista apenas como uma solução para desempenho imediato, mas como uma estratégia arquitetural de longo prazo, capaz de garantir clareza na manutenção e flexibilidade para a evolução constante das necessidades de análise genômica.

As evidências coletadas mostram que a latência de 17 segundos observada no sistema original inviabilizaria a operação em larga escala, e a solução por indexação, embora tenha reduzido esse tempo para 2,09 ms, criou uma dependência técnica que prejudica a escrita. A discussão sobre a eficiência da memória RAM e do cache do motor de armazenamento reforça que a desnormalização permitida pela segregação é a via mais eficiente para lidar com documentos genômicos densos. Ao isolar o modelo de escrita, garante-se que a integridade dos dados seja preservada sem sacrificar a velocidade de resposta ao usuário final. A transição para um modelo segregado, portanto, resolve a contenção de recursos e permite que o sistema suporte o aumento contínuo no volume de dados sem degradação proporcional da performance.

Reconhece-se que a principal limitação desta análise reside na natureza teórica da proposta de segregação, uma vez que a validação empírica através de um protótipo funcional não foi realizada neste estágio. Contudo, a modelagem rigorosa e a comparação com dados reais de um sistema em produção fornecem uma base sólida para as conclusões apresentadas. A investigação demonstrou que o acoplamento entre escrita e leitura é um fator de risco para a escalabilidade de sistemas de bioinformática. A proposta de arquitetura segregada surge como uma resposta direta a essa limitação, oferecendo um modelo onde a complexidade é gerenciada através da separação de preocupações, resultando em um sistema mais resiliente e preparado para as demandas da medicina genômica moderna.

Conclui-se que o objetivo foi atingido ao demonstrar que, embora a indexação tática resolva gargalos imediatos de leitura em sistemas de bioinformática, a arquitetura de segregação de comandos e consultas é estrategicamente superior para garantir escalabilidade e performance sustentável a longo prazo. A análise comprovou que o modelo tradicional sofre com a contenção entre operações de escrita e leitura, especialmente diante de grandes volumes de dados genômicos complexos. A segregação permite a otimização independente de cada fluxo, reduzindo a pressão sobre a memória e permitindo modelos de leitura desnormalizados que aceleram significativamente o acesso à informação. Sugere-se para pesquisas futuras a implementação de um protótipo funcional para validar empiricamente os ganhos de escrita e a exploração de mecanismos de sincronização baseados em eventos para manter a consistência entre os modelos.

Referências Bibliográficas:

Evans, E. 2004. Domain-Driven Design: Tackling Complexity in the Heart of Software. Boston: Addison-Wesley.

Flyvbjerg, B. Five Misunderstandings About Case-Study Research. Qualitative Inquiry, v. 12, n. 2, p. 219-245, 2006. Disponível em: <https://doi.org/10.1177/1077800405284363>. Acesso em: 13 jun. 2025.

Ford, N.; Richards, M.; Sadalage, P.; Dehghani, Z. 2022. Software Architecture: The Hard Parts: Modern Trade-Off Analyses for Distributed Architectures. 1ed. O’Reilly Media, Sebastopol, CA, EUA.

Fowler, M. 2002. Patterns of Enterprise Application Architecture. Boston: Addison-Wesley.

Harrison, G.; Harrison, M. 2021. MongoDB Performance Tuning: Optimizing MongoDB Databases and their Applications. 1ed. Apress, New York, NY, EUA.

Harrison, G.; Harrison, M. 2021. MongoDB Performance Tuning: Optimizing MongoDB Databases and their Applications. 1ed. Apress, New York, NY, EUA.

Jayaraman, K. D.; Sharma, P. 2025. Exploring CQRS Patterns for Improved Data Handling in Web Applications. International Journal of Research in all Subjects in Multi Languages 13(1): 91-109.

Kumar, A. 2019. CQRS (Command Query Responsibility Segregation). 1ed. Independently Published.

Maxime, L. Comparative Study of Traditional CRUD versus DDD/CQRS/Event Sourcing Architectures. 2024. Tese (Mestrado) – Universidade de Liège, Liège.

Richardson, M. 2018. Microservices Patterns: With examples in Java. Shelter Island: Manning Publications.

Vernon, V. 2013. Implementing Domain-Driven Design. 1ed. Addison-Wesley Professional, Boston, EUA.

Yin, R. 2013. Case Study Research: Design and Methods. Thousand Oaks: SAGE Publications.

Resumo executivo oriundo de Trabalho de Conclusão de Curso da Especialização em Engenharia de Software do MBA USP/Esalq

Para saber mais sobre o curso, clique aqui e acesse a plataforma MBX Academy

Quem editou este artigo

Mais recentes

Você também pode gostar

Quer ficar por dentro das nossas últimas publicações? Inscreva-se em nossa newsletter!

Receba conteúdos e fique sempre atualizado sobre as novidades em gestão, liderança e carreira com a Revista E&S.

Ao preencher o formulário você está ciente de que podemos enviar comunicações e conteúdos da Revista E&S. Confira nossa Política de Privacidade