Módulo 2 · Ciclo Comum · IN02 · Aula 11 de 11 · Encerramento
Mergulhando nas Redes
A infraestrutura invisível que sustenta o stack TS + Express + EJS em produção
🌐 TCP/IP
📡 DNS
🔒 TLS
⚡ CDN
🔁 Retry+Backoff
🛡️ Circuit Breaker
📊 Observabilidade
⏱️ Daily — 15 Minutos
Última daily do módulo: o que fechou? o que ficou? o que aprendemos?
15:00
✅ Stack do projeto 🎯 Entrega final 🚧 Bloqueios restantes 📦 Sprint review
📋 Agenda da Aula 11
Estrutura e objetivos da aula de hoje

🕐 Bloco 1 — Autoestudo (revisão e dúvidas)

Recap do material — TCP/IP, DNS, HTTP/1.1/2/3, TLS, cache, CDN.

🕑 Bloco 2 — Instrução (Professor)

Tolerância a falhas, circuit breaker e métricas RED — como fazer um sistema robusto na rede.

🕒 Bloco 3 — Almoço

Pausa para refeição.

🎯 Bloco 4 — Desenvolvimento (Projeto)

Aplicar timeouts, retries com backoff, headers de cache e monitoramento ao projeto.

🗺️ Onde estamos — Aula 11 de 11
Última aula do módulo. O stack está completo; agora o conectamos à internet real.
1
Introdução aos Sistemas Web
Visão geral da stack · cliente-servidor
2
Banco de Dados I · Modelagem ER e SQL
Relações, normalização, DDL
3
Banco de Dados II · CRUD completo
INSERT, SELECT, UPDATE, DELETE
4
Banco de Dados III · JOINs avançados
JOINs, subconsultas, índices
5
Back-End I · Express + TypeScript
HTTP, rotas, MVC, controllers
6
Back-End II · Camada de dados
Services, repositories, pg
7
Front-End I · EJS e DOM
SSR, templates, manipulação DOM
8
Front-End II · fetch e redes
Async/await, JSON, CORS, APIs
9
Testes e Automação · Jest + Husky
Testes unitários, CI, pre-commit
10
Front-End III · CSS e JS avançado
Variables, Grid, ESM, BEM, Storage
11
Mergulhando nas Redes 🌐 (você está aqui)
TCP/IP, DNS, TLS, CDN, Resiliência
Por que um dev de aplicação precisa entender redes?
Você programa HTTP — mas é TCP/IP que entrega o pacote

🧠 O que você não vê

Quando você chama res.render('home'), o navegador do usuário acabou de passar por:

  • Resolução DNS de app.empresa.com.br
  • 3-way handshake TCP
  • Handshake TLS (HTTPS)
  • Possível CDN no caminho
  • Load balancer roteando para o seu servidor

🎯 O que muda no seu código

  • Cache HTTP bem configurado economiza 90% das requisições.
  • Timeout em chamada externa evita travar o Express inteiro.
  • Retry com backoff sobrevive a falhas momentâneas.
  • Idempotência impede cobrança duplicada.
  • Logs e métricas permitem encontrar o gargalo.

💡 Tese da aula

Redes não são "problema do DevOps". O dev backend que entende TCP, DNS, TLS, cache e tolerância a falhas escreve software significativamente mais robusto e barato de operar.

Modelo TCP/IP — 4 Camadas
Cada camada esconde a complexidade da camada de baixo
📨
4 · Application
HTTP, DNS, SMTP, WebSocket — onde o seu Express vive
Define o protocolo de mensagens entre cliente e servidor.
🚚
3 · Transport
TCP (confiável, ordem garantida) · UDP (rápido, sem garantia)
Portas, segmentação, controle de fluxo, retransmissão.
🌐
2 · Internet
IP (IPv4, IPv6) · roteamento entre redes
Endereçamento e roteamento — entrega o pacote ao host certo.
🔌
1 · Link
Ethernet, Wi-Fi, fibra — quadros físicos
Como os bits viajam no meio físico.

🎯 Para o dev de aplicação

