Deploy de banco MongoDB na AWS com Atlas

MongoDB Logo
MongoDB Logo

No tutorial anterior de publicação de aplicação Node.js na AWS, eu lhe mostrei como instalar um certificado SSL, como configurar a sua aplicação no Apache para rotear os acessos ao seu domínio e a subir a sua aplicação Node.js via SFTP.

No tutorial de hoje, vamos ver como criar uma instância de MongoDB na AWS usando o serviço MongoDB Atlas para que seus dados também estejam na nuvem pública #1 do mundo.

Atenção: este é um tutorial intermediário. Se você não sabe programar Node.js com MongoDB ainda, não comece com ele pois vai mais te atrapalhar do que te ajudar. Para iniciantes, eu recomendo meus livros e meu curso (inclusive no curso você encontra este conteúdo em vídeoaula). Infraestrutura/servidores para iniciantes eu recomendo a Umbler.

Arquitetura para MongoDB

Como meu foco nos últimos anos tem sido muito o desenvolvimento de aplicações usando Node.js e MongoDB, nada mais natural do que eu falar aqui de como fazer deploy do seu banco de dados também.

Já falei no passado sobre administração profissional de MongoDB na unha (aqui e aqui). É um jeito econômico de você ter as suas instâncias de MongoDB, mas é mais trabalhoso. Você pode criar uma instância no Lightsail com Linux e instalar o MongoDB ou mesmo instalar o MongoDB na mesma instância do Node.

A primeira abordagem é mais profissional, pois mantém isolados os recursos da sua solução, fazendo com que as configurações de um não impactem na do outro. Apenas certifique-se desta segunda instância ser criada na mesma zona da primeira, por questões de latência.

A segunda abordagem é a mais econômica possível, mas a menos profissional de todas.

No entanto, existe uma terceira abordagem que é a mais profissional possível, mas a mais cara: usar um DBaaS, um serviço de MongoDB em nuvem, como o Atlas.

MongoDB Atlas

O Atlas é o serviço de MongoDB em nuvem da própria empresa criadora do MongoDB, ou seja, é o melhor serviço de MongoDB existente (se você já usou o Mongolab/Mlab, saiba que foram adquiridos pelo Atlas). Na dica abaixo eu falo brevemente do conteúdo desse artigo.

Eles possuem templates/imagens de servidores para os principais players de cloud do mercado e com poucos cliques eles te montam um cluster próximo do seu servidor de Node, que é o que vou mostrar aqui neste tutorial.

Primeiro, acesse o site do MongoDB e dentro de Cloud, escolha a opção Atlas. Crie uma conta (não precisa nem mesmo informar cartão de crédito) e escolha um dentre os 3 planos existentes no Atlas:

  • Shared Cluster: parte de U$0/mês para um cluster de 3 instâncias em réplica com memória compartilhada e 512MB de espaço em disco, além de conexão criptografada e controle de acesso. Instâncias maiores custam a partir de U$9/mês.
  • Dedicated Cluster: parte de U$56,94/mês para um cluster de 3 instâncias dedicado e recursos avançados como auto escalonamento, rede dedicada e métricas em tempo real.
  • Dedicated Multi-Region Clusters: parte de U$98,55/mês para um cluster distribuído geograficamente.

Escolha a opção free, a da esquerda na imagem abaixo (desculpe meu rosto na imagem, tirei esse print durante a gravação de uma videoaula pro meu curso).

Planos do Atlas
Planos do Atlas

Em Cloud Provider & Region, escolha AWS em N. Virginia, pois é onde criamos nossa instância de Node.js nos tutoriais anteriores, lembra?

É importante que, apesar do Node e do Mongo ficarem em instâncias separadas, que eles fiquem na mesma região por questões de performance. Aguarde alguns minutos até a criação do seu cluster gratuito.

Criando o cluster
Criando o cluster

Logo abaixo, você tem mais configurações do cluster, sendo que a opção free é a M0 Sandbox, existindo opções pagas com 2GB e até 5GB de armazenamento. O legal desse plano inicial do Atlas é que ele é grátis pra sempre, ou seja, pode usar ele mesmo em produção, desde que não ultrapasse seus limites.

Configurando o cluster
Criando o cluster

Curso Node.js e MongoDB

Configurando o Cluster

Após o cluster ter sido criado, você terá acesso a um dashboard de monitoramento do mesmo, falarei dele mais tarde. Antes disso, acesse no menu da esquerda a opção Database Access e depois clique no grande botão verde de “Add New Database User”, como abaixo.

Database Access
Database Access

Isso irá abrir um formulário de criação de usuário, com alguns campos a serem configurados. Em Authentication Method, escolha Password, crie um username e um password para esse usuário. Em Database User privileges, temos 4 opções:

  • Atlas admin: administrador geral de todo o cluster, evite esta opção;
  • Read and write to any database: um usuário com permissão em todas bases deste cluster;
  • Only read any database: um usuário com permissão de leitura em todas as bases deste cluster;
  • Select custom role: personalizável;

Para simplificar neste momento, sugiro a opção “Read and write any database”, como mostrado na imagem abaixo. Mais tarde, dê um estudada nos privilégios existentes e crie um user para cada database, pois fica mais seguro assim.

New Database User
New Database User

O próximo passo é permitir que a nossa instância de Node.js na AWS possa acessar a instância de MongoDB. Por padrão, o cluster bloqueia qualquer tentativa de acesso externo a ele e para que seja possível a conexão entre nossas instâncias, devemos colocar nosso IP na whitelist do cluster.

Para fazer isso, acesse o menu Network Access na esquerda e clique em “Add IP Address”.

Network Access
Network Access

Digite o IP estático do seu servidor de Node.js na AWS e deixe um comentário que explique o que é esse IP (sugiro citar que é do servidor Node.js). De forma alguma recomendo usar a opção “Allow Access from Anywhere” pois ela abre o seu MongoDB para o mundo poder se conectar e isso não é legal.

Whitelist IP
Whitelist IP

Agora é hora de conectar no nosso cluster, para que nossa aplicação Node.js utilize de fato o nosso servidor de MongoDB.

Volte à tela inicial dos clusters e clique no botão Connect do seu cluster. Ele te dá algumas opções, queremos a Connect your application. As outras opções incluem informações de como se conectar via terminal de linha de comando e de como se conectar usando a aplicação MongoDB Compass, que nada mais é do que um client visual de MongoDB.

Selecione o driver e versão que estiver usando do Node.js e copie a sua connection string. Note que ela estará sem a senha, que você deve preencher manualmente por uma questão de segurança. Se estiver usando um arquivo .ENV para as configurações de acesso a dados na sua aplicação, você deve colocar essa connection string de produção no .ENV de dentro do seu servidor de Node.js.

Pronto, sua instância de MongoDB está pronta e acessível pela sua aplicação Node.js que está na AWS. Aliás, ps dois serviços são agora vizinhos na AWS!

Para saber como utilizar ela da melhor forma, sugiro ler a minha série de tutoriais de MongoDB para Iniciantes em NoSQL e/ou meu livro MongoDB para Iniciantes. Em ambos eu ensino como fazer import/export ou dump/restore da sua base local em um servidor remoto.

* Espero que este artigo tenha sido útil para você que está aprendendo Node.js e MongoDB. Para conteúdo mais aprofundado, recomendo meus livros. Para videoaulas, recomendo o meu curso online.

Publicado por

Luiz Duarte

Pós-graduado em computação, professor, empreendedor, autor, Agile Coach e programador nas horas vagas.