O que você não gosta MongoDB Atlas?
Minha história com o Mongo começou quando comecei em uma nova posição de software, e eles tinham uma versão legada de seu produto de software usando Atlas.
Comparado com nossas outras contas de infraestrutura, o Mongo era significativamente mais alto para a quantidade de computação e armazenamento que usávamos ($3K por mês). Este é um serviço gerenciado, então você esperaria pagar um prêmio. Ok, claro, mas então eu espero grande funcionalidade, desempenho e suporte.
O principal problema começou com o Mongo quando precisávamos deletar alguns dados porque eles vinculam os níveis de CPU e memória ao tamanho do armazenamento, então estávamos pagando em excesso. Nossa aplicação funcionaria bem em um cluster dedicado M10 (o menor nível), mas ele havia escalado automaticamente para um M50 por causa do armazenamento. Isso já é um pouco decepcionante porque eles estão forçando os clientes a pagar por mais computação e memória do que precisam.
Então começamos a deletar alguns dados, mas então encontramos problemas. O processo de exclusão de dados era realmente lento e também desacelerou todo o nosso cluster, causando atrasos e problemas de desempenho para nossos usuários finais. Mas espere, isso não faz sentido porque estamos pagando por mais CPU e RAM do que precisamos, então por que teríamos esse problema?
Levou-nos três meses para deletar 500GB de dados. Enquanto isso, nossa conta permaneceu a mesma porque você não pode reivindicar o espaço de volta sem compactar o banco de dados. Ok, tudo bem. Então executamos compact(), mas liberamos apenas ~100GB nos clusters secundários.
O suporte nos deu um script para executar que pode ver quanto armazenamento pode ser liberado.
No final, tivemos que ativar um plano de suporte adicional caro, custando-nos $500 USD por mês para obter suporte para executar um comando de re-sincronização. Isso deveria ter levado 10 minutos para o pessoal de suporte deles, mas em vez disso, eles nos enrolaram indo e voltando no ticket, levando três semanas para resolver.
Um ano depois, precisávamos deletar mais alguns dados. Passamos mais cinco meses deletando 800GB de dados. Então executamos compact() e liberamos 300GB. Onde estão nossos outros 500GB? Contatamos algumas pessoas na Mongo, que realmente não puderam fazer muito além de sugerir que conseguíssemos financiamento para cobrir o suporte de $500 por um mês. Sim, conseguimos o crédito de $500, mas quando fui reativar o suporte, ia nos cobrar por três meses por um mês porque a Mongo cobra retroativamente por três meses quando você reativa. Uau, começamos em um lugar ruim, agora estou além de frustrado; isso é um roubo à luz do dia.
Até hoje, ainda estou lutando para recuperar algum armazenamento, mas neste ponto, vou recomendar ao nosso CEO que nossa equipe de desenvolvimento se esforce para se afastar completamente do Mongo.
Também preciso mencionar que a Mongo recomendou que usássemos seus recursos de arquivo online, mas quando fizemos as contas, ainda era bastante caro, e teríamos que fazer um trabalho significativo para fazer nossa aplicação funcionar entre os clusters regulares e o arquivo online. Então, era significativamente mais lógico apenas colocar os dados no AWS S3, depois deletá-los no Mongo.
Se eu puder resumir minha experiência com o Mongo, e reconheço que a minha é provavelmente bastante diferente da maioria, aqui está:
Superfaturado para o desempenho que você obtém
Modelo de cobrança sorrateiro onde eles vinculam CPU e memória ao armazenamento
Suporte terrível e caro
Cobranças extras sorrateiras na reativação do suporte
Soluções de escalonamento de suporte ruins - eles não podiam simplesmente ativar 'suporte' gratuito
Desempenho ruim do banco de dados
Operações de exclusão lentas
Bloqueio do ecossistema
Atualizações forçadas - sem lançamentos LTS
Deixe-me resumir desta forma: se o seu comando compact() não liberar o espaço que está disponível no seu cluster, então forneça suporte gratuito ao cliente para fazê-lo.
Eu odeio lidar com o Mongo. Nada é simples, tudo é caro, e o desempenho é péssimo.
Se você está considerando usar o Mongo, encontre outra coisa. Mesmo que você tenha que gastar um pouco mais de tempo para aprender AWS Dynamo, S3 ou Aurora, você deve fazê-lo; você economizará tempo e dinheiro a longo prazo.
Mongo, você merece esta crítica negativa. Eu lhe dei muitas oportunidades para resolver as coisas e escalei questões, mas você simplesmente não se importa.
Queríamos nos afastar do Mongo antes; agora não posso me livrar dele rápido o suficiente. Análise coletada por e hospedada no G2.com.