Publicando sua aplicação Node.js no Amazon LightSail (AWS) – Parte 3

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 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.