Como criar e implantar um app Node.js

Criar um aplicativo Node.js é apenas a primeira parte do ciclo de vida de desenvolvimento de software. Torná-lo acessível, eficiente e resiliente em um ambiente ativo é onde a entrega de aplicativos se torna essencial. A implantação de aplicativos web modernos exige a escolha de uma arquitetura que seja compatível com seu perfil de tráfego, estágio do ciclo de vida e orçamento de recursos.

Seja para lançar um protótipo full stack assistido por IA ou implantar um serviço de back-end de nível de produção, os ambientes de nuvem modernos oferecem caminhos tanto automatizados quanto conteinerizados. Este guia aborda os conceitos fundamentais da arquitetura web do Node.js, aborda as principais considerações de implantação e oferece um passo a passo sobre como criar e implantar um app Node.js em uma infraestrutura gerenciada usando os recursos do nível sem custo financeiro.

O que é o ambiente de execução do Node.js?

O Node.js é um ambiente de execução JavaScript de código aberto e multiplataforma, desenvolvido com base no motor JavaScript V8 do Chrome. Ele permite que o JavaScript seja executado no lado do servidor, fora do navegador, possibilitando que engenheiros criem bases de código full stack unificadas com uma única linguagem de programação.

Diferente dos servidores web multithread tradicionais, que criam uma linha de execução isolada do sistema operacional para cada conexão simultânea, o Node.js opera em um modelo de E/S não bloqueante, de linha de execução única e orientado a eventos. Essa arquitetura torna o Node.js leve e eficiente para lidar com milhares de conexões simultâneas, como APIs RESTful, mensagens em tempo real, serviços de streaming e orquestradores de agentes de IA.

Implantação tradicional do Node.js x plataformas de contêiner sem servidor

Ao se preparar para implantar um back-end Node.js, escolher o ambiente de computação ideal impacta diretamente o overhead de manutenção, a velocidade de escalonamento e a eficiência de custos.

Recurso

Máquinas virtuais (IaaS/VPS)

Hospedagem de PaaS/buildpack

Contêineres modernos sem servidor

Gerenciamento de infraestrutura

Aplicação manual de patches no SO, gerenciamento de firewall e atualizações de ambiente de execução

Uma camada de plataforma totalmente gerenciada, com bloqueios de ambiente de execução do fornecedor

Infraestrutura totalmente gerenciada, sem gerenciamento de SO

Mecanismo de escalonamento

Escalonamento automático de VMs com base em métricas (leva minutos para ativar instâncias)

Escalonamento automático por contagem de instâncias ou limites de workers

Escalonamento automático e instantâneo orientado por solicitações, incluindo a redução da escala a zero

Formato de empacotamento

Arquivos de origem brutos, serviços systemd ou gerenciadores de processos PM2

Integração do repositório Git push com buildpacks automatizados.

Imagens de contêiner padrão da OCI e do Docker

Perfil de custo inativo

Faturado 24 horas por dia, 7 dias por semana, independentemente do tráfego HTTP de entrada

Geralmente requer um preço mínimo de instância base.

Faturamento por segundo durante o processamento de solicitações ativas

Portabilidade

Alta portabilidade, mas alto risco de desvio de ambiente

Baixa portabilidade, bloqueado para convenções de plataforma

Alta portabilidade. Executa contêineres idênticos em qualquer ambiente

Recurso

Máquinas virtuais (IaaS/VPS)

Hospedagem de PaaS/buildpack

Contêineres modernos sem servidor

Gerenciamento de infraestrutura

Aplicação manual de patches no SO, gerenciamento de firewall e atualizações de ambiente de execução

Uma camada de plataforma totalmente gerenciada, com bloqueios de ambiente de execução do fornecedor

Infraestrutura totalmente gerenciada, sem gerenciamento de SO

Mecanismo de escalonamento

Escalonamento automático de VMs com base em métricas (leva minutos para ativar instâncias)

Escalonamento automático por contagem de instâncias ou limites de workers

Escalonamento automático e instantâneo orientado por solicitações, incluindo a redução da escala a zero

Formato de empacotamento

Arquivos de origem brutos, serviços systemd ou gerenciadores de processos PM2

Integração do repositório Git push com buildpacks automatizados.

Imagens de contêiner padrão da OCI e do Docker

Perfil de custo inativo

Faturado 24 horas por dia, 7 dias por semana, independentemente do tráfego HTTP de entrada

Geralmente requer um preço mínimo de instância base.

Faturamento por segundo durante o processamento de solicitações ativas

Portabilidade

Alta portabilidade, mas alto risco de desvio de ambiente

Baixa portabilidade, bloqueado para convenções de plataforma

