AULA 16 MÓDULO 1 fundamentos web ⏱ 50 min

Do LAMP ao Node.js

Por que o modelo thread-por-request do LAMP tem limites e como o event loop do Node.js resolve o problema de escala. npm e o ecossistema.

Node.jsevent loopnão-bloqueantethreadsnpmpackage.json

Os limites do LAMP

LAMP funciona bem para páginas que geram HTML. Mas para aplicações modernas — tempo real, APIs JSON, milhares de conexões simultâneas — o modelo de thread por requisição do Apache tem limitações sérias.

🧵
o problema das threads
Apache cria uma thread nova para cada requisição. Thread consome ~2MB de RAM. 1000 usuários simultâneos = 2GB só para as threads. Conexões lentas (banco, API externa) bloqueiam a thread inteira.

Node.js — a mudança de paradigma

Node.js é um runtime JavaScript assíncrono e não-bloqueante baseado no motor V8 do Chrome. Em vez de threads, usa um único thread com event loop — processa enquanto espera I/O.

Apache/PHP — Bloqueante
Cada request = 1 thread
Thread fica bloqueada esperando I/O
Muitos requests = muitas threads = muita RAM
Node.js — Não-bloqueante
1 thread + event loop
I/O assíncrono — não bloqueia
Milhares de requests com pouca RAM

npm e o ecossistema

npm é o gerenciador de pacotes do Node — o maior repositório de software do mundo com mais de 2 milhões de pacotes. Ele mudou a forma como código é compartilhado e reutilizado.

📦
package.json — o coração do projeto
Todo projeto Node tem um package.json que define nome, versão, scripts e dependências. É o equivalente ao requirements.txt do Python ou composer.json do PHP.
javascript
// Hello World em 3 ambientes — a evolução

// PHP (LAMP) — mistura HTML com lógica
// <?php echo "Hello " . $name . "!"; ?>

// Node.js puro — servidor HTTP nativo
const http = require('http')

const server = http.createServer((req, res) => {
  res.writeHead(200, { 'Content-Type': 'text/plain' })
  res.end('Hello World!')
})

server.listen(3000, () => {
  console.log('Servidor rodando em http://localhost:3000')
})

// package.json — manifesto do projeto Node
// {
//   "name": "meu-servidor",
//   "version": "1.0.0",
//   "scripts": { "start": "node index.js" }
// }
quiz · aula 16
Teste seus conhecimentos
0/3 respondidas
QUESTÃO 01
Por que Node.js lida melhor com muitas conexões simultâneas que Apache?
QUESTÃO 02
O que é o npm?
QUESTÃO 03
Qual arquivo define as dependências de um projeto Node.js?
0/3