SlideShare uma empresa Scribd logo
Microservices em Python:
Resiliência e Escalabilidade
Guilherme Vierno
About me
• Físico por formação
• Pythonista desde 2010
• Mineiro agora morando no Rio
• Desenvolvedor na
• Plataformas de publicação
Por que falar de
microservices?
Interesse ao longo do tempo
Fonte: google trends
Por que falar de
microservices?
• Tendência do mercado
• Implementado nos líderes de tecnologia do mundo
(Amazon, eBay, Netflix, Apple…)
• Resolve bem problemas de desenvolvimento em
larga escala
Intro

Do Monolito aos Serviços
globo.com (Monolito)
pré micro-serviços
Request
Response
globo.com (Monolito)
pré micro-serviços
• Um grande projeto em Django
• ∞ linhas de código e milhares de testes
• Banco MySQL superinflado
• Vários times desenvolvendo o mesmo codebase
Monolito

Principais problemas
1. Baixa velocidade de entregas
• “Time de deploy” e “dia do deploy”
• Refatoração cada vez mais cara
2. Escalabilidade
• Ruim de medir uso de recursos por módulo
• Dificuldade em fazer cache eficiente
3. Resiliência
• Algumas subidas causando instabilidade geral
Separação em serviços
Migrando partes da

aplicação para

serviços isolados
Micro-serviços
Time 1
Time 3
Time 2
Time 4
IN
OUT
IN
OUT
Micro-serviços
Características comuns
• Velocidade de desenvolvimento
• Pequenos em tamanho e limitados por contexto
• Desenvolvidos autonomamente
• Escalabilidade
• Deploys individuais
• Resiliência
• Isolamento
• Automatização de processos (build, release,
monitoração…)
Python &
Microserviços &
Milhares de req/s &
Alta disponibilidade
Python &
Microserviços &
Escalabilidade &
Resiliência
1.Sistema eficiente de
cache
g1.globo.com/.*
/busca
/votar
/noticias
Renderizando uma matéria
Estilo
Conteúdo
Menu
Tenant
Semântica
Webmedia
GET /noticia/tiroteio-deixa-um-morto-e-feridos.ghtml
Cache distribuído
Cache distribuído
Cenário 1


A página já foi requisitada neste servidor
nos últimos 10 segundo
Cache distribuído
Cenário 2


Cache do Varnish expirou mas a matéria foi acessada
nos últimos 5 minutos e está fresca no redis
Cache distribuído
Cenário 3


A página não foi acessada nos últimos 5 minutos

ou não está no cache recente do redis
RENEW
Cache distribuído
serviço Tempo de cache
% das requisições
servidas
Expiração
Varnish 10s >80% Passiva
Redis 5min ~15% Ativa / LRU
MongoDB 5min - ∞ < 5% Ativa
2.Expectativa de falhas
Circuit Breaking
OUT
IN
Expectativa de falhas
• Cache + Stale (Fail-safe)
• Retry
• Backoff
3.Comunicação Leve e
assíncrona
• https://github.com/aio-libs/
• aioredis
• aiomysql
• aiopg
• toredis
• tornado-alf
Bibliotecas assíncronas
4.Monitoração
Healthcheck detalhado
{
"status": "failure",
"results": [
{
"output": "Connection Timeout",
"checker": "redis_connection",
"passed": false
}
]
}
Ferramentas
5.Automação
Facilidade de subir Apps
• Isolamento das apps
• Automação de Infra
• FaaS & PaaS & IaaS
• Autoscaling
• CI / CD
1. Cache distribuído
2. Expectativa de falhas
3. Comunicação leve e assíncrona
4. Monitoração
5. Automação
Recap
E por que Python?
• Prototipagem e desenvolvimento rápidos
• Facilidade de instrumentar continuous delivery /
DevOps / automações em geral
• Uso bem difundido de Microframeworks
• É bem fácil fazer comunicação leve entre apps
μservices em Python
Vantagens de usar Python
• Podemos combinar com outras linguagens
• Manutenção barata
• Uma boa hora de introduzir Python[3] na stack
μservices em Python
Mais coisas legais
• Tornado: Network I/O não bloqueante
• Flask: Zero ao deploy em pouco tempo
• Django: Tastypie, django rest framework, channels
• Nameko: Feito para microservices
• aiohttp: asyncio nativo com network
μservices em Python
Frameworks
Considerações Finais
• Monolith-first
• O momento certo é quando sentir a necessidade
• Atenção aos requisitos: Provisionamento de infra,
monitoração, automação…
• A maior mudança é cultural
Isso é tudo pessoal!
We’re hiring!
https://talentos.globo.com
Guilherme Vierno
vierno.com.br
Micro-serviços
Melhor velocidade das entregas
• Domínio do time sobre o serviço
• Deploy individual
• Automação e conteinerização
• Testes
Nem tudo são flores
• Complexidade de desenvolvimento/operacional
• Duplicação de dados
• Latência adicional
• Desuniformidade
• Refatoração cross-módulo

