Recentemente, a transformação digital tem sido um tema recorrente nas discussões da comunidade de tecnologia. Cada vez mais, empresas buscam não apenas otimizar seus sistemas, mas também reimaginar sua arquitetura para atender a demandas crescentes. Um exemplo notável dessa mudança é o caso da Momentic, que decidiu migrar de um banco de dados relacional tradicional, o PostgreSQL, para o banco de dados columnar ClickHouse. Essa transição não foi apenas uma simples troca de tecnologia; representou uma reestruturação completa de sua arquitetura de cache para suportar um volume impressionante de 2 milhões de consultas diárias em um total de 20 bilhões de entradas. Vamos explorar esse caso e o que ele nos ensina sobre performance e escalabilidade.

Resumo Executivo

A Momentic, uma empresa focada em uma plataforma de testes de software impulsionada por IA, reestruturou seu sistema de cache ao migrar do PostgreSQL para o ClickHouse. Essa mudança foi motivada pelas limitações de performance do PostgreSQL frente ao crescimento exponencial da tabela de cache. Com essa migração, a Momentic conseguiu não apenas escalar seu sistema, mas também manter uma latência média de resposta de 250 ms, mesmo com uma carga de consultas muito alta. Essa transição destaca a importância de escolher a tecnologia certa conforme as necessidades de escalabilidade e performance aumentam.

Fato Reportado

A Momentic enfrentou um problema clássico: a crescente demanda por performance e escalabilidade. Com o aumento da tabela de cache de 80.000 para 1 bilhão de entradas, o PostgreSQL começou a apresentar limitações significativas. O cenário de alta leitura e escrita resultou em contendas de bloqueio e uso elevado de recursos. Para contornar essa situação, a empresa optou pela migração para o ClickHouse, que oferece índices primários esparsos em vez de índices B-tree, permitindo buscas mais eficientes ao lidar com grandes volumes de dados.

Interpretação Técnica

Do ponto de vista técnico, a escolha do ClickHouse foi impulsionada por sua arquitetura otimizada para leitura e escrita em cenários de alta concorrência. O uso de índices esparsos permite que o banco de dados faça buscas rápidas em grandes quantidades de dados, focando apenas nas "granulações" relevantes em vez de varrer toda a tabela. Essa abordagem se traduz em uma performance significativamente mais eficiente à medida que a quantidade de dados cresce.

Outro aspecto importante foi a forma como a Momentic estruturou sua chave primária. Ao incorporar identificadores como ID de teste, ID de passo e timestamps de commit, a empresa conseguiu otimizar as consultas, alcançando um comportamento de busca eficiente em 90% dos casos, especialmente em branches de recursos. No entanto, para branches principais, a situação era mais desafiadora, exigindo acesso a um grande número de entradas, o que resultava em picos de uso de memória e operações em disco.

Limites do Que Não Dá Para Afirmar

Embora a mudança para o ClickHouse tenha gerado resultados positivos, é importante destacar que nem todas as soluções se aplicam a todos os contextos. A integração de novas tecnologias requer um entendimento profundo das necessidades específicas de cada aplicação e do comportamento dos dados envolvidos. Além disso, a eliminação da camada Redis, que anteriormente oferecia cache de alta performance, pode não ser uma solução viável para todas as arquiteturas, especialmente em casos onde a cardinalidade das chaves de cache é baixa.

Explicação Técnica Aprofundada

A transição para o ClickHouse não se limitou a uma simples troca de banco de dados; envolveu uma completa reavaliação da arquitetura de caching. A estratégia de usar materialized views para pré-computar timestamps disponíveis por ID de teste é uma abordagem inteligente que permite saltar diretamente para a parte de dados correta, minimizando o tempo de resposta. A mudança de uma lógica de múltiplas consultas para um modelo baseado em INSERTs e a utilização do ReplacingMergeTree do ClickHouse otimizou ainda mais o fluxo de trabalho, facilitando a deduplicação assíncrona de entradas.

Dicas Avançadas

Aplicação Prática

Para arquitetos e desenvolvedores, o caso da Momentic oferece uma série de lições valiosas. Aqui estão algumas ações concretas que podem ser aplicadas:

Riscos e Cuidados

Adotar novas tecnologias sempre implica riscos. É crucial ter um plano de rollback caso a migração não ocorra conforme o esperado. Além disso, a dependência excessiva de uma única tecnologia pode levar a problemas de lock-in, dificultando futuras migrações. Sempre avalie a possibilidade de implementar soluções híbridas que combinem o melhor de diferentes tecnologias.

Conclusão

A transição da Momentic para o ClickHouse é um exemplo claro de como a inovação na arquitetura de software pode levar a melhorias significativas em performance e escalabilidade. Ao reimaginar seu sistema de cache, a empresa não apenas superou limitações anteriores, mas também se posicionou para lidar com o crescimento futuro. Em um mundo onde a velocidade e a eficiência são cruciais, a escolha da tecnologia certa pode fazer toda a diferença. Portanto, ao considerar mudanças em sua arquitetura, lembre-se: cada decisão deve ser baseada em uma análise cuidadosa das necessidades específicas de seu negócio.