Clique no banner para conhecer e adquirir o meu treinamento de Bancos de Dados no Azure

[Live] – Canal dotNET – Dicas de Bancos de Dados para Desenvolvedores | 12a edição

Visualizações: 5 views
Tempo de Leitura: 4 minutos

Fala pessoal!

Participei recentemente de uma live no canal dotNET, junto ao meu amigo e lenda da área de desenvolvimento .NET, Renato Groffe, com o objetivo de apresentar, de forma prática, o uso do K6 em cenários de teste de carga envolvendo bancos de dados relacionais. A proposta foi demonstrar como a ferramenta pode ser utilizada não apenas para APIs ou aplicações web, mas também como um componente relevante em testes de desempenho, capacidade e geração de massa de dados em ambientes de dados.

Ao longo da live, exploramos conceitos técnicos, decisões de arquitetura, limitações encontradas e boas práticas observadas durante o uso do K6 em projetos reais.

Link de inscrição:
https://www.meetup.com/pt-BR/dotnet-sao-paulo/events/311572390/

 

Link da transmissão:

 

Motivação para utilização do K6

A escolha do K6 como ferramenta principal para os testes apresentados está relacionada, principalmente, à sua simplicidade de uso aliada a um bom nível de desempenho. Diferentemente de ferramentas mais tradicionais, o K6 permite a definição dos cenários de teste por meio de scripts em JavaScript, o que reduz significativamente a curva de aprendizado.

Além disso, o K6 é desenvolvido em Go, linguagem amplamente conhecida por seu bom suporte a paralelismo e eficiência em execução concorrente, características importantes em cenários de teste de carga.

Testes de carga além de APIs e aplicações web

Um ponto enfatizado durante a live foi a ampliação do uso do K6 para além de testes de API ou interface gráfica. Em muitos cenários, especialmente em projetos de dados, o gargalo não está na aplicação, mas no banco de dados.

Utilizar o K6 para testar diretamente bancos de dados relacionais permite avaliar aspectos como:

  • Capacidade de ingestão de dados
  • Comportamento sob concorrência
  • Tempo médio de execução de operações
  • Limites de infraestrutura antes da degradação do serviço

Esses testes são especialmente úteis em cenários de carga inicial, processamento em lote e simulações de ambiente produtivo.

Uso de extensões e drivers de banco de dados

Por padrão, o K6 suporta testes de API e navegação web. Para trabalhar com bancos de dados, é necessário gerar um executável customizado por meio do XK6, incorporando extensões específicas.

Durante a demonstração, apresentei o processo de build de um executável do K6 contendo:

  • Extensão genérica para SQL
  • Drivers específicos para SQL Server, PostgreSQL e MySQL
  • Extensão para geração de dados fictícios (Faker)

Esse processo permite que o K6 execute comandos SQL diretamente, tornando o teste mais próximo da realidade de produção.

Geração de dados fictícios de forma controlada

Outro aspecto importante abordado foi a geração de dados fictícios. Em ambientes de teste, a criação manual de massa de dados frequentemente resulta em inconsistências e problemas de qualidade.

A utilização do Faker integrado ao K6 permite gerar dados coerentes, com estrutura consistente e sem riscos de conteúdo inadequado. Cada iteration do K6 representa uma execução completa de um cenário, como a inserção de um registro, facilitando a simulação de cargas concorrentes de forma controlada.

Esse tipo de abordagem é útil para:

  • Criação rápida de massa de dados
  • Testes de desempenho e volumetria
  • Montagem de provas de conceito e demonstrações técnicas

Integração com pipelines e uso de contêineres

Durante a live, todas as demonstrações foram realizadas utilizando pipelines automatizados, com execução em contêineres oficiais dos bancos de dados. Essa escolha teve como objetivo aproximar o cenário de teste da realidade de ambientes corporativos.

Algumas decisões técnicas discutidas incluíram:

  • Uso do SQL Server 2022 em contêiner Linux, devido à instabilidade de versões mais recentes
  • Escolha criteriosa da versão do sistema operacional base para garantir disponibilidade de ferramentas como SQLCMD
  • Parametrização de strings de conexão e variáveis sensíveis por meio de variáveis de ambiente e variable groups

Esses cuidados reduzem falhas em pipelines e facilitam a reprodutibilidade dos testes.

Resultados observados nos testes

Foram executados testes de carga em diferentes bancos de dados, com variações no número de usuários simultâneos e no volume de iterações. Os resultados demonstraram taxas elevadas de inserção e tempos médios de execução bastante reduzidos, mesmo em ambientes baseados em contêineres.

Mais relevante do que os números absolutos foi a possibilidade de medir, comparar e compreender o comportamento de cada banco sob diferentes níveis de carga, fornecendo subsídios para decisões técnicas e de infraestrutura.

Aplicações práticas do K6 em projetos de dados

Ao longo da live, destaquei que o K6 não deve ser visto apenas como uma ferramenta para testes extremos de carga. Ele pode ser utilizado em diversos contextos, como:

  • Avaliação de capacidade antes de ir para produção
  • Geração controlada de dados fictícios
  • Testes de regressão de desempenho
  • Apoio à tomada de decisão sobre dimensionamento de infraestrutura

Em projetos reais, esse tipo de teste permite antecipar problemas e justificar ajustes de capacidade com base em dados concretos.

ORM, banco de dados e alinhamento com o negócio

Na parte final da live, discutimos o papel dos ORMs e o momento adequado para intervenção mais profunda em banco de dados. A visão apresentada foi a de que ORMs são eficientes para operações simples de CRUD, mas apresentam limitações em consultas analíticas, relatórios complexos e cenários de grande volumetria.

Nesses casos, o uso de SQL explícito, views ou procedimentos específicos tende a oferecer melhor desempenho e maior controle. A decisão de otimizar, no entanto, deve sempre considerar o impacto no negócio. Nem todo problema técnico justifica investimento imediato; o foco deve estar nos pontos que afetam diretamente a operação.

Considerações finais

A live teve como objetivo demonstrar, de forma prática e transparente, como o K6 pode ser utilizado em cenários reais envolvendo banco de dados, testes de carga e automação. Mais do que apresentar uma ferramenta, a proposta foi discutir decisões técnicas, limitações e aplicações práticas.

Testes de carga bem executados fornecem dados objetivos que auxiliam na tomada de decisão, reduzem riscos e aumentam a previsibilidade do comportamento do ambiente em produção.