Mais conteúdo relacionado

Mais procurados

Sql Consultas MáS Complejas
Sql Consultas MáS ComplejasSql Consultas MáS Complejas
Sql Consultas MáS Complejas
alexmerono
 
Estrutura de dados em Java - Filas com lista encadeada
Estrutura de dados em Java - Filas com lista encadeada Estrutura de dados em Java - Filas com lista encadeada
Estrutura de dados em Java - Filas com lista encadeada Adriano Teixeira de Souza
 
Tipos de comunicaciones
Tipos de comunicacionesTipos de comunicaciones
Tipos de comunicacionesNixon Maza
 
Sql triggers
Sql triggersSql triggers
Sql triggers
Chandan Banerjee
 
Tutorial voz ip packet tracer
Tutorial voz ip packet tracerTutorial voz ip packet tracer
Tutorial voz ip packet tracerJosé Guerrero
 
Understanding the REST API of SharePoint 2013
Understanding the REST API of SharePoint 2013Understanding the REST API of SharePoint 2013
Understanding the REST API of SharePoint 2013
SPSSTHLM
 
Calidad de Servicio IP-MPLS v2.2
Calidad de Servicio IP-MPLS v2.2Calidad de Servicio IP-MPLS v2.2
Calidad de Servicio IP-MPLS v2.2
Gianpietro Lavado
 
Esquema E/R del Organigrama de una Empresa
Esquema E/R del Organigrama de una EmpresaEsquema E/R del Organigrama de una Empresa
Esquema E/R del Organigrama de una Empresa
José D Pluas
 
MySQL constraints
MySQL constraintsMySQL constraints
MySQL constraints
Harish Gyanani
 
Protocolos enrutamiento rip y rpt.ppt renovado
Protocolos enrutamiento rip y rpt.ppt renovadoProtocolos enrutamiento rip y rpt.ppt renovado
Protocolos enrutamiento rip y rpt.ppt renovadoElvis Barahona Alvarado
 
Capa de aplicación
Capa de aplicaciónCapa de aplicación
Capa de aplicación
Juan Karlos Macas Flores
 
Transacciones en SQL SERVER
Transacciones en SQL SERVERTransacciones en SQL SERVER
Transacciones en SQL SERVER
Jaime Aguilar Rafael
 
Enterprise Integration Patterns
Enterprise Integration PatternsEnterprise Integration Patterns
Enterprise Integration Patterns
Sergey Podolsky
 
Exception handling in plsql
Exception handling in plsqlException handling in plsql
Exception handling in plsql
Arun Sial
 

Mais procurados (20)

Sql Consultas MáS Complejas
Sql Consultas MáS ComplejasSql Consultas MáS Complejas
Sql Consultas MáS Complejas
 
Estrutura de dados em Java - Filas com lista encadeada
Estrutura de dados em Java - Filas com lista encadeada Estrutura de dados em Java - Filas com lista encadeada
Estrutura de dados em Java - Filas com lista encadeada
 
Tipos de comunicaciones
Tipos de comunicacionesTipos de comunicaciones
Tipos de comunicaciones
 
Sql triggers
Sql triggersSql triggers
Sql triggers
 
Tutorial voz ip packet tracer
Tutorial voz ip packet tracerTutorial voz ip packet tracer
Tutorial voz ip packet tracer
 
Paradigmas de programação
Paradigmas de programaçãoParadigmas de programação
Paradigmas de programação
 
Understanding the REST API of SharePoint 2013
Understanding the REST API of SharePoint 2013Understanding the REST API of SharePoint 2013
Understanding the REST API of SharePoint 2013
 
Respuestas
RespuestasRespuestas
Respuestas
 
Calidad de Servicio IP-MPLS v2.2
Calidad de Servicio IP-MPLS v2.2Calidad de Servicio IP-MPLS v2.2
Calidad de Servicio IP-MPLS v2.2
 
Esquema E/R del Organigrama de una Empresa
Esquema E/R del Organigrama de una EmpresaEsquema E/R del Organigrama de una Empresa
Esquema E/R del Organigrama de una Empresa
 
Apresentação para clientes mpls
Apresentação para clientes mplsApresentação para clientes mpls
Apresentação para clientes mpls
 
Telnet
TelnetTelnet
Telnet
 