Você toca a camada 4 (Application) diretamente, depende implicitamente da 3 (Transport) para confiabilidade, e quase nunca pensa nas camadas 1 e 2 — até elas falharem.

TCP × UDP · 3-way Handshake
Confiabilidade vs. velocidade — escolha consciente
TCP
Confiável, ordenado, com handshake
3-way handshake (SYN → SYN-ACK → ACK), retransmissão, controle de congestionamento. Base do HTTP/1.1 e HTTP/2.
HTTP, HTTPS, SSH, SMTP, PostgreSQL
UDP
Rápido, sem garantias
Sem handshake, sem retransmissão. Perde pacotes silenciosamente — útil quando latência > perfeição.
DNS query, streaming, jogos, HTTP/3 (QUIC)
Cliente
tem dados para enviar
SYN seq=x
Servidor
aceita conexão
Cliente
recebe SYN-ACK
SYN-ACK seq=y, ack=x+1
Servidor
aguarda ACK
Cliente
conexão estabelecida ✅
ACK ack=y+1
Servidor
conexão estabelecida ✅
DNS — A Lista Telefônica da Internet
Tradução de nome (app.empresa.com.br) → IP (203.0.113.42)

🏷️ Tipos de Registro

  • A · nome → IPv4
  • AAAA · nome → IPv6
  • CNAME · nome → outro nome (alias)
  • MX · servidor de e-mail do domínio
  • TXT · texto livre (SPF, DKIM, verificações)
  • NS · servidores de nome autoritativos
  • SOA · zona DNS — serial, TTL, autoridade

🔍 Resolução de um nome

  1. Cache do navegador
  2. Cache do sistema operacional
  3. Resolver recursivo (ISP / 1.1.1.1 / 8.8.8.8)
  4. Servidor raiz (.)
  5. Servidor TLD (.br)
  6. Servidor autoritativo (empresa.com.br)
  7. Resposta + cache pelo TTL

⏱️ TTL e Propagação

TTL define por quantos segundos o registro pode ser cacheado. Antes de mudar DNS de produção, baixe o TTL para 60s com 24h de antecedência — assim a troca propaga rápido.

🛠️ Ferramentas

dig app.empresa.com.br · nslookup app.empresa.com.br · dig +trace mostra a resolução completa em cascata.

HTTP — três gerações em produção hoje
1.1, 2 e 3 convivem; o cliente negocia a melhor versão suportada
HTTP/1.1
Texto, uma req por vez na conexão
Headers em texto plano, head-of-line blocking. Persistente com Keep-Alive. Ainda é a base mental para entender o resto.
1997 · TCP · TLS opcional
HTTP/2
Binário, multiplexação, header compression
Várias requests simultâneas em uma única conexão TCP. HPACK comprime headers. Server Push (raramente usado).
2015 · TCP + TLS · ALPN h2
HTTP/3
Sobre QUIC (UDP) — sem TCP
Elimina head-of-line blocking de transporte. Handshake e TLS 1.3 fundidos. Conexão sobrevive a troca de IP (mobile).
2022 · UDP · QUIC · ALPN h3

📌 Métodos e códigos — recap rápido (vimos na Aula 6)

GET lê · POST cria · PUT/PATCH atualizam · DELETE remove. Família 2xx sucesso, 3xx redirecionamento, 4xx erro do cliente, 5xx erro do servidor. Headers que importam hoje: Content-Type, Authorization, Cache-Control, ETag.

TLS Handshake — Como o HTTPS nasce
Integridade + sigilo + autenticação do servidor em ~1-2 RTTs
Cliente (Browser)
"olá, falo TLS 1.3"
ClientHello
Servidor
recebe versões e ciphers
Cliente
valida certificado · verifica CA · checa nome
ServerHello + Certificate
Servidor
envia cert X.509 + chave pública
Cliente
deriva chave de sessão
Key Exchange (ECDHE)
Servidor
deriva mesma chave
🔒 Canal seguro
tudo agora é cifrado AES-GCM
Application Data
🔒 Canal seguro
HTTP corre dentro do TLS

