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.
-
Frontend: É a camada de apresentação, tudo que roda no navegador do usuário.
- Tecnologias: HTML (estrutura), CSS (estilo), JavaScript (interatividade).
- Frameworks Populares: React, Angular, Vue.js.
-
Backend: É a camada de lógica de negócios, que roda no servidor.
- Responsabilidades: Processar regras de negócio, acessar o banco de dados, gerenciar autenticação.
- Tecnologias: Node.js, Python, Java, PHP, Ruby.
-
Comunicação via APIs: O frontend e o backend se comunicam através de uma API (Application Programming Interface), geralmente seguindo o padrão RESTful. Os dados são trocados no formato JSON.
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:
- Requisição chega no Nginx (porta 80/443).
- Nginx identifica que a requisição é para a aplicação dinâmica.
- Nginx encaminha a requisição para o processo da aplicação (ex: um servidor Node.js na porta 3000).
- A aplicação processa a lógica e retorna a resposta para o Nginx.
- Nginx retorna a resposta para o cliente.
Interface de comunicação:
- Python: WSGI (Web Server Gateway Interface), com servidores como
GunicornouuWSGI. - PHP:
PHP-FPM(FastCGI Process Manager). - Node.js: O próprio Node.js possui um servidor HTTP embutido.
Interação com Bancos de Dados
- SQL: Bancos de dados relacionais (PostgreSQL, MySQL). Estrutura rígida de tabelas e colunas.
- NoSQL: Bancos não-relacionais (MongoDB, Redis). Flexíveis, baseados em documentos, chave-valor, etc.
🎨 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
- Navegador recebe o HTML.
- Parseia o HTML e encontra referências a outros arquivos (
.css,.js, imagens). - Faz novas requisições para cada um desses arquivos (assets).
- Monta a página (DOM), aplica os estilos (CSSOM) e executa os scripts.
Otimizações de Performance
- Minificação: Remove espaços em branco e comentários de arquivos CSS e JS para reduzir seu tamanho.
- Concatenação (Bundling): Agrupa múltiplos arquivos CSS ou JS em um único arquivo para diminuir o número de requisições HTTP.
- Requisições Assíncronas: Usando a Fetch API ou
XMLHttpRequest(AJAX), o JavaScript pode buscar dados do backend sem precisar recarregar a página inteira, melhorando drasticamente a experiência do usuário.
Exemplo de uma resposta de API em JSON:
{
"user": {
"id": 101,
"name": "Alex",
"email": "alex@example.com",
"isActive": true,
"roles": ["admin", "editor"]
}
}