MySQL constraints
MySQL constraintsMySQL constraints
MySQL constraints
 
Protocolos enrutamiento rip y rpt.ppt renovado
Protocolos enrutamiento rip y rpt.ppt renovadoProtocolos enrutamiento rip y rpt.ppt renovado
Protocolos enrutamiento rip y rpt.ppt renovado
 
Red de malla
Red de mallaRed de malla
Red de malla
 
Capa de aplicación
Capa de aplicaciónCapa de aplicación
Capa de aplicación
 
Transacciones en SQL SERVER
Transacciones en SQL SERVERTransacciones en SQL SERVER
Transacciones en SQL SERVER
 
Sql dml & tcl 2
Sql   dml & tcl 2Sql   dml & tcl 2
Sql dml & tcl 2
 
Enterprise Integration Patterns
Enterprise Integration PatternsEnterprise Integration Patterns
Enterprise Integration Patterns
 
Exception handling in plsql
Exception handling in plsqlException handling in plsql
Exception handling in plsql
 

Semelhante a Escalabilidade e Resiliência de Microservices em Python

Microservices em Python: desafios e soluções
Microservices em Python: desafios e soluçõesMicroservices em Python: desafios e soluções
Microservices em Python: desafios e soluções
Guilherme Vierno
 
DevTalk 08/2019
DevTalk 08/2019DevTalk 08/2019
DevTalk 08/2019
Leandro Silva
 
Microservices: uma abordagem para arquitetura de aplicações (Devcamp 2015)
Microservices: uma abordagem para arquitetura de aplicações (Devcamp 2015)Microservices: uma abordagem para arquitetura de aplicações (Devcamp 2015)
Microservices: uma abordagem para arquitetura de aplicações (Devcamp 2015)
Tiago Marchetti Dolphine
 
Microservices reativos e a experiência do iFood
Microservices reativos e a experiência do iFoodMicroservices reativos e a experiência do iFood
Microservices reativos e a experiência do iFood
DevCamp Campinas
 
Devcamp 2017 Microservices Reativos
Devcamp 2017   Microservices ReativosDevcamp 2017   Microservices Reativos
Devcamp 2017 Microservices Reativos
Tiago Marchetti Dolphine
 
Um método para o desenvolvimento de software baseado em microsserviços
Um método para o desenvolvimento de software baseado em microsserviçosUm método para o desenvolvimento de software baseado em microsserviços
Um método para o desenvolvimento de software baseado em microsserviços
Thiago Pereira
 
Introdução a Microservices com Node.JS
Introdução  a Microservices com Node.JSIntrodução  a Microservices com Node.JS
Introdução a Microservices com Node.JS
Eduardo Nunes Pereira
 
QCon SP 2017 - Reactive Microservices e a experiência do iFood
QCon SP 2017 - Reactive Microservices e a experiência do iFoodQCon SP 2017 - Reactive Microservices e a experiência do iFood
QCon SP 2017 - Reactive Microservices e a experiência do iFood
Tiago Marchetti Dolphine
 
Arquitetura de Microserviços
Arquitetura de MicroserviçosArquitetura de Microserviços
Arquitetura de Microserviços
Norberto Enomoto
 
QCon SP 2016 - WebAPIs e delivery: Matando a fome de 1 milhão de pedidos men...
QCon SP 2016 -  WebAPIs e delivery: Matando a fome de 1 milhão de pedidos men...QCon SP 2016 -  WebAPIs e delivery: Matando a fome de 1 milhão de pedidos men...
QCon SP 2016 - WebAPIs e delivery: Matando a fome de 1 milhão de pedidos men...
Tiago Marchetti Dolphine
 
Internet das coisas - A Revolução já começou
Internet das coisas - A Revolução já começouInternet das coisas - A Revolução já começou
Internet das coisas - A Revolução já começou
Jose Wilker
 
GUJavaSC - Combinando Micro-serviços com Práticas DevOps
GUJavaSC - Combinando Micro-serviços com Práticas DevOpsGUJavaSC - Combinando Micro-serviços com Práticas DevOps
GUJavaSC - Combinando Micro-serviços com Práticas DevOps
Rodrigo Cândido da Silva
 
TDC Floripa 2016 - Decolando seus micro-serviços na Spring Cloud
TDC Floripa 2016 - Decolando seus micro-serviços na Spring CloudTDC Floripa 2016 - Decolando seus micro-serviços na Spring Cloud
TDC Floripa 2016 - Decolando seus micro-serviços na Spring Cloud
Rodrigo Cândido da Silva
 
Web Tools Pt Br
Web Tools Pt BrWeb Tools Pt Br
Web Tools Pt Br
Paulo Mattos
 
