SlideShare uma empresa Scribd logo
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

Mais conteúdo relacionado

Mais procurados

Hack言語に賭けたチームの話
Hack言語に賭けたチームの話Hack言語に賭けたチームの話
Hack言語に賭けたチームの話
Yuji Otani
 
The everyday developer's guide to version control with Git
The everyday developer's guide to version control with GitThe everyday developer's guide to version control with Git
The everyday developer's guide to version control with Git
E Carter
 
30分で分かる!OSの作り方 ver.2
30分で分かる!OSの作り方 ver.230分で分かる!OSの作り方 ver.2
30分で分かる!OSの作り方 ver.2
uchan_nos
 
Sphinxで作る貢献しやすい ドキュメント翻訳の仕組み
Sphinxで作る貢献しやすいドキュメント翻訳の仕組みSphinxで作る貢献しやすいドキュメント翻訳の仕組み
Sphinxで作る貢献しやすい ドキュメント翻訳の仕組み
Takayuki Shimizukawa
 
Git l'essentiel
Git l'essentielGit l'essentiel
Git l'essentiel
Riadh MNASRI
 
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Masahito Zembutsu
 
クラウドを最大限活用するinfrastructure as codeを考えよう
クラウドを最大限活用するinfrastructure as codeを考えようクラウドを最大限活用するinfrastructure as codeを考えよう
クラウドを最大限活用するinfrastructure as codeを考えよう
NTT Communications Technology Development
 
Présentation de git
Présentation de gitPrésentation de git
Présentation de git
Julien Blin
 
20 Altair PBS Professional Features in 20 minutes, 2018
20 Altair PBS Professional Features in 20 minutes, 201820 Altair PBS Professional Features in 20 minutes, 2018
20 Altair PBS Professional Features in 20 minutes, 2018
Susheel Patidar
 
Git presentation
Git presentationGit presentation
Git presentation
Sai Kumar Satapathy
 
The journey to GitOps
The journey to GitOpsThe journey to GitOps
The journey to GitOps
Nicola Baldi
 
GitHub Basics - Derek Bable
GitHub Basics - Derek BableGitHub Basics - Derek Bable
GitHub Basics - Derek Bable
"FENG "GEORGE"" YU
 
Github
GithubGithub
Github
MeetPatel710
 
Git - Fluxo do Versionamento adotado
Git - Fluxo do Versionamento adotadoGit - Fluxo do Versionamento adotado
Git - Fluxo do Versionamento adotado
William Lima
 
Istio a service mesh
Istio   a service meshIstio   a service mesh
Istio a service mesh
Chandresh Pancholi
 
Linux container, namespaces & CGroup.
Linux container, namespaces & CGroup. Linux container, namespaces & CGroup.
Linux container, namespaces & CGroup.
Neeraj Shrimali
 
Difference between Github vs Gitlab vs Bitbucket
Difference between Github vs Gitlab vs BitbucketDifference between Github vs Gitlab vs Bitbucket
Difference between Github vs Gitlab vs Bitbucket
jeetendra mandal
 
Github basics
Github basicsGithub basics
Github basics
Radoslav Georgiev
 
Cisco Modeling Labs (CML)を使ってネットワークを学ぼう!(DevNet編)
Cisco Modeling Labs (CML)を使ってネットワークを学ぼう!(DevNet編)Cisco Modeling Labs (CML)を使ってネットワークを学ぼう!(DevNet編)
Cisco Modeling Labs (CML)を使ってネットワークを学ぼう!(DevNet編)
シスコシステムズ合同会社
 
Kubernetes introduction
Kubernetes introductionKubernetes introduction
Kubernetes introduction
DAEBUM LEE
 

Mais procurados (20)

Hack言語に賭けたチームの話
Hack言語に賭けたチームの話Hack言語に賭けたチームの話
Hack言語に賭けたチームの話
 
