Trilha Especialização: APIs de Alta Performance com FastAPI
Do Módulo 0 ao Projeto Final: Pydantic v2, APIRouter, Depends, Asyncio, SQLAlchemy 2.0 Async, Alembic, OAuth2/JWT, Circuit Breaker, Redis, WebSockets, OpenAPI, pytest, k6 Carga, OpenTelemetry e Deploy.
Módulo 0 — Pré-requisitos e Ambiente
Python 3.12+, Type Hints, async/await, HTTP/JSON, Git, venv, pyproject.toml, Ruff e Docker.
Módulo 1 — Fundamentos do FastAPI
FastAPI, Starlette, Pydantic, Uvicorn, ASGI, Path operations, Query/Body e Status Codes.
1.1 Anatomia de uma Aplicação ASGI & Path Operations
FastAPI une o roteamento de alta performance do Starlette com a validação rigorosa do Pydantic sob o servidor ASGI Uvicorn.
1.2 Projeto: API de Catálogo em Memória
Crie endpoints POST /produtos com status_code=201 e GET /produtos retornando modelos validados de catálogo.
Módulo 2 — Pydantic e Contratos de Dados
BaseModel, Modos Estritos, Field Constraints, Validators e Schemas Entrada/Saída.
2.1 Pydantic v2 & Separação de Schemas de Entrada/Saída
Pydantic v2 valida dados externos em C++ (pydantic-core). Separe schemas de criação (ProdutoCreate) e resposta (ProdutoResponse).
2.2 Projeto: Contratos Completos do Catálogo
Aplique restrições em preços (Field(gt=0)) e formatos de códigos UUID com mensagens de erro customizadas.
Módulo 3 — APIs RESTful Profissionais
Recursos, Status Codes, Idempotência, URIs, Paginação, Filtros e Problem Details.
3.1 RESTful Semântico & RFC 7807
Adote a especificação RFC 7807 Problem Details em todas as exceções HTTP garantindo respostas de erro consistentes.
3.2 Projeto: Contrato REST Versionado para Pedidos
Projete os contratos para consulta paginada, alteração de status e cancelamento idempotente de pedidos.
Módulo 4 — Organização com APIRouter
APIRouter, Prefixos, Tags, Lifespan Async, Application Factories e Domínios.
4.1 Modularização de Rotas & Lifespan Context Manager
Organize módulos em rotas separadas agregadas por app.include_router() utilizando o evento @asynccontextmanager lifespan.
4.2 Projeto: Dividir o Catálogo em Módulos por Domínio
Estruture a aplicação em diretórios src/app/modules/ (accounts, catalog, orders) evitando importações circulares.
Módulo 5 — Injeção de Dependências
Depends, Annotated, Dependências com Yield, Async Session e Overrides.
5.1 Sistema de Dependências FastAPI (Depends & Annotated)
Combine Annotated e Depends para injetar conexões de banco de dados e autenticação sem poluir as assinaturas dos endpoints.
5.2 Projeto: Contexto de Requisição e Sessão do Banco
Implemente a dependência get_db_session usando async yield para fechar e reverter sessões automaticamente ao final da requisição.
Módulo 6 — Concorrência e Modelo Assíncrono
Event Loop, Coroutines, asyncio.gather, Task Groups, Thread Pool e Backpressure.
6.1 Concorrência Assíncrona com asyncio & Task Groups
Utilize asyncio.gather() para disparar chamadas concorrentes a múltiplos serviços externos sem bloquear a thread principal.
6.2 Projeto: Agregador Concorrente de Serviços Externos
Implemente endpoint async que consulta estoques e tabelas de frete em paralelo reduzindo a latência total da resposta.
Módulo 7 — PostgreSQL e SQLAlchemy 2
SQLAlchemy 2.0 Core & ORM, AsyncSession, Mapeamento, Select e Connection Pool.
7.1 Mapeamento Assíncrono com AsyncSession & DeclarativeBase
Utilize Mapped[] e mapped_column() no SQLAlchemy 2.0 para definições de tabelas com type-safety estrito e suporte a AsyncSession.
7.2 Projeto: Persistência de Produtos, Usuários e Pedidos
Construa classes de repositório assíncronas executando operações de leitura e escrita com transações curtas.
Módulo 8 — Migrations com Alembic
Alembic, Autogenerate, Upgrade/Downgrade, Data Migrations e Non-Destructive Deploy.
8.1 Migrações de Banco com Alembic & asyncpg
Configure env.py do Alembic para autogerar revisões de migração a partir das metadatas DeclarativeBase do SQLAlchemy 2.0.
8.2 Projeto: Evolução Segura do Banco Sem Perda de Dados
Crie migrações reversíveis testando comandos alembic upgrade head e downgrade -1 antes de enviar ao pipeline.
Módulo 9 — Consultas e Performance do Banco
EXPLAIN ANALYZE, B-Tree, N+1, Eager Loading (selectinload), Paginação por Cursor e SELECT FOR UPDATE.
9.1 Carregamento Eager (selectinload) & Paginação por Cursor
Utilize selectinload() para carregar relacionamentos em consultas assíncronas O(1) e adote paginação por cursor em listagens grandes.
9.2 Projeto: Otimizar Endpoints Usando Evidências
Inspecione o plano de execução de endpoints lentos reduzindo leituras completas de tabela com índices B-Tree compostos.
Módulo 10 — Arquitetura Modular (Clean Architecture)
Presentation, Application, Domain, Infrastructure, Ports & Adapters e Unit of Work.
10.1 Padrão Hexagonal (Ports & Adapters) em FastAPI
Separe o código em domain/, application/, infrastructure/ e presentation/ permitindo testar casos de uso sem subir o servidor HTTP.
10.2 Projeto: Refatorar o Módulo de Pedidos
Reestruture o fluxo de criação de pedidos isolando transações de banco dentro do gerenciador Unit of Work.
Módulo 11 — Autenticação
Argon2/bcrypt, JWT, Access & Refresh Tokens, Rotação, OAuth2 Password Bearer.
11.1 OAuth2 Password Bearer & JWT com Passlib/python-jose
Utilize OAuth2PasswordBearer do FastAPI para gerar o formulário de login integrado diretamente no Swagger UI.
11.2 Projeto: Autenticação Segura com Ciclo Completo do Token
Implemente endpoints /token de login e refresh token gravando senhas hash com Argon2.
Módulo 12 — Autorização
RBAC, ABAC, Scopes, Ownership, Prevenção IDOR/BOLA e Permissões por Objeto.
12.1 Prevenção de IDOR/BOLA com Dependências de Permissão
Construa dependências FastAPI que checam se o ID do recurso pertence ao usuário autenticado antes de retornar dados.
12.2 Projeto: Permissões de Cliente, Operador e Administrador
Declare dependências Security(get_current_user, scopes=["admin"]) para restringir endpoints operacionais.
Módulo 13 — Segurança de APIs (OWASP Top 10)
OWASP API Security, Rate Limiting Redis, CORS, CSRF, Payload Limits e Redação de Logs.
13.1 Rate Limiting Redis & Hardening de Middlewares
Configure middlewares de limitação de requisições baseados em Redis (slowapi) e ajuste CORS e Payload Limits.
13.2 Projeto: Threat Model e Hardening Completo
Aplique filtros de log para mascarar senhas, cartões e tokens JWT em todas as saídas de diagnóstico.
Módulo 14 — Tratamento Padronizado de Erros
Custom Exception Handlers, HTTPException, RFC 7807 Problem Details e Correlation ID.
14.1 Exception Handlers Customizados em FastAPI
Registre @app.exception_handler() para interceptar RequestValidationError e exceções de domínio retornando payloads RFC 7807.
14.2 Projeto: Catálogo Central de Erros da Aplicação
Crie hierarquia de exceções (ItemNaoEncontradoError, SaldoInsuficienteError) com mapeamento direto para status HTTP 404 e 422.
Módulo 15 — Integrações HTTP Resilientes
httpx.AsyncClient, Timeouts Separados, Retry Backoff+Jitter, Circuit Breaker e Fallbacks.
15.1 Cliente Async HTTPX com Circuit Breaker
Utilize httpx.AsyncClient reaproveitado via dependência com timeouts rígidos e padrão Circuit Breaker para chamadas instáveis.
15.2 Projeto: Integração Resiliente com Serviço de Frete
Desenvolva cliente assíncrono com retentativa exponencial e fallback em tabelas locais caso a API externa caia.
Módulo 16 — Cache e Redis
Cache-aside, TTL, Invalidação, Cache Stampede, Distributed Locks e Rate Limiting.
16.1 Padrão Cache-Aside com Redis Async
Implemente o padrão Cache-Aside: verifique a chave no Redis; em caso de cache miss, consulte o PostgreSQL e armazene no Redis com TTL.
16.2 Projeto: Cachear Consultas Caras com Invalidação Explícita
Adicione invalidação explícita de chaves Redis ao alterar ou cadastrar produtos garantindo que leituras tragam dados atualizados.
Módulo 17 — Tarefas em Background e Filas
BackgroundTasks, Workers Externos, SAQ/ARQ, Dead-Letter Queue e Outbox Pattern.
17.1 BackgroundTasks vs Workers Externos com Redis
Use BackgroundTasks para envios simples de email pós-resposta HTTP; utilize workers Redis/ARQ dedicados para jobs pesados e resilientes.
17.2 Projeto: Processamento Assíncrono de Notificações
Monte worker assíncrono para consumo de fila de emails com retentativas e Dead-Letter Queue (DLQ).
Módulo 18 — Streaming, SSE e WebSockets
StreamingResponse, Server-Sent Events, WebSockets, Backpressure e Heartbeat.
18.1 WebSockets & StreamingResponse em FastAPI
Crie endpoints WebSocket websocket.accept() e Server-Sent Events (SSE) para transmissão contínua de status operacionais.
18.2 Projeto: Atualização em Tempo Real do Status das Operações
Conecte o painel de operações a um endpoint WebSocket transmitindo atualizações de pacotes em tempo real.
Módulo 19 — OpenAPI e Contratos
Geração Automática OpenAPI, Schemas, Tags, Exemplos, Webhooks e Customização.
19.1 Customizando o Esquema OpenAPI Automático
Adicione respostas customizadas (responses={404: ...}), exemplos e descrições ricas nos schemas do FastAPI.
19.2 Projeto: Contrato OpenAPI Pronto para Consumidores Externos
Disponibilize o arquivo de contrato OpenAPI completo para geração automatizada de SDKs de clientes.
Módulo 20 — Testes Automatizados
pytest, AsyncClient, Dependency Overrides, Test Database e Fixtures.
20.1 pytest-asyncio & app.dependency_overrides
Utilize app.dependency_overrides para trocar o banco de produção por um banco sqlite/postgres isolado durante a execução do pytest.
20.2 Projeto: Suíte Automatizada da API
Escreva suíte de testes com pytest-asyncio validando cadastro de usuários, autenticação JWT e pedidos.
Módulo 21 — Profiling e Benchmarking
Latência p50/p95/p99, Throughput, Flame Graphs, Query Profiling e Baseline.
21.1 Análise de Gargalos de CPU/Memória & Flame Graphs
Perfilador de código para identificar funções síncronas bloqueantes executadas indevidamente na thread do Event Loop.
21.2 Projeto: Relatório de Desempenho Reproduzível
Gere relatório técnico comparativo registrando tempos de resposta antes e depois das otimizações de código.
Módulo 22 — Testes de Carga (k6)
Spike Test, Soak Test, Virtual Users, Thresholds, Saturação e Coordinated Omission.
22.1 Testes de Carga Escaláveis com k6
Escreva scripts k6 em JS simulando ramp-up de 500 usuários virtuais concorrentes verificando thresholds de p95 < 200ms.
22.2 Projeto: Teste de Carga com Critérios de Aprovação
Execute bateria de testes de estresse validando se a taxa de erros permanece abaixo de 0.1% sob saturação de acessos.
Módulo 23 — Otimização da Aplicação
Response Models Tuning, Compressão, Batching, Connection Pools e Streaming.
23.1 Evitando Serializações Desnecessárias
Utilize response_model_exclude_unset=True e orjson (serializador C ultra-rápido) para acelerar retornos de APIs.
23.2 Projeto: Reduzir a Latência de Endpoints Críticos com Evidências
Aplique loteamento (batching) e pools de conexões ajustadas reduzindo a latência do endpoint em 60%.
Módulo 24 — Observabilidade (OpenTelemetry)
Logs JSON, Correlation ID, Tracing Distribuído, RED Method e SLI/SLO.
24.1 Tracing Distribuído com OpenTelemetry & Jaeger
Adicione SDK OpenTelemetry exportando spans de execução HTTP e queries SQLAlchemy para rastreamento visual no Jaeger.
24.2 Projeto: Observabilidade Completa da API
Configure exportação de métricas Prometheus exibindo taxa de erros, duração p95 e throughput em tempo real.
Módulo 25 — Confiabilidade Operacional
Liveness, Readiness, Startup, Lifespan Async, Graceful Shutdown e Load Shedding.
25.1 Desligamento Gracioso & Probes de Saúde (/health)
Implemente endpoints /health/live e /health/ready checando a conectividade do PostgreSQL e Redis.
25.2 Projeto: API Preparada para Falhas e Manutenção
Aplique rejeição controlada de requisições de baixa prioridade durante picos extremos de uso.
Módulo 26 — Docker e Segurança de Execução
Dockerfile Multi-stage, Usuário Não-Root, Read-only Filesystem, Health Checks e Compose.
26.1 Imagens Mínimas & Usuário Não-Root
Construa imagens Docker leves baseadas em python:3.12-slim executadas sob usuário sem privilégios de root.
26.2 Projeto: Imagem Segura e Reproduzível
Crie arquivo docker-compose.yml pronto para homologação com limites de CPU/memória e verificação de saúde.
Módulo 27 — Deploy e Dimensionamento
Uvicorn Workers, Nginx Reverse Proxy, HTTPS SSL, Escala Horizontal e CI/CD.
27.1 Dimensionamento de Workers Uvicorn & Nginx Proxy
Configure o Uvicorn com gunicorn -w 4 -k uvicorn.workers.UvicornWorker aproveitando múltiplos núcleos da VPS.
27.2 Projeto: Deploy em VPS com Baseline de Capacidade
Suba a infraestrutura na VPS Contabo operando sob proxy reverso Nginx com certificados TLS válidos.
Módulo 28 — Microsserviços e Sistemas Distribuídos
Monólito Modular vs Microsserviços, Comunicação por Eventos e Extração Gradual.
28.1 Estratégia de Extração Gradual de Serviços
Comece com um Monólito Modular limpo. Extraia microserviços assíncronos apenas quando houver demanda isolada de escala.
Módulo 29 — Projeto Final: API Logística de Alta Performance
Construção da API de Alta Performance para Operações Logísticas integrando os 29 módulos anteriores.
29.1 Projeto Final: API de Alta Performance para Operações Logísticas
Aprenda requisitos integrados da api fastapi de alta performance com conceitos práticos e exercícios aplicados.