Aprenda como implantar um app Node.js no Google Compute Engine

Aprenda como implantar um app Node.js no Google Compute Engine

Como especialista em desenvolvimento web com mais de 10 anos de experiência, afirmo que implantar um app Node.js no Google Compute Engine é uma das soluções mais robustas e escaláveis para quem deseja levar seus projetos para a nuvem. Além disso, essa tecnologia vem ganhando enorme popularidade entre desenvolvedores e empresas por sua eficiência e facilidade de integração com outros serviços do Google Cloud.

Por que escolher o Google Compute Engine?

Antes de tudo, o Google Compute Engine (GCE) é uma das plataformas de infraestrutura como serviço (IaaS) mais poderosas do mercado. Acima de tudo, oferece flexibilidade para criar, configurar e gerenciar máquinas virtuais (VMs) sob demanda.

Além disso, GCE proporciona:

  • Alta escalabilidade.
  • Redundância global.
  • Segurança avançada.
  • Integração nativa com diversos serviços Google.

Sobretudo, se você quer rodar um app Node.js com alta performance e disponibilidade, GCE é uma das melhores escolhas.

Preparando o ambiente para o app Node.js

Criando uma conta no Google Cloud Platform

Primeiramente, para implantar seu app, é preciso criar uma conta no Google Cloud Platform (GCP). Acesse console.cloud.google.com e siga o passo a passo.

Além disso, o GCP oferece um crédito gratuito inicial, ideal para testes.

Configurando o projeto no GCP

Em primeiro lugar, após criar sua conta, é necessário configurar um novo projeto. Para isso:

  1. Clique em “Select Project”.
  2. Depois, em “New Project”.
  3. Insira o nome e as configurações desejadas.

Nesse sentido, manter um projeto bem organizado é essencial para gerenciar recursos e custos.

Criando a instância no Google Compute Engine

Ativando a Compute Engine API

Antes de mais nada, ative a API do Google Compute Engine:

  1. Acesse “Compute Engine” no painel de navegação.
  2. Clique em “Enable”.

Em outras palavras, essa ativação permitirá que você crie e gerencie suas máquinas virtuais.

Configurando a máquina virtual

Principalmente, configure a VM de acordo com a necessidade do seu app Node.js:

  • Região e Zona: Escolha próximas ao seu público.
  • Tipo de máquina: Para apps pequenos, uma e2-micro ou e2-small pode ser suficiente.
  • Disco: 10 GB padrão é um bom começo.
  • Sistema Operacional: Ubuntu LTS é altamente recomendado.

Além disso, habilite as portas HTTP e HTTPS para permitir acesso ao app.

Conectando-se à VM via SSH

A princípio, após a criação da VM, você precisa se conectar a ela. Clique em “SSH” no painel do GCE.

Por exemplo:

bashCopiarEditargcloud compute ssh [NOME-DA-VM] --zone=[ZONA-DA-VM]

Bem como, você pode usar o terminal do próprio console do GCP ou aplicativos como o PuTTY.

Instalando o Node.js e o npm na VM

Atualizando os pacotes do sistema

Primeiramente, atualize os pacotes:

bashCopiarEditarsudo apt update && sudo apt upgrade -y

Instalando o Node.js

Em seguida, instale o Node.js:

bashCopiarEditarsudo apt install nodejs -y

Instalando o npm

Do mesmo modo, instale o npm (Node Package Manager):

bashCopiarEditarsudo apt install npm -y

Assim, seu ambiente já estará preparado para executar apps Node.js.

Transferindo o app Node.js para a VM

Utilizando o Git

Acima de tudo, a maneira mais prática é clonar seu repositório via Git:

bashCopiarEditargit clone https://github.com/seuusuario/seurepositorio.git

Ou seja, mantenha seu código sempre versionado e atualizado.

Enviando arquivos manualmente

Apesar disso, se preferir, envie os arquivos com scp:

bashCopiarEditarscp -r /caminho/do/seu/app usuario@ip-da-vm:/caminho/de/destino

Contudo, essa abordagem é menos prática para atualizações constantes.

Instalando dependências do app Node.js

Depois de transferir os arquivos, acesse a pasta do app e instale as dependências:

bashCopiarEditarcd seurepositorio
npm install

Em outras palavras, esse comando vai preparar todas as bibliotecas necessárias para o funcionamento do seu app.

Configurando variáveis de ambiente

Criando o arquivo .env

Principalmente, crie um arquivo .env para armazenar variáveis sensíveis, como chaves de API ou configurações de banco de dados.

Por exemplo:

iniCopiarEditarPORT=3000
DATABASE_URL=mongodb://usuario:senha@host:porta/db

Instalando o dotenv

Caso ainda não tenha, instale o dotenv:

bashCopiarEditarnpm install dotenv

Por fim, importe no seu app.js:

javascriptCopiarEditarrequire('dotenv').config();

Executando o app Node.js na VM

Testando o app

Antes de tudo, rode o app manualmente para testar:

bashCopiarEditarnode app.js

Ou, se tiver configurado o package.json:

bashCopiarEditarnpm start

Nesse sentido, verifique se o app está rodando na porta configurada.

Instalando o PM2 para gerenciamento de processos

Acima de tudo, use o PM2 para manter o app rodando em background e garantir o reinício automático em caso de falhas:

bashCopiarEditarsudo npm install pm2 -g

Depois:

bashCopiarEditarpm2 start app.js
pm2 save
pm2 startup

Dessa forma, seu app estará sempre disponível.

Configurando firewall e regras de rede

Principalmente, garanta que as portas 80 e 443 estejam liberadas.

No GCP:

  1. Acesse “VPC Network” > “Firewall Rules”.
  2. Crie uma regra para liberar as portas desejadas.

Ou seja, sem essa configuração, ninguém conseguirá acessar seu app.

Configurando um domínio para o app

Registrando um domínio

Primeiramente, se ainda não tem, registre um domínio em plataformas como Google Domains ou GoDaddy.

Configurando o DNS

Depois, aponte o DNS para o IP externo da sua VM.

Por exemplo:

  • Tipo: A
  • Host: @
  • Valor: IP externo da VM

Assim, qualquer pessoa poderá acessar seu app via domínio personalizado.

Instalando e configurando o NGINX como proxy reverso

Instalando o NGINX

Antes de mais nada, instale o NGINX:

bashCopiarEditarsudo apt install nginx -y

Configurando o proxy

Depois, edite o arquivo de configuração:

bashCopiarEditarsudo nano /etc/nginx/sites-available/default

Exemplo de configuração:

nginxCopiarEditarserver {
    listen 80;
    server_name seu-dominio.com;

    location / {
        proxy_pass http://localhost:3000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }
}

Por fim, reinicie o NGINX:

bashCopiarEditarsudo systemctl restart nginx

Configurando SSL com Let’s Encrypt

Instalando Certbot

A princípio, instale o Certbot:

bashCopiarEditarsudo apt install certbot python3-certbot-nginx -y

Emitindo o certificado SSL

Em seguida, execute:

bashCopiarEditarsudo certbot --nginx -d seu-dominio.com -d www.seu-dominio.com

Assim, seu app estará acessível via HTTPS, garantindo segurança e credibilidade.

Automatizando deploys com CI/CD

Usando o GitHub Actions

Além disso, você pode configurar o GitHub Actions para automatizar o deploy.

Por exemplo, crie um arquivo .github/workflows/deploy.yml com os comandos necessários para SSH na VM e atualizar o app.

Vantagens do CI/CD

  • Deploys automáticos e rápidos.
  • Menos erros humanos.
  • Maior confiabilidade.

Ou seja, profissionaliza o ciclo de desenvolvimento.

Monitorando o app no Google Cloud

Ativando o Cloud Monitoring

Em primeiro lugar, ative o Google Cloud Monitoring e o Cloud Logging para monitorar desempenho, erros e recursos.

Configurando alertas

Depois, configure alertas para saber quando o app estiver com problemas, evitando tempo de inatividade.

Por exemplo:

  • Consumo elevado de CPU.
  • Quedas de serviço.

Assim, você garante alta disponibilidade e confiança aos usuários.

Minhas Impressões Pessoais

Pessoalmente, considero a implantação de apps Node.js no Google Compute Engine uma experiência robusta e altamente escalável. Os recursos extras, como integração com o Cloud Monitoring e facilidade de uso do NGINX, tornam o processo seguro e profissional.

Conclusão

Portanto, aprender como implantar um app Node.js no Google Compute Engine é essencial para quem busca soluções escaláveis e profissionais. Afinal, com poucos passos, é possível colocar no ar aplicações de alta performance, contando com toda a infraestrutura poderosa do Google Cloud. Assim, você eleva a qualidade dos seus projetos, garantindo segurança, confiabilidade e experiência de uso excepcionais.

Samsung Galaxy A55 5G, Câmera Tripla Traseira de até 50MP, Selfie de 32MP, Nightography, Apagador de objetos, Design em metal e vidro, IP67, Super AMOLED 6.6" 120Hz Vision Booster, 128GB - Azul Claro

Amazon.com.br

Samsung Galaxy A55 5G, Câmera Tripla Traseira de até 50MP, Selfie de 32MP, Nightography, Apagador de objetos, Design em metal e vidro, IP67, Super AMOLED 6.6" 120Hz Vision Booster, 128GB - Azul Escuro

Amazon.com.br

Smartphone Samsung Galaxy A56 5G 128GB, 8GB RAM, Câmera 50MP, IP67, Super AMOLED 6.7", Recursos AI, Preto

Amazon.com.br
Aprenda como implantar um app Node.js no Google Compute Engine

Perguntas Frequentes (FAQ)

Como faço para criar uma instância no Google Compute Engine?

Para criar uma instância, acesse o Console do Google Cloud, clique em “Compute Engine” e depois em “Criar instância”. Escolha a configuração que desejar e clique em “Criar”.

Quais são os passos para implantar meu app Node.js?

Primeiro, faça o upload do seu código para a instância. Depois, instale o Node.js, copie os arquivos e execute o comando node seuApp.js para iniciar o app.

Como posso acessar meu app após a implantação?

Acesse seu app pelo IP externo da sua instância no navegador. Certifique-se de que a porta que seu app está usando esteja aberta nas configurações de firewall.

Prof. Eduardo Henrique Gomes
Prof. Eduardo Henrique Gomes

Apaixonado por tecnologia e análise de gadgets, trazendo reviews e insights para a Web Academy.