📜 Certificados

DV (Domain Validation) — Let's Encrypt, gratuito via ACME. OV/EV — validação organizacional, pago. Renovação automática a cada 60-90 dias.

⚠️ Por que importa

Sem HTTPS: senhas, cookies de sessão, tokens trafegam em texto puro. Qualquer roteador no caminho lê e modifica. Em 2026, HTTPS é não-negociável.

Cache HTTP — Cache-Control, ETag, 304
A request mais rápida é a que não acontece
resposta-do-servidor
HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8
Cache-Control: public, max-age=3600
ETag: "a1b2c3d4"
Last-Modified: Mon, 27 Apr 2026 12:00:00 GMT
// próxima request do mesmo recurso:
GET /produtos/42
If-None-Match: "a1b2c3d4"
HTTP/1.1 304 Not Modified
// 0 bytes de body — usa o cache local
max-age
Tempo (s) que o cliente pode reusar
Cache-Control: max-age=3600
public/private
Cacheável por proxies/CDN ou só no navegador
private = só para esse usuário
no-cache
Sempre revalida com servidor (ETag)
no-store = nunca cacheia, nem em disco
ETag
Hash do conteúdo · validação condicional
If-None-Match → 304 Not Modified

🪜 Camadas de cache no caminho

Navegador → CDN → Reverse proxy (nginx) → Aplicação (cache em memória) → Banco. Cada camada que responde é uma camada que o seu Express não precisou tocar.

CDN — Servindo do mais perto possível
Origem fica em um lugar; o conteúdo, em centenas de edges

🏛️ Origem

Seu servidor Express em São Paulo. Fonte da verdade.

🌍 Edge / PoP

Centenas de pontos no mundo. Cacheiam estáticos e HTML elegível.

📱 Usuário

Em Lisboa, Tóquio, Nova York. Recebe do edge mais próximo.

✅ Cache HIT

Edge tem o recurso fresco. Responde direto, em ms. Origem não é tocada.

❌ Cache MISS

Edge busca na origem, guarda e responde. Próxima vez vira HIT.

🧹 Purge

Invalida cache no edge após deploy. API do CDN ou versão no nome do arquivo (app.a1b2.js).

🛒 No mercado

Cloudflare · Fastly · AWS CloudFront · Akamai. Hoje uma CDN também roda edge functions (lógica perto do usuário) e oferece WAF, DDoS protection e análise de tráfego.

Tolerância a Falhas · Retry, Timeout, Idempotência
A rede sempre falha. A pergunta é: como o seu código reage?
timeout-retry.ts
// timeout no fetch interno entre serviços
async function callPayment(orderId: string) {
const ctrl = new AbortController();
const t = setTimeout(() => ctrl.abort(), 3000);
try {
const res = await fetch(url, {
method: 'POST',
headers: { 'Idempotency-Key': orderId },
body: JSON.stringify({ orderId }),
signal: ctrl.signal,
});
return await res.json();
} finally { clearTimeout(t); }
}
TIMEOUT
Sempre. Sem exceção.
Sem timeout, uma chamada lenta trava a thread do Node por minutos. Morte por mil cortes.
RETRY + BACKOFF
Tente de novo, mas espere mais
200ms, 400ms, 800ms · com jitter (ruído aleatório) para evitar thundering herd.
IDEMPOTENCY-KEY
Mesma chave = mesma operação
Servidor remoto sabe que é uma retentativa, não uma compra duplicada.
FALLBACK
Plano B em caso de falha
Retorne dados em cache, mensagem amigável ou degradação parcial — nunca uma stack trace.
Circuit Breaker + Observabilidade RED
Pare de bater na porta fechada · meça o que importa

🛡️ Circuit Breaker — conceito

Como o disjuntor da sua casa: depois de N falhas seguidas, o circuito abre e para de tentar — protegendo o sistema do qual depende.

  • Closed · tudo normal, requests passam
  • Open · falhou demais, retorna erro imediato (sem chamar)
  • Half-Open · após cooldown, tenta uma — se ok, fecha; se falha, abre de novo