The everyday developer's guide to version control with Git
The everyday developer's guide to version control with GitThe everyday developer's guide to version control with Git
The everyday developer's guide to version control with Git
 
30分で分かる!OSの作り方 ver.2
30分で分かる!OSの作り方 ver.230分で分かる!OSの作り方 ver.2
30分で分かる!OSの作り方 ver.2
 
Sphinxで作る貢献しやすい ドキュメント翻訳の仕組み
Sphinxで作る貢献しやすいドキュメント翻訳の仕組みSphinxで作る貢献しやすいドキュメント翻訳の仕組み
Sphinxで作る貢献しやすい ドキュメント翻訳の仕組み
 
Git l'essentiel
Git l'essentielGit l'essentiel
Git l'essentiel
 
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
 
クラウドを最大限活用するinfrastructure as codeを考えよう
クラウドを最大限活用するinfrastructure as codeを考えようクラウドを最大限活用するinfrastructure as codeを考えよう
クラウドを最大限活用するinfrastructure as codeを考えよう
 
Présentation de git
Présentation de gitPrésentation de git
Présentation de git
 
20 Altair PBS Professional Features in 20 minutes, 2018
20 Altair PBS Professional Features in 20 minutes, 201820 Altair PBS Professional Features in 20 minutes, 2018
20 Altair PBS Professional Features in 20 minutes, 2018
 
Git presentation
Git presentationGit presentation
Git presentation
 
The journey to GitOps
The journey to GitOpsThe journey to GitOps
The journey to GitOps
 
GitHub Basics - Derek Bable
GitHub Basics - Derek BableGitHub Basics - Derek Bable
GitHub Basics - Derek Bable
 
Github
GithubGithub
Github
 
Git - Fluxo do Versionamento adotado
Git - Fluxo do Versionamento adotadoGit - Fluxo do Versionamento adotado
Git - Fluxo do Versionamento adotado
 
Istio a service mesh
Istio   a service meshIstio   a service mesh
Istio a service mesh
 
Linux container, namespaces & CGroup.
Linux container, namespaces & CGroup. Linux container, namespaces & CGroup.
Linux container, namespaces & CGroup.
 
Difference between Github vs Gitlab vs Bitbucket
Difference between Github vs Gitlab vs BitbucketDifference between Github vs Gitlab vs Bitbucket
Difference between Github vs Gitlab vs Bitbucket
 
Github basics
Github basicsGithub basics
Github basics
 
Cisco Modeling Labs (CML)を使ってネットワークを学ぼう!(DevNet編)
Cisco Modeling Labs (CML)を使ってネットワークを学ぼう!(DevNet編)Cisco Modeling Labs (CML)を使ってネットワークを学ぼう!(DevNet編)
Cisco Modeling Labs (CML)を使ってネットワークを学ぼう!(DevNet編)
 
Kubernetes introduction
Kubernetes introductionKubernetes introduction
Kubernetes introduction
 

Semelhante a FastAPI: Criando microsserviços de alta performance

Conhecendo o Django
Conhecendo o DjangoConhecendo o Django
Conhecendo o Django
Marcos Thomaz
 
Rest, Gateway e Compiladores
Rest, Gateway e CompiladoresRest, Gateway e Compiladores
Rest, Gateway e Compiladores
Rodrigo Senra
 
Python e suas aplicações
Python e suas aplicaçõesPython e suas aplicações
Python e suas aplicações
Izabela Guerreiro
 
Facebook Developer Circles SP - Redes neurais convolucionais com PyTorch
Facebook Developer Circles SP - Redes neurais convolucionais com PyTorchFacebook Developer Circles SP - Redes neurais convolucionais com PyTorch
Facebook Developer Circles SP - Redes neurais convolucionais com PyTorch
Fulvio Mascara
 
O que podemos fazer com Python?
O que podemos fazer com Python?O que podemos fazer com Python?
O que podemos fazer com Python?
Izabela Guerreiro
 
