Pular para o conteúdo
Trilha Especialização: APIs de Alta Performance com FastAPI

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.

Capítulos 30
Progresso 0/57 aulas
Concluído 0%
🛠️
CAPÍTULO 1

Módulo 0 — Pré-requisitos e Ambiente

1 aulas

Python 3.12+, Type Hints, async/await, HTTP/JSON, Git, venv, pyproject.toml, Ruff e Docker.

CAPÍTULO 2

Módulo 1 — Fundamentos do FastAPI

2 aulas

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.

Bloqueada
🔒

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.

Bloqueada
📑
CAPÍTULO 3

Módulo 2 — Pydantic e Contratos de Dados

2 aulas

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).

Bloqueada
🔒

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.

Bloqueada
📐
CAPÍTULO 4

Módulo 3 — APIs RESTful Profissionais

2 aulas

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.

Bloqueada
🔒

3.2 Projeto: Contrato REST Versionado para Pedidos

Projete os contratos para consulta paginada, alteração de status e cancelamento idempotente de pedidos.

Bloqueada
📁
CAPÍTULO 5

Módulo 4 — Organização com APIRouter

2 aulas

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.

Bloqueada
🔒

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.

Bloqueada
💉
CAPÍTULO 6

Módulo 5 — Injeção de Dependências

2 aulas

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.

Bloqueada
🔒

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.

Bloqueada
🔄
CAPÍTULO 7

Módulo 6 — Concorrência e Modelo Assíncrono

2 aulas

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.

Bloqueada
🔒

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.

Bloqueada
🗄️
CAPÍTULO 8

Módulo 7 — PostgreSQL e SQLAlchemy 2

2 aulas

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.

Bloqueada
🔒

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.

Bloqueada
🔄
CAPÍTULO 9

Módulo 8 — Migrations com Alembic

2 aulas

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.

Bloqueada
🔒

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.

Bloqueada
📈
CAPÍTULO 10

Módulo 9 — Consultas e Performance do Banco

2 aulas

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.

Bloqueada
🔒

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.

Bloqueada
🏗️
CAPÍTULO 11

Módulo 10 — Arquitetura Modular (Clean Architecture)

2 aulas

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.

Bloqueada
🔒

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.

Bloqueada
🔐
CAPÍTULO 12

Módulo 11 — Autenticação

2 aulas

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.

Bloqueada
🔒

11.2 Projeto: Autenticação Segura com Ciclo Completo do Token

Implemente endpoints /token de login e refresh token gravando senhas hash com Argon2.

Bloqueada
🛡️
CAPÍTULO 13

Módulo 12 — Autorização

2 aulas

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.

Bloqueada
🔒

12.2 Projeto: Permissões de Cliente, Operador e Administrador

Declare dependências Security(get_current_user, scopes=["admin"]) para restringir endpoints operacionais.

Bloqueada
🛡️
CAPÍTULO 14

Módulo 13 — Segurança de APIs (OWASP Top 10)

2 aulas

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.

Bloqueada
🔒

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.

Bloqueada
CAPÍTULO 15

Módulo 14 — Tratamento Padronizado de Erros

2 aulas

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.

Bloqueada
🔒

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.

Bloqueada
📡
CAPÍTULO 16

Módulo 15 — Integrações HTTP Resilientes

2 aulas

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.

Bloqueada
🔒

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.

Bloqueada
📈
CAPÍTULO 17

Módulo 16 — Cache e Redis

2 aulas

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.

Bloqueada
🔒

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.

Bloqueada
📬
CAPÍTULO 18

Módulo 17 — Tarefas em Background e Filas

2 aulas

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.

Bloqueada
🔒

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).

Bloqueada
📡
CAPÍTULO 19

Módulo 18 — Streaming, SSE e WebSockets

2 aulas

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.

Bloqueada
🔒

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.

Bloqueada
📄
CAPÍTULO 20

Módulo 19 — OpenAPI e Contratos

2 aulas

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.

Bloqueada
🔒

19.2 Projeto: Contrato OpenAPI Pronto para Consumidores Externos

Disponibilize o arquivo de contrato OpenAPI completo para geração automatizada de SDKs de clientes.

Bloqueada
🧪
CAPÍTULO 21

Módulo 20 — Testes Automatizados

2 aulas

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.

Bloqueada
🔒

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.

Bloqueada
📈
CAPÍTULO 22

Módulo 21 — Profiling e Benchmarking

2 aulas

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.

Bloqueada
🔒

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.

Bloqueada
📊
CAPÍTULO 23

Módulo 22 — Testes de Carga (k6)

2 aulas

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.

Bloqueada
🔒

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.

Bloqueada
📈
CAPÍTULO 24

Módulo 23 — Otimização da Aplicação

2 aulas

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.

Bloqueada
🔒

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%.

Bloqueada
📊
CAPÍTULO 25

Módulo 24 — Observabilidade (OpenTelemetry)

2 aulas

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.

Bloqueada
🔒

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.

Bloqueada
🛡️
CAPÍTULO 26

Módulo 25 — Confiabilidade Operacional

2 aulas

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.

Bloqueada
🔒

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.

Bloqueada
🐳
CAPÍTULO 27

Módulo 26 — Docker e Segurança de Execução

2 aulas

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.

Bloqueada
🔒

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.

Bloqueada
🚀
CAPÍTULO 28

Módulo 27 — Deploy e Dimensionamento

2 aulas

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.

Bloqueada
🔒

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.

Bloqueada
🏢
CAPÍTULO 29

Módulo 28 — Microsserviços e Sistemas Distribuídos

1 aulas

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.

Bloqueada
🏆
CAPÍTULO 30

Módulo 29 — Projeto Final: API Logística de Alta Performance

1 aulas

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.

Bloqueada