Alta portabilidade. Executa contêineres idênticos em qualquer ambiente

Principais considerações ao criar um app Node.js

Para desenvolver um aplicativo Node.js pronto para produção, é preciso abordar padrões arquitetônicos que evitam gargalos e garantem o tempo de atividade:

  • Estado do aplicativo sem estado: as plataformas modernas sem servidor ativam e desativam instâncias de contêiner dinamicamente conforme a demanda do tráfego. Evite salvar o estado da sessão do usuário, arquivos de mídia enviados ou filas em segundo plano na memória do contêiner local ou nos caminhos do disco local, porque os arquivos gravados em discos de contêiner temporários desaparecem na reimplantação ou na redução da escala vertical. Use serviços gerenciados dedicados,como o Cloud Firestore, o Cloud SQL para PostgreSQL ou o Cloud Storage para o estado persistente.
  • Variáveis de ambiente e isolamento de secrets: fixar chaves de API, credenciais de banco de dados ou chaves de secrets no controle de origem cria vulnerabilidades de segurança críticas. Sempre isole as configurações de ambiente de execução em variáveis de ambiente (process.env) e as injete com segurança no nível do ambiente de execução do contêiner.
  • Vinculação de portas e sondagens de integridade: os ambientes de contêiner sem servidor encaminham o tráfego HTTP injetando uma porta de destino padrão, como a variável de ambiente PORT (normalmente a porta 8080). Seu servidor Node.js precisa escutar dinamicamente em process.env.PORT || 8080 para ser aprovado nas verificações de integridade e prontidão.
  • Encerramento completo e interceptação de sinais: os aplicativos Node.js precisam interceptar os sinais SIGTERM e SIGINT do sistema operacional. Quando um escalonador automático de infraestrutura inicia uma redução de escala vertical, o tratamento desses sinais garante que as solicitações HTTP atuais terminem de ser processadas antes que as conexões com o banco de dados sejam fechadas e o contêiner seja encerrado.

Como criar e implantar um app Node.js

Você pode criar e implantar um aplicativo Node.js usando dois fluxos de trabalho principais: prototipagem rápida assistida por IA (não é necessário configurar o ambiente local) ou implantação padrão baseada em contêiner (para bases de código atuais).

Programa de treinamentos A: prototipagem rápida, como o modo de criação do AI Studio e o nível Starter (provisionamento sem custo financeiro)

Para prototipagem rápida e aplicativos de IA, o modo de criação do Google AI Studio permite que os desenvolvedores descrevam arquiteturas Node.js full stack em linguagem natural e as implantem no Cloud Run sem ferramentas de linha de comando locais ou configurações de faturamento obrigatórias.

Etapa 1: inicializar o aplicativo no modo de criação

  1. Acesse o Google AI Studio e mude para o Modo de criação.
  2. Insira o comando do aplicativo que descreve a lógica de negócios e a interface de front-end necessárias (por exemplo, "Crie um painel de rastreamento de inventário com um back-end Node.js e gerenciamento de tarefas persistente").
  3. O agente integrado vai gerar os arquivos do aplicativo, configurar as rotas do servidor, instalar as dependências npm relevantes e iniciar uma prévia interativa.

Etapa 2: configurar dados e autenticação integrados

  • Para armazenamento persistente: quando o comando exigir armazenamento de dados, ative o Cloud Firestore ou o Cloud SQL para PostgreSQL (Developer Edition). O AI Studio cria automaticamente seu esquema, modelos e arquivos de conexão do cliente.
  • Para identidade do usuário: ative o Firebase Authentication para habilitar fluxos de login do Google pré-configurados sem precisar configurar manualmente manipuladores de redirecionamento OAuth separados.

Etapa 3: publicar no Cloud Run gerenciado

  1. Clique em Publish > Get Started > Publish App na parte de cima da interface.
  2. Selecione a região de implantação de sua preferência.
  3. Insira um URL personalizado <user-defined>.ai.studio para seu aplicativo e publique.
  4. A plataforma empacota seu contêiner, provisiona a computação e gera um URL de produção HTTPS <user-defined>.ai.studio em segundos.

Caminho B: implantar um aplicativo Node.js personalizado, como o Docker e o Cloud Run

Para bases de código preexistentes e microsserviços personalizados, empacote seu aplicativo Node.js em um contêiner compatível com OCI e implante diretamente no Cloud Run.

Etapa 1: estruturar o código do servidor Node.js

Crie um servidor HTTP mínimo usando o Express, o Fastify ou as bibliotecas padrão do Node.js (index.js):

  • JavaScript
Carregando...

 Observação: o Cloud Run injeta a variável de ambiente PORT automaticamente no ambiente de execução. O substituto || 8080 no código acima é incluído principalmente para facilitar os testes locais na sua máquina antes da implantação.

