Implantação fácil do MEAN stack com MongoDB Atlas, Cloud Run e HashiCorp Terraform
Avalie esse Artigo
Este artigo foi originalmente escrito por Aja Hammerly e Abirami Sukumaran, defensores dos desenvolvedores do Google.
A computação sem servidor promessas a capacidade de gastar menos tempo na infraestrutura e mais tempo no desenvolvimento de seu aplicativo. Mas, historicamente, se você usasse ofertas sem servidor de diferentes fornecedores, não notou esse benefício. Em vez disso, você costumava gastar uma quantidade significativa de tempo configurando os diferentes produtos e garantindo que eles possam se comunicar uns com os outros. Queremos tornar isso mais fácil para todos. Começamos usando o Terraform do HashiCorp para facilitar o provisionamento de recursos para executar a pilha MEAN no Cloud Run com o MongoDB Atlas como seu banco de dados. Se você quiser experimentar, nosso repositório do GitHub está aqui: https://github.com/GoogleCloudPlatform/termoform-mean-cloudrun-mongodb
Se você não conhece, a pilha MEAN é uma pilha de tecnologia para a construção de aplicações web. A pilha MEAN é composta por quatro componentes principais – MongoDB, Express, Angular e Node.js.
- O MongoDB é responsável pelo armazenamento de dados
- Express é uma estrutura de aplicativo da web Node.js para criar API
- O Angular é uma plataforma JavaScript do lado do cliente
- O Node.js é um ambiente de tempo de execução JavaScript do lado do servidor. O servidor usa o driver Node.js do MongoDB para se conectar ao banco de dados e recuperar e armazenar dados
Nosso projeto executa a pilha MEAN no Cloud Run (Express, Node) e no MongoDB Atlas (MongoDB).
O repositório usa um aplicativo de exemplo para facilitar a compreensão de todas as partes. Na amostra usada nesta experiência, temos um aplicativo de cliente e um de servidor empacotados em contêineres individuais que usam o driver MongoDB-Node.js para se conectar ao banco de dados MongoDB Atlas.
A seguir, falaremos sobre como usamos o Terraform para facilitar a implantação e a configuração dessa pilha para os desenvolvedores e como você pode tentar fazer isso por conta própria.
Para usar esses scripts, você precisará ter contas MongoDB Atlas e Google Cloud.
- Faça login com sua conta do MongoDB Atlas.
- Depois de fazer login, clique em " Access Manager " na parte superior e selecione " Organization Access "
- Selecione a guia " API Keys " e clique no botão " Create API Key "
- Dê uma breve descrição à sua nova chave e selecione a permissão "Proprietário da organização"
- Clique em "Avançar" e anote suas chaves pública e privada
- Em seguida, você precisará do ID da organização. No menu de navegação esquerdo, clique em “Settings”.
- Localize o ID da sua organização e copie-o.
Isso é tudo para o Atlas. Agora você está pronto para configurar o Google Cloud!
Você precisará configurar uma conta de faturamento na sua conta do Google Cloud e anotar o ID da conta de faturamento. Você pode encontrar o ID da sua conta de faturamento na página de faturamento.
Você também precisará escolher uma região para sua infraestrutura. Observe que Google Cloud e Atlas usam nomes diferentes para a mesma região. Você pode encontrar um mapeamento entre as regiões do Atlas e as regiões do Google Cloud aqui. Você precisará de uma região que ofereça suporte à camada de cluster M0 . Escolha uma região perto de você e anote os nomes de região do Google Cloud e do Atlas.
Por fim, você precisará de um terminal com o Google Cloud CLI (gcloud) e oTerraform instalados. Você pode usar sua estação de trabalho ou experimentar o Cloud Shell, que tem essas ferramentas já instaladas. Para começar a usar o Cloud Shell com o repositório clonado e pronto para ser configurado, clique aqui.
Se ainda não o fez, clone este repositório. Execute o
terraform init
para garantir que o Terraform esteja funcionando corretamente e baixe os plugins do provedor. Em seguida, crie um arquivo na raiz do repositório chamado terraform.tfvars
com o seguinte conteúdo, substituindo os espaços reservados conforme necessário:atlas_pub_key = "<sua chave pública do<your Atlas public key>Atlas>"
atlas_priv_key = "<your Atlas private key>"
atlas_org_id = "<ID da sua organização<your Atlas organization ID>Atlas>"
google_billing_account = "<your billing account ID>"
Se você selecionou a região1/US_CENTRAL central, está Go. Se você selecionou uma região diferente, adicione o seguinte ao seu arquivo
terraform.tfvars
:atlas_cluster_region = "<ID da região do<Atlas region ID>Atlas>"
google_cloud_region = "<ID da região do Google<Google Cloud region ID>Cloud>"
Execute o Terraform init novamente para garantir que não haja novos erros. Se você receber um erro, verifique seu arquivo terraform.tfvars.
Você está pronto para implantar! Você tem duas opções: executar
terraform plan
para ver uma lista completa de tudo o que o Terraform quer fazer sem nenhum risco de criar esses recursos acidentalmente. Se tudo estiver bem, você poderá executar terraform apply
para executar o plano.Como alternativa, você pode simplesmente executar a aplicação de Terraform por conta própria e ele criará um plano e o exibirá antes de solicitar que você continue. Você pode saber mais sobre o plano e aplicar comandos neste tutorial. Para esta demonstração, vamos apenas executar
terraform apply
:Se tudo parecer bem para você, digite sim e pressione Enter. Isso levará alguns minutos. Quando terminar, o Terraform exibirá a URL do seu aplicativo:
Abra essa URL no seu navegador e você verá o aplicativo de exemplo em execução.
Quando terminar, execute Terraform Destruir para limpar tudo:
Se tiver certeza de que deseja demolir tudo, digite yes e pressione enter. Isso levará alguns minutos. Quando o Terraform for feito, tudo o que ele criou terá sido destruído e você não será cobrado por nenhum uso adicional.
Você pode usar o código nesse repositório para implantar seus próprios aplicativos. Pronto para uso, ele funcionará com qualquer aplicativo executado em um único contêiner e que leia a string de conexão do MongoDB de uma variável de ambiente chamada ATLAS_URI, mas o código do Terraform pode ser facilmente modificado se você tiver necessidades diferentes ou para oferecer suporte a aplicativos mais complexos.