No meu último post sobre bancos de dados serverless, especificamente sobre MongoDB fiz uma introdução sobre o assunto, coloquei alguns prós e contras e dei um overview geral sobre preços da utilização de uma infraestrutura serverless com MongoDB. Hoje quero aprofundar com vocês algumas lições aprendidas e trazer alguns números de benchmarks públicos e pessoais que vão corroborar com a minha opinião sobre a adoção dessa arquitetura. Devido à natureza variável dos benchmarks, que dependem do caso de uso específico, da configuração e do tipo de carga de trabalho, os dados apresentados são estimativas baseadas em cenários de uso comum, visando fornecer uma base sólida para comparação e análise.
Antes de mais nada, as minhas recomendações e lições iniciais ainda são válidas e por isso as trarei novamente aqui como reforço:
O que eu posso recomendar para você após 6 meses rodando o projeto?
- Modelagem ainda é uma preocupação. “Garbage in, garbage out”.
- Parece óbvio, mas você paga pelos testes de carga.
- Use e abuse da paginação feita direto no banco. $skip e $limit são seus amigos.
- Coloque alertas! Alertas de billing, de consumo, erros e latência.
- Persistência poliglota sempre, um bom serviço de cache ajuda muito na performance e redução de custos!
- Mantenha seu driver atualizado, melhorias sempre surgem e você precisa aproveitar isso.
- Considere o tempo de latência em ambientes produtivos, isso em larga escala pode fazer bastante diferença!
Características e Vantagens do MongoDB Serverless
O MongoDB Serverless é projetado para oferecer uma gestão de banco de dados NoSQL altamente escalável, flexível e eficiente em custos. Suas principais vantagens incluem:
- Escalabilidade Automática: Ajusta dinamicamente os recursos disponíveis para atender às demandas do aplicativo, sem intervenção manual.
- Modelo de Pagamento conforme o Uso: O custo é baseado na quantidade de dados armazenados, lidos e escritos, permitindo uma otimização de recursos e custos.
- Simplificação Operacional: Elimina a necessidade de gerenciamento de infraestrutura, permitindo que os desenvolvedores se concentrem na lógica do aplicativo.
Benchmarks de Desempenho do MongoDB Serverless
Operações de Leitura e Escrita: Em um cenário de teste comum, operações de leitura e escrita no MongoDB Serverless apresentam uma latência média de cerca de 20ms para leituras e 25ms para escritas, sob uma carga moderada. Este valor compara-se a uma latência de aproximadamente 10-15ms para operações similares em instâncias MongoDB Atlas dedicadas, indicando um overhead de latência no contexto serverless de aproximadamente 5-10ms por operação.
IOPS (Input/Output Operations Per Second): Para um banco de dados serverless configurado com 10GB de armazenamento, o MongoDB Serverless pode oferecer até 3.000 IOPS para operações de leitura e 1.000 IOPS para escritas. Este número é dinamicamente ajustado com o escalonamento do armazenamento; por exemplo, um aumento para 20GB de armazenamento pode dobrar a capacidade de IOPS disponível. É importante notar que esses números são aproximados e podem variar com base na carga de trabalho específica e outros fatores operacionais.
Conexões Simultâneas: O MongoDB Serverless suporta até 1.500 conexões simultâneas por instância. Para aplicações que exigem um número maior de conexões, recomenda-se avaliar o uso de estratégias de pooling de conexões ou considerar a distribuição de carga entre múltiplas instâncias serverless.
Limitações de Tamanho e Tempo de Transações: As transações no MongoDB Serverless têm um limite de tempo de execução de 60 segundos, com um tamanho máximo de 16MB por operação. Estas restrições exigem que as aplicações sejam projetadas para operações eficientes, evitando longas transações ou grandes operações batch que poderiam exceder esses limites.
Estudo de Caso Quantitativo: Promoções relâmpagos em E-commerce
Durante uma promoção relâmpago, um e-commerce típico utilizando MongoDB Serverless pode experimentar um aumento de até 10x no volume de transações e consultas. Considerando uma base de 100.000 operações por hora em um dia normal, esse número pode escalar para 1.000.000 de operações por hora durante o pico da promoção.
A preparação para este evento envolve o ajuste do MongoDB Serverless para otimizar o desempenho e o custo. Por exemplo, a otimização de índices pode reduzir a latência média de consulta de 20ms para 15ms, um ganho significativo sob alta carga. Além disso, a implementação de caching para consultas frequentes pode reduzir o número total de operações no banco de dados em até 30%, aliviando a carga no sistema e melhorando a experiência do usuário.
Qual é a minha opinião sobre MongoDB Serverless?
Acredito que com uma boa margem de segurança, se respeitadas as limitações, a topologia serverless pode ser fácilmente aplicada não só em ambientes de desenvolvimento e homologação como ambientes produtivos, apenas tenha em mente algumas coisas importantes:
- Tenha em mente da latência variável, se você precisa de garantia forte da latência mínima, um cluster dedicado dentro de uma região favorável acaba sendo a melhor escolha
- Tenha em mente o tamanho e complexidade do banco de dados. Como existe uma limitação de tamanho de banco (1TB) e algumas features (trigger, sharding etc) pode ser que bancos mais simples sejam mais recomendados
- O BI Connector ainda não funciona para serverless, então se você depende dessa funcionalidade, infelizmente não irá conseguir utilizar
- Tenha MUITO cuidado com a quantidade de requisições que você vai fazer nesse banco, aqui você paga por consulta e não por tamanho do banco, isso pode ser uma dor de cabeça no futuro.
O MongoDB Serverless representa uma solução poderosa para o gerenciamento de bancos de dados NoSQL em ambientes dinâmicos e variáveis. Seu modelo de escalabilidade automática e pagamento conforme o uso oferece uma combinação atraente de flexibilidade e eficiência de custos. No entanto, as limitações técnicas e os benchmarks de desempenho sublinham a importância de um planejamento cuidadoso e uma implementação otimizada. O estudo de caso citado ilustra como, com estratégias adequadas, é possível maximizar a eficácia do MongoDB Serverless, mesmo sob condições extremas de demanda. Portanto, ao considerar o MongoDB Serverless para aplicações futuras, é essencial avaliar tanto suas potencialidades quanto suas restrições, garantindo uma implementação que atenda às necessidades específicas do projeto e maximize o retorno sobre o investimento.
Resumindo… Faça testes! Faça o seu próprio benchmark, só assim você saberá com clareza se a tecnologia se aplica ao seu cenário