Criando microsserviços de alta performance
Quem sou eu?
Izabela Guerreiro
Desenvolvedora Backend na Juntos Somos Mais
izaguerreiro
izaguerreiro
/in/izabela-dos-santos-guerreiro/
www.izaguerreiro.me
Expectativa
- Compreensão sobre o que é o framework FastAPI
- Conhecimento necessário para criar sua primeira API usando esse
framework
Agenda
- Conceitos básicos de Python
- Outros frameworks Python
- Sync e Async
- O que é FastAPI e como usá-lo na prática
- Encerramento
Python
- Simples
- Multiplataforma
- “Baterias” inclusas
- Lento
- Alto nível
- Tipagem dinâmica
- Linguagem interpretada
- Global interpreter lock (GIL)
Global Interpreter Lock (GIL)
- Impede multithreading no CPU
- Afetam programas que exigem CPU-bound
- Não afeta multithreading de I/O
- Biblioteca multiprocessing
Frameworks existentes
Síncrono x Assíncrono
Concorrência x Paralelismo
- lida com tarefas ao mesmo
tempo
- executa tarefas ao mesmo
tempo
Assincronicidade em Python
- asyncio
- async e await
Principais motivações para usar assincronismo
- Remover gargalos na aplicação
- Otimizar tarefas (reduzindo o tempo gasto)
- Melhorar o aproveitamento de recursos de hardware
O que é FastAPI?
- Framework web minimalista
- Criado por Sebastián Ramírez (@tiangolo)
- Primeiro commit em 2018 e apresentação em 2019
- 19k estrelinhas
- 1.3k fork
- Foco em REST
- Python 3.6+
Quem já está usando?
https://eng.uber.com/ludwig-v0-2/
https://netflixtechblog.com/introducing-dispatch-da4b8a2a8072
Uvicorn
- ASGI
- Multiprocessing
- Gunicorn
Rápido
- Alta performance, equivalente a NodeJS e Go
- Topo do rank de performance de Python
- built on top Starlette e Pydantic
Starlatte
- Kit de ferramentas ASGI
- Frameworks: Responder, FastAPI e Flama
- Suporte a GraphQL, WebSocket, Session, Cookies
Pydantic
- Validação de dados
- Gerenciamento de configurações
- Type hints
- Conversão automática de tipos
Baseado em Python Type Hints
- Verificação de tipos
- Erros de tipos
- Autocomplete
Baseado em padrões
- OpenAPI (Swagger)
- JSONSchema
- OAuth2
- Documentação automática
de APIs
- Open Source
Fácil
- Fácil de aprender
- Fácil de usar
- Menos código, menos bugs
- Rápido para codar
- Documentação incrível
Benchmark
Teste de estresse:
- Cluster 4 CPUs 16GB de ram
- 500 threads para consultar uma sequência aleatória de comprimento
aleatório em uma tabela com 1 milhão de campos varchar (255)
Fonte: https://twitter.com/Manjusaka_Lee/status/1259265066412593152/photo/1
Benchmark
Benchmark
Injeção de Dependências
- Padrão de Projeto
- Lógica compartilhada
- Conexão de banco de dados compartilhada
- Segurança
- Autenticação
ORM
- SQLAlchemy + Alembic
- encode/databases
- Tortoise
Repositórios Github
- tiangolo/full-stack-fastapi-postgresql
- tiangolo/full-stack-fastapi-couchbase
- microsoft/cookiecutter-spacy-fastapi
- awesome-fastapi-projects
- awesome-fastapi
Live Code
Encerramento
- Rápido e fácil
- Documentação automática
- Suporte a GraphQL, Websocket, etc
- Não possui ORM padrão
- Problema com debbugers (pdb)
FastAPI: Criando microsserviços de alta performance

FastAPI: Criando microsserviços de alta performance