Microservices
MicroservicesMicroservices
Microservices
Diego Pacheco
 
Containers and microservices orchestration
Containers and microservices orchestrationContainers and microservices orchestration
Containers and microservices orchestration
Petterson Henrique Andrade
 
Api todo list
Api todo listApi todo list
Ruby on Rails 100% na cloud com heroku e outros serviços
Ruby on Rails 100% na cloud com heroku e outros serviçosRuby on Rails 100% na cloud com heroku e outros serviços
Ruby on Rails 100% na cloud com heroku e outros serviçosBruno Ghisi
 
Enterprise php
Enterprise phpEnterprise php
Enterprise php
Guilherme Blanco
 

Semelhante a Escalabilidade e Resiliência de Microservices em Python (20)

Microservices em Python: desafios e soluções
Microservices em Python: desafios e soluçõesMicroservices em Python: desafios e soluções
Microservices em Python: desafios e soluções
 
DevTalk 08/2019
DevTalk 08/2019DevTalk 08/2019
DevTalk 08/2019
 
Microservices: uma abordagem para arquitetura de aplicações (Devcamp 2015)
Microservices: uma abordagem para arquitetura de aplicações (Devcamp 2015)Microservices: uma abordagem para arquitetura de aplicações (Devcamp 2015)
Microservices: uma abordagem para arquitetura de aplicações (Devcamp 2015)
 
Microservices reativos e a experiência do iFood
Microservices reativos e a experiência do iFoodMicroservices reativos e a experiência do iFood
Microservices reativos e a experiência do iFood
 
Devcamp 2017 Microservices Reativos
Devcamp 2017   Microservices ReativosDevcamp 2017   Microservices Reativos
Devcamp 2017 Microservices Reativos
 
Um método para o desenvolvimento de software baseado em microsserviços
Um método para o desenvolvimento de software baseado em microsserviçosUm método para o desenvolvimento de software baseado em microsserviços
Um método para o desenvolvimento de software baseado em microsserviços
 
Introdução a Microservices com Node.JS
Introdução  a Microservices com Node.JSIntrodução  a Microservices com Node.JS
Introdução a Microservices com Node.JS
 
QCon SP 2017 - Reactive Microservices e a experiência do iFood
QCon SP 2017 - Reactive Microservices e a experiência do iFoodQCon SP 2017 - Reactive Microservices e a experiência do iFood
QCon SP 2017 - Reactive Microservices e a experiência do iFood
 
Arquitetura de Microserviços
Arquitetura de MicroserviçosArquitetura de Microserviços
Arquitetura de Microserviços
 
QCon SP 2016 - WebAPIs e delivery: Matando a fome de 1 milhão de pedidos men...
QCon SP 2016 -  WebAPIs e delivery: Matando a fome de 1 milhão de pedidos men...QCon SP 2016 -  WebAPIs e delivery: Matando a fome de 1 milhão de pedidos men...
QCon SP 2016 - WebAPIs e delivery: Matando a fome de 1 milhão de pedidos men...
 
Internet das coisas - A Revolução já começou
Internet das coisas - A Revolução já começouInternet das coisas - A Revolução já começou
Internet das coisas - A Revolução já começou
 
GUJavaSC - Combinando Micro-serviços com Práticas DevOps
GUJavaSC - Combinando Micro-serviços com Práticas DevOpsGUJavaSC - Combinando Micro-serviços com Práticas DevOps
GUJavaSC - Combinando Micro-serviços com Práticas DevOps
 
TDC Floripa 2016 - Decolando seus micro-serviços na Spring Cloud
TDC Floripa 2016 - Decolando seus micro-serviços na Spring CloudTDC Floripa 2016 - Decolando seus micro-serviços na Spring Cloud
TDC Floripa 2016 - Decolando seus micro-serviços na Spring Cloud
 
Web Tools Pt Br
Web Tools Pt BrWeb Tools Pt Br
Web Tools Pt Br
 
Microservices
MicroservicesMicroservices
Microservices
 
Containers and microservices orchestration
Containers and microservices orchestrationContainers and microservices orchestration
Containers and microservices orchestration
 
Web tools pt-br
Web tools pt-brWeb tools pt-br
Web tools pt-br
 
Api todo list
Api todo listApi todo list
Api todo list
 
Ruby on Rails 100% na cloud com heroku e outros serviços
Ruby on Rails 100% na cloud com heroku e outros serviçosRuby on Rails 100% na cloud com heroku e outros serviços
Ruby on Rails 100% na cloud com heroku e outros serviços
 
Enterprise php
Enterprise phpEnterprise php
Enterprise php
 

Escalabilidade e Resiliência de Microservices em Python