Backend com Python

3 – Web
3.1 – Backend (servidor)
3.1.1 – Sincrono (Django, Flask, FastAPI)
3.1.2 – Assincrono (FastAPI, Sanic, Aiohttp)
3.1.3 – WebSockets (Socket.IO, WebSockets)
LEGENDA
Nivel_1
Nivel_2
Nivel_3

O backend é a parte invisível de um sistema web. Ele processa dados, gerencia usuários e responde a requisições. Primeiramente, o backend não exibe telas diretamente. Em vez disso, ele fornece APIs ou renderiza HTML no servidor. Por exemplo, quando você faz login, o backend verifica sua senha. Além disso, ele consulta bancos de dados e aplica regras de negócio. A voz passiva é usada aqui: “as decisões críticas são tomadas no backend”. Quando utilizar um servidor Python? Em praticamente toda aplicação web moderna. Python é famoso por sua clareza e ecossistema maduro. Frameworks como Django, Flask e FastAPI dominam o mercado. Cada um tem características específicas para diferentes necessidades. Neste guia, exploraremos os conceitos fundamentais do backend. Vamos desde o servidor HTTP até a lógica de negócio. Preparado? Então comece sua jornada nos bastidores da web.

Servidores wsgi e asgi: a base do backend python

Um servidor web Python precisa de uma interface padronizada. WSGI (Web Server Gateway Interface) é o padrão clássico. Ele conecta o servidor (como Nginx) à sua aplicação Flask ou Django. Exemplos de servidores WSGI são Gunicorn e uWSGI. Por outro lado, ASGI (Asynchronous Server Gateway Interface) é mais novo. Ele suporta requisições assíncronas e WebSockets. FastAPI e Django 3+ rodam sobre ASGI com eficiência. Quando usar WSGI? Em aplicações síncronas tradicionais. Já o ASGI é melhor para chat, notificações ou streaming. A escolha impacta a performance e a complexidade do código. Servidores WSGI tratam uma requisição por vez por processo. Servidores ASGI podem lidar com muitas conexões simultâneas. Portanto, avalie seu caso antes de decidir. Um exemplo de execução com Gunicorn seria:

No comando, -w 4 significa quatro processos de trabalho. Isso melhora a capacidade de resposta sob carga. Nunca use o servidor embutido do Flask em produção. Ele é inseguro e lento para múltiplos usuários simultâneos.

Rotas, middlewares e injeção de dependências

Rotas definem quais URLs ativam quais funções. Um middleware intercepta requisições antes da lógica principal. Por exemplo, autenticação, logging ou compressão de resposta. Em Flask, middlewares são criados com decoradores ou funções específicas. Em Django, eles são classes configuráveis no settings.py. Já a injeção de dependências facilita o teste de componentes isolados. FastAPI tem suporte nativo a dependências via Depends(). Isso evita acoplamento rígido entre partes do sistema. Quando usar middlewares? Sempre que houver lógica transversal. Log de requisições, cache e cabeçalhos de segurança são exemplos. A voz passiva é aplicada: “as dependências são resolvidas automaticamente”. Um exemplo prático com middleware simples em Flask:

Esse código mede o tempo de cada requisição automaticamente. O middleware before_request roda antes da view. O after_request roda depois, podendo modificar a resposta. Isso é poderoso para monitoramento e auditoria.

Lógica de negócio e camada de serviços

A lógica de negócio é o coração do seu backend. Ela implementa regras como “usuário só pode comprar se tiver saldo”. Essa lógica não deve ficar dentro das rotas ou controladores. Em vez disso, crie uma camada de serviços separada. Cada serviço é uma classe ou conjunto de funções puras. Elas recebem dados, processam e retornam resultados. Isso facilita testes unitários e reutilização de código. Por exemplo, um serviço de cálculo de imposto pode ser usado em várias rotas. Quando usar essa separação? Em qualquer projeto com mais de dez rotas. A fórmula da complexidade ciclomática sugere: \(M = E – N + 2P\). Onde E são arestas, N nós, P componentes conexos. Manter a lógica isolada reduz esse número e a manutenção. Veja um exemplo de serviço financeiro simples:

Note como a lógica de negócio está isolada na classe. A rota apenas orquestra a chamada e trata erros. Isso permite testar o cálculo sem precisar do Flask. Para testar, basta assert CalculadoraImposto.calcular(100) == 10.0. Essa arquitetura é chamada de “service layer” ou camada de serviços. Ela escala bem para equipes grandes e código de longo prazo. Por fim, lembre-se: o backend Python é poderoso e flexível. Comece simples, adicione middlewares e serviços gradualmente. Seu sistema crescerá de forma organizada e sustentável.

Deixe um comentário