É aquela época do ano novamente! Esta postagem faz parte de nosso Rumo ao AWS re:Invent 2017 série de blogs. Nas semanas que antecedem o AWS re:Invent, em Las Vegas, em novembro, postaremos sobre vários tópicos relacionados à execução do MongoDB na nuvem pública. Veja todas as postagens aqui.
A criação de aplicativos nunca foi tão rápida, graças, em grande parte, aos avanços na virtualização. Ultimamente, tenho explorado maneiras melhores de criar e implementar aplicativos sem ter que me preocupar com o trabalho contínuo de front-end, como aplicar patches em máquinas Linux, substituí-las quando falham ou até mesmo ter que fazer SSH nos sistemas.
Neste tutorial em duas partes, compartilharei como criar um aplicativo Node.js com o MongoDB Atlas e implantá-lo facilmente usando o Amazon EC2 Container Service (ECS).
Na primeira parte, abordaremos:
- Uso do Docker para implantação de aplicativos
- Criação de um cluster do MongoDB Atlas
- Conectando-o a um aplicativo baseado em Node.js que permite operações CRUD completas
- Iniciando-o localmente em um ambiente de desenvolvimento.
Na segunda parte, colocaremos nosso aplicativo em execução em um contêiner Linux no AWS instalando algumas ferramentas, configurando algumas variáveis de ambiente e iniciando um cluster do Docker.
Ao final deste tutorial em duas partes, você verá como trabalhar com o Node.js para iniciar um aplicativo, como criar um cluster do MongoDB para o aplicativo e, por fim, como usar o AWS para implantar esse aplicativo em contêineres.
Uma rápida introdução ao Docker
(O senhor já sabe sobre contêineres e Docker? Pule para o tutorial).
O Docker simplifica para os desenvolvedores a criação, o envio e a execução de aplicativos distribuídos em diferentes ambientes. Ele faz isso ajudando-o a “conteinerizar” seu aplicativo.
O que é um contêiner? O site do Docker define um contêiner como “uma forma de empacotar software em um formato que pode ser executado isoladamente em um sistema operacional compartilhado“. De forma mais ampla, os contêineres são uma forma de virtualização do sistema que permite executar um aplicativo e suas dependências em processos isolados de recursos. Usando contêineres, é possível empacotar facilmente o código do aplicativo, as configurações e as dependências em blocos de construção fáceis de usar, criados especificamente para executar seu código. Isso garante que a implantação seja rápida, confiável e consistente, independentemente do ambiente de implantação, e permite que você se concentre mais na criação do aplicativo. Além disso, os contêineres facilitam o gerenciamento de microsserviços e dão suporte a fluxos de trabalho de CI/CD em que as alterações incrementais são isoladas, testadas e liberadas com pouco ou nenhum impacto nos sistemas de produção.
Primeiros passos
No exemplo que apresentaremos nesta postagem, vamos criar um sistema de registros simples usando MongoDB, Express.js, React.js e Node.js chamado mern-crud. Combinaremos vários serviços comuns na plataforma de nuvem da AWS para criar um aplicativo em contêiner totalmente funcional com dimensionamento automático e balanceamento de carga. O núcleo do nosso front-end será executado no Amazon EC2 Serviço de contêineres (ECS).
Na primeira parte, configurarei nosso ambiente e criarei o aplicativo em minha estação de trabalho local. Isso mostrará aos senhores como começar a usar o MongoDB Atlas junto com o Node.js. Na segunda parte, concluiremos tudo com a implementação no ECS com o coldbrew-cli, um utilitário fácil de linha de comando do ECS.
A seguir, o senhor encontrará os princípios básicos da criação de um aplicativo que lhe permitirá realizar operações CRUD no MongoDB.
Requisitos:
O Amazon EC2 Container Service (ECS) permite que o senhor implemente e gerencie suas instâncias do Docker usando o painel de controle do AWS. Para obter um detalhamento completo de como ele funciona, recomendo consultar A demonstração “Getting Started with ECS” de Abby Fullerque inclui detalhes sobre a função de cada parte da implantação subjacente do Docker e como elas trabalham juntas para fornecer aos senhores aplicativos facilmente repetíveis e implantáveis.
Configurar o AWS e o coldbrew-cli
Variáveis de ambiente do AWS
Comece inscrevendo-se na sua conta da AWS e criando suas chaves de gerenciamento de identidade e acesso (IAM). O senhor pode revisar as permissões necessárias nos documentos do coldbrew-cli. As chaves IAM serão necessárias para autenticação na API do AWS; podemos exportá-las como variáveis de ambiente no shell de comando que usaremos para executar os comandos coldbrew-cli:
export AWS_ACCESS_KEY_ID="PROVIDEDBYAWS export AWS_SECRET_ACCESS_KEY="PROVIDEDBYAWS
Isso permite que o coldbrew-cli use nossos direitos de usuário dentro da AWS para criar a infraestrutura subjacente apropriada.
Primeiros passos com o coldbrew-cli
Em seguida, trabalharemos com o coldbrew-cli, um utilitário de automação de código aberto para a implantação de contêineres do AWS Docker. Ele elimina muitas das etapas associadas à criação de nossas imagens do Docker, à criação do ambiente e ao dimensionamento automático dos grupos da AWS associados aos nossos servidores Web Node.js na AWS. A melhor parte do coldbrew é que ele é altamente portátil e configurável;
O documentação do coldbrew afirma o seguinte:
O coldbrew-cli opera com dois conceitos simples: aplicativos (apps) e clusters;
- Um aplicativo é a unidade mínima de implementação.
- Um ou mais aplicativos podem ser executados em um cluster e compartilham os recursos de computação.
Usaremos esse utilitário para simplificar muitas das tarefas comuns que o senhor teria que realizar ao criar um cluster ECS de produção. Ele cuidará do seguinte em nosso nome:
Manualmente, todas as tarefas listadas acima exigiriam um esforço não trivial;
Para instalar o coldbrew-cli, podemos baixar o executável da CLI (coldbrew ou coldbrew.exe) e coloque-o em nosso $PATH.
$ which coldbrew 'usr/local/bin/coldbrew
Prepare nosso aplicativo e o MongoDB Atlas
O ECS nos permitirá executar um front-end sem estado para o nosso aplicativo. Todos os nossos dados serão armazenados no Atlas do MongoDBA melhor maneira de executar o MongoDB no AWS. Nesta seção, criaremos nosso cluster de banco de dados e conectaremos nosso aplicativo. Podemos contar com os comandos coldbrew para gerenciar as implementações de novas versões do nosso aplicativo daqui para frente.
Seu Atlas Cluster
Criar um cluster do Atlas é fácil e gratuito. Se o senhor precisar de ajuda para fazer isso, assista a este vídeo tutorial que fiz para orientá-lo no processo. Depois que nosso cluster M0 gratuito for construído, é fácil colocar na lista de permissões os endereços IP dos nossos contêineres ECS para que possamos armazenar dados no MongoDB.
Nomeei meu cluster como "mern-demo”
.
Baixando e configurando o aplicativo
Vamos começar fazendo o download dos arquivos necessários necessário:
$ git clone git@github.com:cefjoeii/mern-crud.git Cloning into 'mern-crud'... remote: Counting objects: 303, done. remote: Total 303 (delta 0), reused 0 (delta 0), pack-reused 303 Receiving objects: 100% (303/303), 3.25 MiB | 0 bytes/s, done. Resolving deltas: 100% (128/128), done.
Vamos entrar no repositório que clonamos e dar uma olhada no código:
O server.js
depende da configuração do banco de dados armazenada na pasta config/db.js
. Usaremos isso para especificar nosso cluster M0 no MongoDB Atlas, mas queremos garantir que o façamos usando credenciais de usuário que sigam o padrão princípio do menor privilégio.
Protegendo nosso aplicativo
Vamos criar um usuário básico do banco de dados para garantir que não estamos concedendo ao nosso aplicativo direitos totais para administrar o banco de dados. Tudo o que esse usuário básico exige é acesso de leitura e gravação.
Na UI do MongoDB Atlas, clique na opção “Security” (Segurança) na parte superior da tela e, em seguida, clique em “MongoDB Users” (Usuários do MongoDB)
Agora, clique no botão “Add new user” (Adicionar novo usuário) e crie um usuário com acesso de leitura e gravação aos dados do namespace que estão sendo gravados em nosso cluster.
- Digite o nome de usuário (selecionarei mernuser)
- Clique no link “Show Advanced Options” (Mostrar opções avançadas)
- Selecione a função “readWrite” na seção “Database” (Banco de dados) “merndb” e deixe “collection” em branco
- Crie uma senha e salve-a em algum lugar para usá-la em sua string de conexão
- Clique em “Add User” (Adicionar usuário)
Agora temos um usuário pronto para acessar o cluster do banco de dados MongoDB Atlas do nosso aplicativo. É hora de obter nossa string de conexão e começar a preparar o aplicativo.
Vinculação do nosso cluster gerenciado ao nosso aplicativo
Nossa string de conexão pode ser acessada na seção “Clusters” do Atlas e clicando no botão “Connect”.
Esta seção fornece uma interface para incluir na lista de permissões os endereços IP e os métodos de conexão ao seu cluster. Vamos escolher a opção “Connect Your Application” (Conectar seu aplicativo) e copiar nossa string de conexão. Vamos copiar a string de conexão e dar uma olhada no que precisamos modificar:
A string de conexão padrão nos fornece algumas partes que exigem nossas alterações, destacadas em vermelho abaixo:
mongodb://mernuser:demopass@mern-demo-shard-00-00-x8fks.mongodb.net:27017,mern-demo-shard-00-01-x8fks.mongodb.net:27017,mern-demo-shard-00-02-x8fks.mongodb.net:27017/merndb?ssl=true&replicaSet=mern-demo-shard-0&authSource=admin
O nome de usuário e a senha devem ser substituídos pelas credenciais que criamos anteriormente. Também precisamos especificar o merndb
no qual nossos dados serão armazenados.
Vamos adicionar nossa string de conexão ao config/db.js
e, em seguida, compilar nosso aplicativo.
Salve o arquivo e, em seguida, importe as dependências necessárias do aplicativo do diretório raiz do repositório com o comando “npm install
“:
Vamos colocar nosso endereço IP local na lista de permissões para que possamos iniciar nosso aplicativo e testar se ele está funcionando localmente antes de implantá-lo no Docker. Podemos clicar em “CONNECT” (Conectar) na UI do MongoDB Atlas e, em seguida, selecionar “ADD CURRENT IP ADDRESS” (Adicionar endereço IP atual) para colocar nossa estação de trabalho local na lista de permissões:
Agora podemos testar o aplicativo e ver que ele inicia como esperado:
$ npm start > mern-crud@0.1.0 start /Users/jaygordon/work/mern-crud > node server Listening on port 3000 Socket mYwXzo4aovoTJhbRAAAA connected. Online: 1 Connected to the database.
Vamos testar http://localhost:3000 em um navegador:
A parte mais difícil já passou, a próxima parte é a implementação com o coldbrew-cli
que são apenas alguns comandos. Em segunda parte desta série, abordaremos como lançar com o
Se o senhor não conhece os serviços gerenciados do MongoDB, recomendamos que comece com nosso nível gratuito. Para clientes existentes de provedores de serviços terceirizados, não deixe de conferir nossas ofertas de migração e saber como o senhor pode obter 3 meses de serviço gratuito.

Sobre Jay Gordon
Jay Gordon é um defensor do desenvolvedor no MongoDB, focado em fornecer aos usuários uma ótima experiência com produtos em nuvem. Ele entrou para a MongoDB em 2016, depois de muitos anos trabalhando como administrador de sistemas e profissional de DevOps.