Etapa 2: criar um Dockerfile seguro com vários estágios

Empacote seu aplicativo usando um build de vários estágios para garantir uma imagem de produção mínima e segura.

Prática recomendada: crie um arquivo .dockerignore no diretório raiz e adicione node_modules e .env a ele. Isso garante que os arquivos de desenvolvimento local não sejam incluídos acidentalmente na imagem do contêiner, mantendo-a limpa e segura.

Crie um arquivo chamado Dockerfile no diretório raiz:

  • Dockerfile
Carregando...

Etapa 3: implantar no Cloud Run

Execute a implantação usando a CLI do Google Cloud na pasta raiz local. Também é possível criar um URL personalizado no formato <definido-pelo-usuário>.cloud.run para seu aplicativo:

  • Bash
Carregando...

Para mapear um domínio personalizado depois, use:

  • Bash
Carregando...

Como funcionam os preços dos níveis sem custo financeiro e Starter

Entender como as alocações sem custo financeiro funcionam garante que você possa criar protótipos e escalonar seu aplicativo Node.js de forma previsível:

Tipo de nível

Subsídios de computação e recursos

Requisitos/limites

Nível Starter do Google Cloud (prototipagem)

• Cloud Run: até dois aplicativos da web ativos

• Cloud Firestore: 1 GiB de armazenamento, 50 mil leituras/dia, 40 mil gravações/dia

• Cloud SQL: PostgreSQL Developer Edition (redução da escala a zero)

• Firebase Auth: inclui o Login do Google

• Conta do Google válida

• Não é necessário ter um cartão de crédito ou uma conta de faturamento

• Bloqueio de região de implantação única

Nível sem custo financeiro padrão do Google Cloud (conta padrão)

• Cloud Run: 2 milhões de solicitações/mês, 180.000 vCPU-segundos/mês, 360.000 GiB-segundos/mês, 1 GB de saída de rede da América do Norte/mês

• Acesso a US$ 300 em créditos de boas-vindas nos primeiros 90 dias



• Conta do Cloud Billing vinculada

• Acesso total à API da plataforma em todas as regiões

Tipo de nível

Subsídios de computação e recursos

Requisitos/limites

Nível Starter do Google Cloud (prototipagem)

• Cloud Run: até dois aplicativos da web ativos

• Cloud Firestore: 1 GiB de armazenamento, 50 mil leituras/dia, 40 mil gravações/dia

• Cloud SQL: PostgreSQL Developer Edition (redução da escala a zero)

• Firebase Auth: inclui o Login do Google

• Conta do Google válida

• Não é necessário ter um cartão de crédito ou uma conta de faturamento

• Bloqueio de região de implantação única

Nível sem custo financeiro padrão do Google Cloud (conta padrão)

• Cloud Run: 2 milhões de solicitações/mês, 180.000 vCPU-segundos/mês, 360.000 GiB-segundos/mês, 1 GB de saída de rede da América do Norte/mês

• Acesso a US$ 300 em créditos de boas-vindas nos primeiros 90 dias



• Conta do Cloud Billing vinculada

• Acesso total à API da plataforma em todas as regiões

Resolva seus desafios comerciais com o Google Cloud

Clientes novos recebem US$ 300 em créditos para usar no Google Cloud.
Fale com um especialista em vendas do Google Cloud para falar sobre soluções exclusivas.

Práticas recomendadas para executar o Node.js em ambientes sem servidor

  1. Otimize as inicializações a frio com dependências enxutas: remova pacotes de desenvolvimento não utilizados (npm prune --production) e agrupe o código do servidor usando tree-shakers de módulos modernos (como esbuild ou tsup) para diminuir o tamanho das imagens e acelerar a inicialização do contêiner.
  2. Configure o máximo de instâncias: ao migrar de um sandbox para um projeto de produção ativo, especifique um limite de simultaneidade e defina --max-instances (por exemplo, --max-instances 5) para garantir que picos de tráfego inesperados não excedam os orçamentos operacionais de destino.
  3. Persistir registros de forma estruturada: transmita registros para stdout e stderr usando o formato JSON estruturado. Os sistemas de registro gerenciados analisam automaticamente os objetos JSON, permitindo que você filtre por códigos de status HTTP, níveis de gravidade e latência de execução.
  4. Use verificações de integridade nativas: implemente sondagens de endpoint HTTP claras (por exemplo, /healthz) que verifiquem a conectividade do banco de dados downstream antes de sinalizar a prontidão para os proxies de roteamento de entrada.

Vá além

Comece a criar no Google Cloud com mais de 20 produtos sem custo financeiro e ganhe US$ 300 em créditos.

Google Cloud