Arquivo 3: modulo-03-desenvolvimento-web.md

💻 Módulo 3: Desenvolvimento de Aplicações Web - Frontend e Backend

Com a infraestrutura pronta, vamos conectar o código. Este módulo foca na arquitetura de aplicações web modernas e como elas interagem com os servidores.

🏗️ Aula 1: A Arquitetura Frontend-Backend

Aplicações modernas seguem o princípio da separação de responsabilidades.

classDiagram
    direction LR
    class BrowserClient {
    +HTML/CSS/JS
    +realizarRequisicaoAPI()
    }
    class APIGateway {
    +String endpoint
    +autenticarRequisicao()
    +rotearParaServico()
    }
    class BackendService {
    -String logicaNegocio
    -DatabaseDriver dbDriver
    +processarDados()
    +acessarBancoDeDados()
    }
    class Database {
    +CRUD()
    }
    BrowserClient --|> APIGateway : "Faz requisição HTTP"
    APIGateway --|> BackendService : "Encaminha requisição"
    BackendService --|> Database : "Consulta/Modifica dados"

⚙️ Aula 2: O Papel do Backend na Infraestrutura

O backend não vive isolado. Ele precisa de um ambiente para ser executado e de um servidor web para receber as requisições do mundo exterior.

Servidor Web + Aplicação Backend

O servidor web (Nginx/Apache) atua como um proxy reverso para a aplicação backend.

Fluxo:

  1. Requisição chega no Nginx (porta 80/443).
  2. Nginx identifica que a requisição é para a aplicação dinâmica.
  3. Nginx encaminha a requisição para o processo da aplicação (ex: um servidor Node.js na porta 3000).
  4. A aplicação processa a lógica e retorna a resposta para o Nginx.
  5. Nginx retorna a resposta para o cliente.

Interface de comunicação:

Interação com Bancos de Dados

🎨 Aula 3: Frontend e a Rede

O frontend é responsável por carregar rápido e proporcionar uma experiência fluida, e isso depende muito de otimizações de rede.

O Processo de Renderização

  1. Navegador recebe o HTML.
  2. Parseia o HTML e encontra referências a outros arquivos (.css, .js, imagens).
  3. Faz novas requisições para cada um desses arquivos (assets).
  4. Monta a página (DOM), aplica os estilos (CSSOM) e executa os scripts.

Otimizações de Performance

Exemplo de uma resposta de API em JSON:

{
  "user": {
    "id": 101,
    "name": "Alex",
    "email": "alex@example.com",
    "isActive": true,
    "roles": ["admin", "editor"]
  }
}