O que é Node.js? Uma explicação para iniciantes
Aprenda o que é Node.js, como ele executa JavaScript em servidores, por que o event loop importa e quando Node.js é uma boa escolha para seu app.

Node.js em linguagem simples
Node.js é um programa que permite executar JavaScript no seu computador (ou em um servidor), não apenas dentro de um navegador.
O que é (e o que não é)
É fácil confundir termos, então aqui vai a versão clara:
- Node.js não é uma linguagem de programação — a linguagem é JavaScript.
- Node.js não é um framework — frameworks (como Express) são construídos sobre o Node.js.
Pense no Node.js como a “sala de máquinas” que pode executar código JavaScript fora do Chrome, Firefox, Safari etc.
“Executar JavaScript fora do navegador” — o que isso realmente significa
Normalmente, o JavaScript controla coisas que você clica e vê em uma página: menus, formulários, interfaces interativas. O navegador fornece o ambiente (acesso à página, botões, janelas e assim por diante).
O Node.js fornece um ambiente diferente. Em vez de trabalhar com a página, seu JavaScript pode trabalhar com seu computador e a rede: ler arquivos, conversar com bancos de dados, lidar com requisições web e executar tarefas agendadas.
O que você pode construir com isso
Quando o JavaScript pode rodar fora do navegador, algumas coisas práticas acontecem:
- Servidores e APIs: construa o “backend” que recebe requisições e envia dados de volta.
- Scripts: automatize tarefas repetitivas como renomear arquivos, processar CSVs ou gerar relatórios.
- Ferramentas para desenvolvedores: crie ferramentas de linha de comando e utilitários que outros desenvolvedores instalam e usam.
Então, quando alguém diz “nosso backend é Node.js”, normalmente quer dizer: “Nosso código server-side está escrito em JavaScript e roda no Node.js.”
Por que o Node.js existe (um rápido histórico)
Node.js existe porque servidores web antigos tinham dificuldade com um trabalho bem específico e comum: lidar com muitas requisições pequenas ao mesmo tempo — especialmente quando essas requisições envolviam esperar por coisas lentas como bancos de dados, sistemas de arquivos ou APIs externas.
A dor que desenvolvedores web sentiam antes do Node.js
Antes do Node.js, muitas arquiteturas de servidor tratavam cada conexão entrante no estilo “uma requisição, uma thread/processo”. Esse modelo funciona, mas pode ficar caro e ineficiente quando milhares de usuários estão conectados ao mesmo tempo.
Um exemplo clássico é um app de chat ou um painel ao vivo: o servidor passa grande parte do tempo esperando (por respostas de rede, leituras de disco, consultas ao banco). Se cada usuário “ocupa” uma thread pesada enquanto o servidor espera, você consome memória e CPU só para ficar ocioso.
A história rápida de origem
Node.js foi criado em 2009 por Ryan Dahl. A ideia era direta:
- Usar o motor V8 do Google (execução rápida de JavaScript)
- Tornar operações de I/O não-bloqueantes por padrão
- Lidar com muitas conexões de forma eficiente sem criar uma thread por requisição
Esse desenho tornou o Node.js especialmente bom para construir aplicações de rede que precisam permanecer responsivas sob concorrência.
Como ganhou força: comunidade + npm
Node.js cresceu rápido porque combinava com a forma como desenvolvedores web já pensavam: JavaScript em toda parte. Logo depois, o npm (gerenciador de pacotes do Node) tornou fácil compartilhar e reutilizar código. Essa combinação — linguagem familiar + enorme ecossistema de bibliotecas — ajudou o Node a sair de “experimento interessante” para ferramenta mainstream.
Onde o Node.js se encaixa nas stacks modernas
Hoje, o Node.js frequentemente alimenta:
- APIs de backend (REST/GraphQL)
- Recursos em tempo real (chat, colaboração, notificações)
- Ferramentas de build para front-end (bundlers, linters, servidores de desenvolvimento)
Ele pode ficar atrás de um app web ou móvel, atuar como um “backend-for-frontend” ou rodar renderização do lado servidor quando frameworks precisam disso.
Como o Node.js funciona por dentro
Node.js é frequentemente descrito como um “runtime JavaScript”. Um runtime é simplesmente um ambiente que pode executar código JavaScript e fornecer capacidades extras que o JavaScript puro não tem por si só — como ler arquivos, abrir conexões de rede ou iniciar outros programas.
O motor: V8
No núcleo do Node.js está o V8, o motor JavaScript também usado pelo Google Chrome. O V8 pega seu JavaScript e o executa de forma eficiente na sua máquina, compilando-o em instruções de baixo nível que o computador pode executar rapidamente.
Detalhe importante: V8 não é o Node.js. O V8 foca em rodar a linguagem JavaScript. Node.js é o pacote mais amplo: V8 mais a “cola” que conecta o JavaScript ao seu sistema operacional.
Os “poderes extras”: APIs nativas do Node
O que faz o Node.js parecer uma ferramenta server-side é sua coleção de módulos embutidos (APIs) que expõem recursos do SO de forma amigável ao JavaScript. Por exemplo:
- APIs de sistema de arquivos permitem ler e escrever arquivos (logs, uploads, arquivos de configuração).
- APIs de rede permitem criar servidores, fazer requisições HTTP e trabalhar com sockets.
- APIs de processo permitem acessar variáveis de ambiente, tratar argumentos da linha de comando e gerenciar como sua app roda.
Quando você chama algo como fs.readFile(...) ou inicia um servidor HTTP, o Node encaminha esse trabalho para o sistema subjacente (e bibliotecas nativas) e depois retorna o resultado ao seu JavaScript.
Node.js vs JavaScript (a linguagem)
JavaScript é a linguagem: sintaxe, variáveis, funções e assim por diante.
Node.js é um lugar onde você pode executar essa linguagem — especificamente um lugar projetado para criar ferramentas de linha de comando e serviços de backend, com acesso à máquina onde roda. No navegador, o JavaScript tem APIs do navegador (DOM, window). No Node, ele tem APIs do Node (sistema de arquivos, rede, processos).
O Event Loop e I/O Não-Bloqueante (sem jargões)
Quando as pessoas dizem que o Node.js é “assíncrono”, elas geralmente querem dizer que ele é bom em esperar sem desperdiçar tempo.
Trabalho assíncrono: um exemplo do dia a dia
Imagine que você está fazendo o jantar e coloca uma panela de água no fogo. Você não fica parado olhando até ferver — você corta os legumes, arruma a mesa e verifica o molho. Quando a água ferve, você reage.
Muito do trabalho de servidor é assim: o programa pede algo que demora (ler um arquivo, consultar um banco de dados, chamar uma API) e então espera o resultado. Em muitos sistemas, esperar pode “bloquear” todo o programa. O Node.js tenta evitar isso.
O event loop: um controlador de tráfego
O event loop é como um controlador de tráfego para tarefas. Requisições e callbacks se alinham, e o event loop decide o que roda em seguida. Se uma tarefa pode ser iniciada e depois esperada (como uma operação de I/O), o Node repassa isso para o sistema, segue para outro trabalho e é notificado quando o resultado estiver pronto.
Por isso um servidor Node.js pode lidar com muitas conexões de forma eficiente: ele não mantém uma thread presa esperando cada leitura lenta de disco ou resposta de rede.
I/O não-bloqueante em termos simples
“I/O não-bloqueante” significa simplesmente: inicie a operação lenta e continue fazendo outras coisas enquanto ela termina. Quando terminar, o Node executa a próxima parte do código que você forneceu (frequentemente um callback, resolução de promise ou continuação async/await).
Uma ressalva importante: tarefas pesadas de CPU
Esse estilo brilha em cargas I/O-heavy, mas não é mágica para tudo. Se você rodar um cálculo pesado de CPU (como processamento de imagem, encriptação grande ou grande crunch de dados) na thread principal, isso ainda pode deixar tudo lento — porque o event loop não consegue “pular” uma tarefa que está usando ativamente a CPU.
Para que o Node.js é usado
Node.js é mais usado para construir software server-side com JavaScript: APIs com que um site ou app móvel conversa, serviços que processam jobs em background e servidores web que entregam páginas e dados.
Como o Node.js é bom em lidar com muitas requisições sem ficar esperando, é uma escolha popular quando seu app faz muitas pequenas tarefas de I/O (ler banco, chamar outros serviços, enviar mensagens) em vez de cálculos pesados.
Casos de uso comuns
Alguns lugares onde o Node.js aparece com frequência:
- APIs e serviços de backend: endpoints REST/JSON, autenticação, dashboards, painéis administrativos.
- Servidores web: servir páginas dinâmicas, renderização no servidor, lidar com formulários.
- Apps em tempo real: tudo que se beneficia de atualizações rápidas para muitos usuários ao mesmo tempo.
Bons encaixes: recursos “always-on” e em tempo real
Node.js é uma boa combinação para:
- Chat e colaboração (mensagens, indicadores de digitação, presença)
- Notificações (push, alertas in-app, push por email/SMS)
- Streaming de dados (streams de logs, feeds ao vivo, processamento incremental)
- Microserviços (vários serviços pequenos conversando pela rede)
Não é só servidores: tooling e automação
Node.js também é amplamente usado para ferramentas de desenvolvedor, como scripts de build, task runners e CLIs (comandos que você roda no terminal). Muitos fluxos de trabalho modernos de front-end dependem de ferramentas baseadas em Node mesmo que o app final rode no navegador.
Quando o Node.js não é ideal
Node.js geralmente não é a melhor escolha para computação pesada de CPU (como renderização de vídeo complexa ou grandes cálculos científicos) porque essas tarefas podem bloquear o processo. Nesses casos, equipes costumam delegar trabalho para serviços separados, workers em segundo plano ou linguagens mais adequadas ao compute-heavy.
Node.js vs JavaScript no Navegador
JavaScript é a linguagem. Node.js e seu navegador são dois ambientes distintos que podem executar essa linguagem.
Mesma linguagem, “casas” diferentes
Se você conhece o básico de JavaScript — variáveis, funções, objetos, async/await, promises — esses conceitos se aplicam diretamente. O que muda é o que seu código pode acessar.
O que o navegador oferece
O JavaScript do navegador é pensado para construir interfaces. Tem acesso ao DOM (a página), eventos de cliques e digitação, e APIs do navegador como localStorage, cookies e Web APIs baseadas em permissões.
Também é fortemente sandboxed por segurança: páginas web não podem ler livremente arquivos do seu computador ou abrir conexões de rede arbitrárias. Os navegadores aplicam limites para proteger usuários.
O que o Node.js adiciona
Node.js é voltado para executar JavaScript fora do navegador — frequentemente em servidores. Ele dá ao seu código capacidades de nível de sistema, como:
- Acesso ao sistema de arquivos (ler/gravar arquivos, processar uploads, gerar PDFs etc.)
- Rede (rodar um servidor HTTP, abrir sockets, conversar com bancos de dados)
- Variáveis de ambiente via
process.env(armazenar segredos e configuração)
Esse poder adicional também implica expectativas de segurança diferentes. Apps Node não são automaticamente isolados como no navegador. Se seu processo Node tem permissão para ler um arquivo ou conectar-se a uma rede, geralmente pode fazê-lo — então proteja-o com práticas de segurança de servidores (controle de acesso, gestão de segredos, higiene de dependências).
Uma forma útil de lembrar
O JS do navegador ajuda você a construir o front end (o que o usuário vê). Node.js ajuda a construir o back end (o que roda por trás das cenas). Mesma linguagem — ferramentas e responsabilidades diferentes.
npm e o ecossistema de pacotes do Node
Uma razão do rápido crescimento do Node.js é o npm, o gerenciador de pacotes que vem com Node. Pense no npm como uma forma conveniente de baixar, atualizar e compartilhar blocos de código prontos para sua aplicação.
O que são “pacotes” (módulos)
No Node.js, um pacote (ou módulo) é um pedaço reutilizável de código que resolve um problema específico — desde parsing de datas até construir um servidor web.
Ao invés de escrever tudo do zero, você instala um pacote e o usa imediatamente. Isso acelera o desenvolvimento e permite confiar em código que muitas pessoas já testaram em projetos reais.
Como um projeto usa o package.json
A maioria dos projetos Node tem um package.json na raiz. É a “lista de compras” e o cartão de metadados do projeto.
Normalmente inclui:
- O nome e versão do projeto
- A lista de dependências que a app precisa para rodar
- Ferramentas de desenvolvimento (test runners, linters)
- Scripts úteis como
npm run startounpm test
Quando você roda npm install, o npm lê o package.json, baixa as versões corretas e coloca tudo numa pasta chamada node_modules.
Checklist rápido de segurança
O registro npm é enorme, o que é ótimo — mas também significa que você deve ser seletivo.
Prefira pacotes com manutenção ativa (atualizações recentes, documentação clara, tracker de issues saudável). Evite instalar cegamente comandos de snippets aleatórios e tome cuidado com comandos de “copy‑paste” que você não entende. Se um pacote parece exagerado para uma tarefa pequena, talvez uma opção menor ou uma solução embutida seja mais segura.
Frameworks populares do Node.js (Express e afins)
Node.js fornece os blocos básicos para criar um servidor: lidar com requisições, enviar respostas, ler arquivos, conversar com bancos e muito mais. Um framework é um conjunto de padrões e utilitários prontos que ficam sobre o Node.js para organizar esses blocos de forma mais clara — assim você não precisa reinventar a mesma estrutura em cada projeto.
Express: o ponto de partida comum
Express costuma ser o primeiro framework de Node que as pessoas aprendem porque é pequeno, flexível e muito usado.
Com Express você pode:
- definir rotas como “quando alguém visita
/products, execute este código” - encaixar middleware (funções pequenas) para logging, autenticação ou parse de JSON
- deixar sua app mais fácil de expandir do que ter tudo em um único arquivo gigante
Ele não força uma estrutura rígida de projeto, o que é ótimo para aprender e para apps menores.
Outras opções populares (sem entrar em muitos detalhes)
Se você gosta da simplicidade do Express mas quer performance e padrões modernos, Fastify é uma alternativa popular.
Se preferir uma abordagem mais opinativa e “batteries-included”, especialmente para times grandes, NestJS é comum. Ele incentiva uma arquitetura estruturada (controllers, services, modules), o que facilita a manutenção de grandes bases de código.
Quando usar “só Node” vs um framework
Use só Node.js quando estiver construindo algo muito pequeno (um webhook rápido, uma ferramenta interna mínima) ou quiser controle máximo e dependências mínimas.
Escolha um framework quando esperar múltiplas rotas, lógica de tratamento de requisições repetida ou um projeto que vai crescer com o tempo. A estrutura do framework economiza tempo e evita que a complexidade se acumule.
Benefícios e trade-offs do Node.js
Node.js é popular porque torna o JavaScript uma escolha prática para trabalho server-side — especialmente quando sua app passa a maior parte do tempo esperando por respostas de rede ou banco de dados.
Benefícios (quando faz sentido)
Uma grande vantagem é usar uma linguagem só no front e no back. Times podem compartilhar conhecimento, reutilizar validações e manter um conjunto de ferramentas consistente.
Node.js também brilha em I/O. Se sua app lida com muitas requisições concorrentes — APIs, atualizações em tempo real, chat, dashboards, streaming — a abordagem não-bloqueante do Node pode ser eficiente e econômica.
Por fim, o ecossistema é enorme. Há pacotes npm para quase tudo: servidores web, autenticação, uploads, pagamentos, testes e mais. Isso acelera a entrega quando você escolhe com cuidado.
Trade-offs (o que pode atrapalhar)
Dependências podem ficar complexas. Projetos modernos em Node podem puxar centenas (ou milhares) de pacotes transitivos. Isso aumenta trabalho de atualização, revisão de segurança e chance de conflitos.
Há também uma curva de aprendizado assíncrona. O estilo assíncrono do JavaScript (Promises, async/await, callbacks em código mais antigo) é poderoso, mas pode levar a fluxos difíceis de seguir se o código não for bem estruturado.
Node.js não é a melhor escolha para tarefas pesadas de CPU (como encoding de vídeo ou cálculos científicos pesados). Dá para fazê-las, mas muitas vezes será necessário usar workers, filas ou serviços em outras linguagens para manter a app responsiva.
Manutenibilidade: por que TypeScript é comum
Muitas equipes usam TypeScript para tornar projetos Node mais fáceis de manter. Tipos pegam erros mais cedo, melhoram o autocomplete e tornam refatores mais seguros — útil conforme a base de código e o time crescem.
O resumo: prós e contras do Node dependem da carga do projeto, da experiência do time e de quão disciplinado você é com dependências e arquitetura.
Como começar com Node.js
Começar com Node.js é principalmente instalar o runtime no seu computador para que ele possa executar JavaScript fora do navegador.
O que “instalar Node” significa na prática
Quando você instala Node.js, você está instalando:
- O runtime do Node (o programa que executa arquivos JavaScript)
- npm (o gerenciador de pacotes do Node, usado para instalar e gerenciar bibliotecas)
Num servidor, a ideia é a mesma: você instala o Node para que o servidor possa rodar sua app JavaScript — normalmente como um processo de longa duração.
Escolha a versão certa: LTS vs Current
As releases do Node normalmente seguem duas trilhas:
- LTS (Long-Term Support): mais estável, recebe correções de segurança e bugs por mais tempo. É a escolha comum para a maioria das pessoas e para produção.
- Current: traz recursos novos mais cedo, mas atualiza com mais frequência.
Se estiver em dúvida, escolha LTS.
Seus primeiros passos: rodar um script, iniciar um servidor, usar npm
- Rode um script
Crie um arquivo chamado hello.js:
console.log("Hello from Node!");
Rode-o:
node hello.js
- Inicie um servidor web mínimo
import http from "node:http";
http.createServer((req, res) => {
res.writeHead(200, { "Content-Type": "text/plain" });
res.end("It works!\n");
}).listen(3000);
console.log("Server running on http://localhost:3000");
- Use pacotes npm
Inicialize um projeto e instale um pacote:
npm init -y
npm install express
Onde o Koder.ai pode ajudar (opcional)
Se seu objetivo é aprender conceitos de Node.js mas ainda entregar algo rapidamente, uma plataforma de vibe-coding como Koder.ai pode ser um atalho prático: você descreve o app no chat (rotas, modelo de dados, autenticação, UI), itera no modo planejamento e exporta o código-fonte quando estiver pronto para estudar ou customizar. Não substitui entender Node, mas pode reduzir o atrito de setup enquanto você foca em como APIs e fluxos assíncronos funcionam.
Checklist rápido para produção
Antes de deployar, pense em:
- Logging: capture erros e eventos chave (não só
console.log). - Monitoramento: acompanhe uptime, performance e quedas.
- Atualizações: mantenha Node (especialmente LTS) e dependências atualizados por segurança.
Mitos comuns e FAQs sobre Node.js
Node.js atrai muitas opiniões fortes — frequentemente baseadas em frases pela metade. Aqui estão alguns mitos comuns, explicados em linguagem clara.
“Node.js é a mesma coisa que npm”
São coisas relacionadas, mas diferentes. Node.js é o programa que executa JavaScript na sua máquina/servidor (um runtime). npm é o gerenciador de pacotes que ajuda a baixar e gerenciar bibliotecas de terceiros (frequentemente chamadas de pacotes npm).
“Node.js é só para startups ou apps pequenos”
Node é usado por times pequenos e por grandes empresas. É uma escolha prática para APIs, recursos em tempo real (chat, notificações), ferramentas de desenvolvedor e backends onde JavaScript no servidor é conveniente.
“Node é single-threaded, então deve ser lento”
A execução principal do JavaScript no Node roda em uma thread, mas isso não significa que seja lento. A ideia-chave é I/O não-bloqueante: enquanto o Node espera por rede ou disco, ele pode continuar atendendo outras requisições. Tarefas CPU-heavy podem ser um problema, mas para muitas cargas web o Node é rápido e eficiente.
“Node não escala”
Node escala de formas comuns e comprovadas: rodando várias instâncias/processos e distribuindo o tráfego (por exemplo, atrás de um load balancer). Muitos sistemas Node em produção usam essa abordagem para lidar com alto tráfego.
“Devo escolher Node.js para todo projeto?”
Nenhuma ferramenta é universal. Node é ótimo quando você quer JavaScript de ponta a ponta, grande ecossistema e boa performance para workloads I/O-heavy. Se seu projeto é majoritariamente CPU-bound ou tem requisitos rígidos de tempo de resposta sob compute intenso, outra stack pode ser melhor.
Escolhendo Node.js para seu próximo projeto
Node.js é uma forma de executar JavaScript no servidor, o que significa que você pode construir backends, ferramentas e serviços usando a mesma linguagem que muitos times já usam no front end. Geralmente brilha quando sua app passa a maior parte do tempo esperando por rede, banco, uploads ou APIs de terceiros.
Quando Node.js é uma ótima escolha
Escolha Node.js se você estiver construindo:
- APIs REST/JSON para web ou apps móveis
- Recursos em tempo real como chat, dashboards ao vivo, notificações ou colaboração
- BFF (Backend-for-Frontend) que combina múltiplas APIs para uma UI
- Funções serverless e microserviços pequenos onde iteração rápida importa
- Ferramentas de desenvolvedor (scripts, CLIs, helpers de build) graças ao ecossistema npm
Uma regra prática: se o projeto é principalmente “lidar com muitas requisições e coordenar I/O”, Node.js costuma ser uma escolha forte.
Quando pensar duas vezes
Considere alternativas (ou planeje trabalho extra) se:
- A carga principal for CPU-heavy (encoding de vídeo, simulações complexas, grande crunch de dados)
- Você precisa de latência estritamente previsível sob computação intensa
- Seu time precisa de um framework altamente opinativo com estrutura embutida (Node pode ser muito flexível, o que tem vantagens e desvantagens)
Node.js pode lidar com muitos desses casos, mas possivelmente exigirá threads de worker, filas ou serviços externos para o caminho crítico.
Tente um exemplo pequeno de fim de semana
Um bom primeiro projeto: uma API pequena que permite adicionar e listar notas.
- Crie dois endpoints:
POST /noteseGET /notes - Armazene notas em memória primeiro, depois troque por um banco de dados
- Adicione uma integração “real”, como validação de entrada ou chamada a uma API pública
Se quiser acelerar esse experimento, você também pode prototipar a mesma ideia no Koder.ai descrevendo os endpoints e os campos de dados no chat e iterando até o comportamento bater com o que você faria na mão.
O que aprender a seguir
Se quiser continuar, estes tópicos combinam naturalmente com Node.js:
- REST fundamentals: /blog/rest-apis-basics
- Express basics: /blog/express-js-basics
- TypeScript with Node: /blog/typescript-with-node
Perguntas frequentes
O que é Node.js em termos simples?
Node.js é um runtime que permite executar JavaScript na sua máquina ou em um servidor (não apenas no navegador).
É comumente usado para construir APIs, servidores web, scripts e ferramentas para desenvolvedores.
Node.js é uma linguagem de programação?
Não. JavaScript é a linguagem.
Node.js é um ambiente que executa JavaScript e fornece APIs focadas em servidor/SO (arquivos, rede, processos).
Node.js é um framework como o Express?
Não. Node.js é a base.
Frameworks como Express, Fastify ou NestJS rodam sobre o Node.js para ajudar a estruturar servidores e rotas com mais facilidade.
O que significa “executar JavaScript fora do navegador” na prática?
No navegador, o JavaScript interage principalmente com a página (DOM, cliques, UI).
No Node.js, o JavaScript pode fazer tarefas do lado do servidor e do sistema, como:
- Ler/escrever arquivos
- Escutar requisições HTTP
- Conectar-se a bancos de dados
- Executar scripts de linha de comando (CLI)
O que é o event loop do Node.js e por que ele importa?
O event loop é o mecanismo que mantém a aplicação responsiva.
Ele inicia operações lentas (como I/O de rede ou disco) e continua processando outras tarefas enquanto espera. Quando os resultados chegam, ele executa a próxima parte do seu código (callbacks, resolução de promises ou continuação async/await).
Devo instalar a versão LTS ou Current do Node.js?
Se você é novo ou vai rodar em produção, escolha LTS (Long-Term Support).
LTS é mais estável e recebe correções de segurança por mais tempo. Use “Current” só se precisar de recursos mais recentes e puder atualizar com frequência.
Como eu rodo meu primeiro script Node.js?
Crie um arquivo chamado hello.js:
console.log("Hello from Node!");
Depois execute:
node hello.js
Quando o Node.js não é uma boa opção?
Node.js costuma ser ótimo para trabalho I/O-heavy, mas tarefas pesadas de CPU podem bloquear a thread principal.
Se você precisa processar vídeo, fazer crunching de grandes volumes de dados ou criptografia intensa, considere:
- Threads de worker / jobs em segundo plano
- Mover a parte compute-heavy para um serviço separado
Como o Node.js escala se é “single-threaded”?
O Node pode escalar executando múltiplas instâncias e distribuindo tráfego (por exemplo, atrás de um load balancer).
Na prática, despliega-se mais processos/containers Node ao invés de tentar fazer um único processo suportar tudo.
Como usar npm com segurança em um projeto Node.js?
Use o npm para instalar pacotes, mas seja seletivo:
- Prefira bibliotecas ativamente mantidas
- Evite copiar comandos de instalação que você não entende
- Mantenha dependências atualizadas e revise o crescimento de dependências transitivas
Seu package.json registra o que você depende, e npm install baixa aquelas versões em node_modules.