Fala ae galerinha!
Nesse artigo eu decidi voltar na base de o que é o MongoDB e suas vantagens. Os outros artigos que tenho aqui no Dev.to, eu falei alguns pontos interessantes, mas a verdade é que o MongoDB possui muitas features interessantes. Nesse artigo, eu quero focar na parte de infraestrutura.
A grande verdade é que os bancos de dados relacionais são um ponto de falha preocupante para as aplicações. Por mais que tenhamos uma aplicação clusterizada, ou funcionando em uma estrutura como kubernetes, por exemplo, mas o banco sempre está em uma única máquina, o que aumenta a possibilidade de uma falha no ambiente.
Alguns bancos até apresentam estruturas de replicação, mas os que são de licença livre apresentam um alto nível de complexidade na configuração de um HA e DR, já os pagos, vão gerar um custo maior com licenciamento. Mas o MongoDB oferece isso como uma feature básica.
A estrutura básica do MongoDB para produção é chamada Replica Set. O Replica Set é um conjunto de maquinas que funciona em cluster, replicando os dados entre eles. O objetivo principal do Replica Set é Recuperação de Desastres (DR) e Alta Disponibilidade (HA), ou seja, manter o serviço de banco de dados sempre disponível independente de falha lógica, física, de redes, ou outras situações como atualizações de sistema ou upgrade de versão de banco de dados ou SO.
No Replica Set, a aplicação se conecta a todos os nós, mas realiza as leituras e escritas, por padrão, somente com o nó primário. Como a aplicação já conhece todos os nós, no caso de uma falha, ela vai passar a transacionar automaticamente com o nó que assumir a role de primária de forma transparente, sem necessidade de qualquer interação com o banco ou aplicação.
O Replica Set em ambiente produtivo deve ser composto por pelo menos três maquinas, e pode ser escalado em números ímpares. A titulo de exemplo, no MongoDB Atlas - o MongoDB como serviço hospedado na nuvem e gerido pela própria MongoDB - são oferecidos nos clusters 3, 5 ou 7 nós com o papel de DR e HA.
Outro ponto interessante é que diferente de outros SGBDs a configuração da replicação é bem simples. Em um cluster sem autenticação, por exemplo, basta executar o script a seguir no bash:
# sudo cat /etc/mongod.conf | sed '/#replication/s/#//' | sed '/replication/a \ \ replSetName: "rs0"' > /etc/mongod.conf.tmp
# sudo mv /etc/mongod.conf.tmp /etc/mongod.conf
# sudo systemctl restart mongod
# mongosh
> rs.initiate()
No script acima, estamos considerando um MongoDB recém instalado, sem outras configurações realizadas.
Se você gostou desse artigo, não deixe da dar uma olhada nos outros artigos publicados no meu perfil no Dev.to, e fique atento para novas publicações.
Inclusive, se você ficou interessado em saber como montar um Replica Set para produção, fique atento, que este será um dos meus próximos artigos!
Replication - MongoDB Manual
Replica Sets Distributed Across Two or More Data Centers
Top comments (1)
Legal!