Este repositório contém o código de demonstração utilizado na palestra apresentada no FLISOL DF 2026 (SENAC DF, 26/04).
O objetivo deste projeto é demonstrar APIs, boas práticas, além de como validar essa performance através de ferramentas de teste de carga open source como Locust e k6.
- FastAPI: Framework moderno e de alta performance para construção de APIs.
- bfast-py: Biblioteca para serialização ultra-rápida (utilizada no endpoint
/numbers). - Locust: Ferramenta de teste de carga baseada em Python.
- k6: Ferramenta de teste de performance moderna escrita em Go e scriptada em JavaScript.
- Bruno: Cliente de API open-source focado em simplicidade e Git-friendly.
- uv: Gerenciador de pacotes e ambientes Python extremamente veloz.
main.py: Implementação otimizada utilizando bfastBFastResponse.api.py: Implementação padrão do FastAPI para comparação.locustfile.py: Scripts de teste de carga para o Locust.k6/: Diretório contendo diferentes cenários de teste para k6 (carga.js,pico.js,stress.js).
- Tipagem Estrita: Utilize Pydantic para validação de esquemas e contratos claros.
- Serialização Otimizada: Em cenários críticos, utilize formatos binários ou serializadores rápidos como o
bfast. - Documentação Viva: Mantenha o OpenAPI sempre atualizado e utilize ferramentas que consumam esse contrato.
- Async/Await: Aproveite a concorrência do Python para operações de I/O.
- Cenários Realistas: Modele o comportamento do usuário (
TaskSet) com pesos diferentes para cada ação. - Monitoramento em Tempo Real: Utilize a interface web para identificar gargalos durante a execução.
- Escalabilidade: Execute em modo distribuído para simular milhares de usuários simultâneos.
- Thresholds (SLA): Defina critérios de sucesso/falha automáticos (ex: 95% das requisições < 200ms).
- Cenários Variados: Teste diferentes perfis (Load, Stress, Spike) para entender o limite da infraestrutura.
- CI/CD Integration: k6 é ideal para ser executado em pipelines devido ao seu binário único e saída amigável para máquinas.
- Git-Friendly: Ao contrário de outros clientes, o Bruno salva as coleções em arquivos de texto simples, facilitando o code review e versionamento.
- Ambientes (Environments): Isole variáveis de prod/dev sem expor segredos.
- Scripts: Utilize scripts pré e pós requisição para automações complexas de autenticação.
Este repositório inclui instruções personalizadas para o GitHub Copilot localizadas em .github/skills/. Estas "skills" ajudam a IA a seguir as melhores práticas, utilize no seu agente preferido:
api-design: Boas práticas APISbruno-client.md: Organização de coleções Git-friendly.fastapi-best-practices: Padronização de FastAPI e Pydantic.k6-performance.md: Performance as code e SLAs.locust-testing: Modelagem de carga centrada no usuário.
Recomendamos o uso do uv para gerenciar o ambiente Python:
# Instalar o uv (caso não tenha)
curl -LsSf https://astral.sh/uv/install.sh | shPara os testes de performance com k6, instale-o conforme seu sistema:
Linux (Snap):
sudo snap install k6macOS (Homebrew):
brew install k6Windows (Chocolatey):
choco install k6# Sincronizar dependências
uv syncPara rodar a versão otimizada:
uv run fastapi run main.py --port 8000uv run locust -f locustfile.pyk6 run k6/carga.jsEvento: FLISOL DF 2026
Local: SENAC DF
Data: 26/04/2026