Junho 2016 - Django - A sua cápsula de soluções web em python
Junho 2016 - Django - A sua cápsula de soluções web em pythonJunho 2016 - Django - A sua cápsula de soluções web em python
Junho 2016 - Django - A sua cápsula de soluções web em python
Grupo de Testes Carioca
 
Django - A sua cápsula de soluções web em python
Django - A sua cápsula de soluções web em pythonDjango - A sua cápsula de soluções web em python
Django - A sua cápsula de soluções web em python
Paula Grangeiro
 
Python e Golang - Parte 2
Python e Golang - Parte 2Python e Golang - Parte 2
Python e Golang - Parte 2
Marcos Aurelio Barranco
 
Api platform
Api platformApi platform
Api platform
Camila Fernandes
 
Ideais Cowabunga - Headless Testing com GhostDriver
Ideais Cowabunga - Headless Testing com GhostDriverIdeais Cowabunga - Headless Testing com GhostDriver
Ideais Cowabunga - Headless Testing com GhostDriver
Stefan Teixeira
 
Robot Framework no DevTests #34
Robot Framework no DevTests #34Robot Framework no DevTests #34
Robot Framework no DevTests #34
Mayara Fernandes
 
CNQS - Testes Automatizados & Continuous Delivery
CNQS - Testes Automatizados & Continuous DeliveryCNQS - Testes Automatizados & Continuous Delivery
CNQS - Testes Automatizados & Continuous Delivery
Samanta Cicilia
 
Desenvovelndo Aplicações com PHP, AJAX e Y!UI Yahoo User Interface
Desenvovelndo Aplicações com PHP, AJAX e Y!UI Yahoo User InterfaceDesenvovelndo Aplicações com PHP, AJAX e Y!UI Yahoo User Interface
Desenvovelndo Aplicações com PHP, AJAX e Y!UI Yahoo User Interface
Domingos Teruel
 
PHP Tools for Fast coding
PHP Tools for Fast codingPHP Tools for Fast coding
PHP Tools for Fast coding
Daniel Archer Marques Cramer
 
Automatizando Nmap com NSE
Automatizando Nmap com NSEAutomatizando Nmap com NSE
Automatizando Nmap com NSE
Tiago Natel de Moura
 
Desenvolvimento de aplicações embarcadas utilizando Python
Desenvolvimento de aplicações embarcadas utilizando PythonDesenvolvimento de aplicações embarcadas utilizando Python
Desenvolvimento de aplicações embarcadas utilizando Python
Flávio Ribeiro
 
TDC2010 - Trilha Python: Python no iG (Automação de Datacenters)
TDC2010 - Trilha Python: Python no iG (Automação de Datacenters)TDC2010 - Trilha Python: Python no iG (Automação de Datacenters)
TDC2010 - Trilha Python: Python no iG (Automação de Datacenters) iG - Internet Group do Brasil S/A
 
Cases de Python no 7Masters 2012
Cases de Python no 7Masters 2012Cases de Python no 7Masters 2012
Cases de Python no 7Masters 2012
Rodrigo Senra
 
Python: Cabe no seu bolso, cabe no seu micro, cabe no seu cérebro!
Python: Cabe no seu bolso, cabe no seu micro, cabe no seu cérebro!Python: Cabe no seu bolso, cabe no seu micro, cabe no seu cérebro!
Python: Cabe no seu bolso, cabe no seu micro, cabe no seu cérebro!
iMasters
 

Semelhante a FastAPI: Criando microsserviços de alta performance (20)

Conhecendo o Django
Conhecendo o DjangoConhecendo o Django
Conhecendo o Django
 
Rest, Gateway e Compiladores
Rest, Gateway e CompiladoresRest, Gateway e Compiladores
Rest, Gateway e Compiladores
 
Python e suas aplicações
Python e suas aplicaçõesPython e suas aplicações
Python e suas aplicações
 
