SlideShare uma empresa Scribd logo
1 de 29
Baixar para ler offline
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

"Micro-frontends from A to Z. How and Why we use Micro-frontends in Namecheap...
"Micro-frontends from A to Z. How and Why we use Micro-frontends in Namecheap..."Micro-frontends from A to Z. How and Why we use Micro-frontends in Namecheap...
"Micro-frontends from A to Z. How and Why we use Micro-frontends in Namecheap...Fwdays
 
JFokus: Cubes, Hexagons, Triangles, and More: Understanding Microservices
JFokus: Cubes, Hexagons, Triangles, and More: Understanding MicroservicesJFokus: Cubes, Hexagons, Triangles, and More: Understanding Microservices
JFokus: Cubes, Hexagons, Triangles, and More: Understanding MicroservicesChris Richardson
 
O que é Computação Gráfica?
O que é Computação Gráfica?O que é Computação Gráfica?
O que é Computação Gráfica?Liliane Machado
 
Aula 1- Fundamentos da computação móvel
Aula 1- Fundamentos da computação móvelAula 1- Fundamentos da computação móvel
Aula 1- Fundamentos da computação móvelJanynne Gomes
 
Developing applications with a microservice architecture (SVforum, microservi...
Developing applications with a microservice architecture (SVforum, microservi...Developing applications with a microservice architecture (SVforum, microservi...
Developing applications with a microservice architecture (SVforum, microservi...Chris Richardson
 
Engenharia de Software - Conceitos e Modelos de Desenvolvimento
Engenharia de Software - Conceitos e Modelos de Desenvolvimento Engenharia de Software - Conceitos e Modelos de Desenvolvimento
Engenharia de Software - Conceitos e Modelos de Desenvolvimento Sérgio Souza Costa
 
Desenvolvimento de aplicações para dispositivos móveis módulo i - aula 1
Desenvolvimento de aplicações para dispositivos móveis   módulo i - aula 1Desenvolvimento de aplicações para dispositivos móveis   módulo i - aula 1
Desenvolvimento de aplicações para dispositivos móveis módulo i - aula 1Carlos Eugenio Torres
 
Programação Desktop: Uma abordagem com Java
Programação Desktop: Uma abordagem com JavaProgramação Desktop: Uma abordagem com Java
Programação Desktop: Uma abordagem com JavaRosicleia Frasson
 
Computação Pervasiva
Computação PervasivaComputação Pervasiva
Computação Pervasivalucaslsantoss
 
New features of Minimal APIs in .NET 7 -Muralidharan Deenathayalan.pptx
New features of Minimal APIs in .NET 7 -Muralidharan Deenathayalan.pptxNew features of Minimal APIs in .NET 7 -Muralidharan Deenathayalan.pptx
New features of Minimal APIs in .NET 7 -Muralidharan Deenathayalan.pptxMuralidharan Deenathayalan
 
MAUI Blazor - One App that runs everywhere
MAUI Blazor - One App that runs everywhereMAUI Blazor - One App that runs everywhere
MAUI Blazor - One App that runs everywhereJose Javier Columbie
 
Design patterns for microservice architecture
Design patterns for microservice architectureDesign patterns for microservice architecture
Design patterns for microservice architectureThe Software House
 
Improving Performance of Micro-Frontend Applications through Error Monitoring
Improving Performance of Micro-Frontend Applications through Error MonitoringImproving Performance of Micro-Frontend Applications through Error Monitoring
Improving Performance of Micro-Frontend Applications through Error MonitoringScyllaDB
 
Padrões Arquiteturais - MVC, MVP e MVVM
Padrões Arquiteturais - MVC, MVP e MVVMPadrões Arquiteturais - MVC, MVP e MVVM
Padrões Arquiteturais - MVC, MVP e MVVMAricelio Souza
 

Mais procurados (20)

"Micro-frontends from A to Z. How and Why we use Micro-frontends in Namecheap...
"Micro-frontends from A to Z. How and Why we use Micro-frontends in Namecheap..."Micro-frontends from A to Z. How and Why we use Micro-frontends in Namecheap...
"Micro-frontends from A to Z. How and Why we use Micro-frontends in Namecheap...
 
Dependency Injection
Dependency InjectionDependency Injection
Dependency Injection
 
Clean Architecture
Clean ArchitectureClean Architecture
Clean Architecture
 
JFokus: Cubes, Hexagons, Triangles, and More: Understanding Microservices
JFokus: Cubes, Hexagons, Triangles, and More: Understanding MicroservicesJFokus: Cubes, Hexagons, Triangles, and More: Understanding Microservices
JFokus: Cubes, Hexagons, Triangles, and More: Understanding Microservices
 
Arquitetura de Software EXPLICADA
Arquitetura de Software EXPLICADAArquitetura de Software EXPLICADA
Arquitetura de Software EXPLICADA
 
O que é Computação Gráfica?
O que é Computação Gráfica?O que é Computação Gráfica?
O que é Computação Gráfica?
 
An introduction to Xamarin
An introduction to XamarinAn introduction to Xamarin
An introduction to Xamarin
 
Aula 1- Fundamentos da computação móvel
Aula 1- Fundamentos da computação móvelAula 1- Fundamentos da computação móvel
Aula 1- Fundamentos da computação móvel
 
Developing applications with a microservice architecture (SVforum, microservi...
Developing applications with a microservice architecture (SVforum, microservi...Developing applications with a microservice architecture (SVforum, microservi...
Developing applications with a microservice architecture (SVforum, microservi...
 
Engenharia de Software - Conceitos e Modelos de Desenvolvimento
Engenharia de Software - Conceitos e Modelos de Desenvolvimento Engenharia de Software - Conceitos e Modelos de Desenvolvimento
Engenharia de Software - Conceitos e Modelos de Desenvolvimento
 
Desenvolvimento de aplicações para dispositivos móveis módulo i - aula 1
Desenvolvimento de aplicações para dispositivos móveis   módulo i - aula 1Desenvolvimento de aplicações para dispositivos móveis   módulo i - aula 1
Desenvolvimento de aplicações para dispositivos móveis módulo i - aula 1
 
Programação Desktop: Uma abordagem com Java
Programação Desktop: Uma abordagem com JavaProgramação Desktop: Uma abordagem com Java
Programação Desktop: Uma abordagem com Java
 
Computação Pervasiva
Computação PervasivaComputação Pervasiva
Computação Pervasiva
 
New features of Minimal APIs in .NET 7 -Muralidharan Deenathayalan.pptx
New features of Minimal APIs in .NET 7 -Muralidharan Deenathayalan.pptxNew features of Minimal APIs in .NET 7 -Muralidharan Deenathayalan.pptx
New features of Minimal APIs in .NET 7 -Muralidharan Deenathayalan.pptx
 
MAUI Blazor - One App that runs everywhere
MAUI Blazor - One App that runs everywhereMAUI Blazor - One App that runs everywhere
MAUI Blazor - One App that runs everywhere
 
Design patterns for microservice architecture
Design patterns for microservice architectureDesign patterns for microservice architecture
Design patterns for microservice architecture
 
Java: Condicionais
Java: CondicionaisJava: Condicionais
Java: Condicionais
 
Improving Performance of Micro-Frontend Applications through Error Monitoring
Improving Performance of Micro-Frontend Applications through Error MonitoringImproving Performance of Micro-Frontend Applications through Error Monitoring
Improving Performance of Micro-Frontend Applications through Error Monitoring
 
Padrões Arquiteturais - MVC, MVP e MVVM
Padrões Arquiteturais - MVC, MVP e MVVMPadrões Arquiteturais - MVC, MVP e MVVM
Padrões Arquiteturais - MVC, MVP e MVVM
 
Servidor apache
Servidor apacheServidor apache
Servidor apache
 

Semelhante a FastAPI: Criando microsserviços de alta performance

Rest, Gateway e Compiladores
Rest, Gateway e CompiladoresRest, Gateway e Compiladores
Rest, Gateway e CompiladoresRodrigo Senra
 
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 PyTorchFulvio 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 pythonGrupo 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 pythonPaula Grangeiro
 
Ideais Cowabunga - Headless Testing com GhostDriver
Ideais Cowabunga - Headless Testing com GhostDriverIdeais Cowabunga - Headless Testing com GhostDriver
Ideais Cowabunga - Headless Testing com GhostDriverStefan Teixeira
 
Robot Framework no DevTests #34
Robot Framework no DevTests #34Robot Framework no DevTests #34
Robot Framework no DevTests #34Mayara Fernandes
 
CNQS - Testes Automatizados & Continuous Delivery
CNQS - Testes Automatizados & Continuous DeliveryCNQS - Testes Automatizados & Continuous Delivery
CNQS - Testes Automatizados & Continuous DeliverySamanta 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 InterfaceDomingos Teruel
 
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 PythonFlá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 2012Rodrigo 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