🚫 Anti-padrões

  • Retry infinito (sem teto)
  • POST sem Idempotency-Key sendo retried
  • Chamada externa sem timeout
  • Logar segredo no caderno de bordo

📊 RED — Rate · Errors · Duration

Para cada endpoint do seu Express, três métricas básicas:

Rate
120 req/s
Errors
2.1%
Duration
p99=320ms

🩺 Health checks

Liveness · "estou vivo?" — reinicia o processo se falha.
Readiness · "posso receber tráfego?" — fora do load balancer se DB caiu, sem matar o processo.

OpenTelemetry propaga trace-id pelos serviços e permite ver a request fim a fim.

RM-ODP — As 5 Visões do Sistema
ISO/IEC 10746 · Infraestrutura de rede nas 5 visões
🏢 Enterprise
Disponibilidade do serviço
📋 Information
Mensagens HTTP, headers
⚙️ Computational
Timeouts, retries, breakers
🔧 Engineering
DNS, TLS, CDN, cache
💻 Technology
TCP/IP, HTTP/1-3, TLS

Esta aula: Visão Engineering/Technology — entendemos a infraestrutura que sustenta a comunicação na rede.

Esta Aula: Resiliência
RM-ODP · RF, RNF e Artefato — 8 Eixos de resiliência

📌 Requisito Funcional

Sistema continua respondendo com qualidade aceitável mesmo sob falhas parciais e latência variável da rede.

📦 Artefato

  • ⏱️ Timeouts + retries com backoff
  • 🛡️ Circuit breaker + fallback
  • 📊 Métricas RED (Rate, Errors, Duration)

⚖️ RNF — 8 Eixos ISO/IEC 25010

CONF Confiabilidade✅ Retries + breaker
DES Desempenho✅ Cache + CDN
SEG Segurança✅ TLS + headers
SUP Suportabilidade✅ Métricas RED
PORT Portabilidade→ DNS-based failover
🛠️ Atividade — Entrega Final do Módulo
Checklist do projeto: 6 itens obrigatórios para o encerramento do Módulo 2
Em grupo · Revise seu projeto e confirme cada item abaixo antes de entregar. Cada ponto representa um conceito que você aprendeu ao longo do módulo.
🔒 HTTPS em Produção
Certificado TLS válido (Let's Encrypt). http:// redireciona para https://. Sem avisos no navegador.
⚡ Cache-Control correto
Assets estáticos com max-age longo. APIs com no-store ou ETag. CDN configurada para estáticos.
🔄 Timeout + Retry
Chamadas a serviços externos com timeout explícito e retry com back-off exponencial + jitter.
📊 Métricas RED
Endpoint /metrics expõe Rate, Errors e Duration. Logs estruturados com nível e correlation-id.
❤️ Health Checks
Rota /healthz responde 200 quando saudável. /ready indica que DB e dependências estão ok.
📄 README + Diagrama
README com instruções de deploy. Diagrama de arquitetura (C4 nível 2) mostrando todos os componentes e fluxos.
🎓
Fim do Módulo 2 — Desenvolvimento Web
Você partiu do "o que é a Web?" e chegou em um sistema TS + Express + EJS + PostgreSQL falando HTTPS, com cache, tolerância a falhas e observabilidade. Você é, oficialmente, um dev web full stack.
✅ Banco modelado e normalizado
✅ Express + TS + pg
✅ MVC 6 camadas
✅ SSR com EJS
✅ Auth e sessões
✅ HTTPS, DNS, cache, CDN
✅ Retry, timeout, idempotência
✅ Observabilidade RED
A entrega final: sistema rodando em domínio próprio com HTTPS válido, métricas RED expostas, retentativas em chamadas externas, README com diagrama de arquitetura, deploy reproduzível.
Próximos módulos: testes automatizados, integrações externas, escalabilidade horizontal, e o projeto integrador de longa duração.
Módulo 2 · Ciclo Comum · Aula 11 de 11 · 🎉 Encerramento