Facebook Developer Circles SP - Redes neurais convolucionais com PyTorch
Facebook Developer Circles SP - Redes neurais convolucionais com PyTorchFacebook Developer Circles SP - Redes neurais convolucionais com PyTorch
Facebook Developer Circles SP - Redes neurais convolucionais com PyTorch
 
O que podemos fazer com Python?
O que podemos fazer com Python?O que podemos fazer com Python?
O que podemos fazer com Python?
 
Junho 2016 - Django - A sua cápsula de soluções web em python
Junho 2016 - Django - A sua cápsula de soluções web em pythonJunho 2016 - Django - A sua cápsula de soluções web em python
Junho 2016 - Django - A sua cápsula de soluções web em python
 
Django - A sua cápsula de soluções web em python
Django - A sua cápsula de soluções web em pythonDjango - A sua cápsula de soluções web em python
Django - A sua cápsula de soluções web em python
 
Python e Golang - Parte 2
Python e Golang - Parte 2Python e Golang - Parte 2
Python e Golang - Parte 2
 
Api platform
Api platformApi platform
Api platform
 
Ideais Cowabunga - Headless Testing com GhostDriver
Ideais Cowabunga - Headless Testing com GhostDriverIdeais Cowabunga - Headless Testing com GhostDriver
Ideais Cowabunga - Headless Testing com GhostDriver
 
Robot Framework no DevTests #34
Robot Framework no DevTests #34Robot Framework no DevTests #34
Robot Framework no DevTests #34
 
CNQS - Testes Automatizados & Continuous Delivery
CNQS - Testes Automatizados & Continuous DeliveryCNQS - Testes Automatizados & Continuous Delivery
CNQS - Testes Automatizados & Continuous Delivery
 
Desenvovelndo Aplicações com PHP, AJAX e Y!UI Yahoo User Interface
Desenvovelndo Aplicações com PHP, AJAX e Y!UI Yahoo User InterfaceDesenvovelndo Aplicações com PHP, AJAX e Y!UI Yahoo User Interface
Desenvovelndo Aplicações com PHP, AJAX e Y!UI Yahoo User Interface
 
PHP Tools for Fast coding
PHP Tools for Fast codingPHP Tools for Fast coding
PHP Tools for Fast coding
 
Automatizando Nmap com NSE
Automatizando Nmap com NSEAutomatizando Nmap com NSE
Automatizando Nmap com NSE
 
Desenvolvimento de aplicações embarcadas utilizando Python
Desenvolvimento de aplicações embarcadas utilizando PythonDesenvolvimento de aplicações embarcadas utilizando Python
Desenvolvimento de aplicações embarcadas utilizando Python
 
Metasploit Framework: Software Livre para PoC de Vulnerabilidades
Metasploit Framework: Software Livre para PoC de VulnerabilidadesMetasploit Framework: Software Livre para PoC de Vulnerabilidades
Metasploit Framework: Software Livre para PoC de Vulnerabilidades
 
TDC2010 - Trilha Python: Python no iG (Automação de Datacenters)
TDC2010 - Trilha Python: Python no iG (Automação de Datacenters)TDC2010 - Trilha Python: Python no iG (Automação de Datacenters)
TDC2010 - Trilha Python: Python no iG (Automação de Datacenters)
 
Cases de Python no 7Masters 2012
Cases de Python no 7Masters 2012Cases de Python no 7Masters 2012
Cases de Python no 7Masters 2012
 
Python: Cabe no seu bolso, cabe no seu micro, cabe no seu cérebro!
Python: Cabe no seu bolso, cabe no seu micro, cabe no seu cérebro!Python: Cabe no seu bolso, cabe no seu micro, cabe no seu cérebro!
Python: Cabe no seu bolso, cabe no seu micro, cabe no seu cérebro!
 

FastAPI: Criando microsserviços de alta performance