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"]
}
}