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
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
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