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

PDF
CyberOps Associate Modul 24 Technologies and Protocols
PDF
Microsoft 365 Business Voice
PPTX
Big Data Analytics in the Cloud with Microsoft Azure
PPTX
Welcome to Azure DevOps
PPTX
SSL/TLS
PDF
CyberOps Associate Modul 22 Endpoint Protection
PDF
Microsoft Office 365 Security and Compliance
PDF
Mashreq Bank’s Lean Agile Journey…the good, bad and the ugly by Steve Snowdon...
CyberOps Associate Modul 24 Technologies and Protocols
Microsoft 365 Business Voice
Big Data Analytics in the Cloud with Microsoft Azure
Welcome to Azure DevOps
SSL/TLS
CyberOps Associate Modul 22 Endpoint Protection
Microsoft Office 365 Security and Compliance
Mashreq Bank’s Lean Agile Journey…the good, bad and the ugly by Steve Snowdon...

Mais procurados (20)

PPTX
What is Salesforce lighting explained
PDF
Building an insurance startup with Alan, Luko, Coverd & Balderton
PDF
Arquitetura funcional em microservices, 4 anos depois
PPTX
What is NET Bios.pptx
PDF
Tech leaders guide to effective building of machine learning products
PPTX
Domain name system (dns)
PPTX
Overview on Cryptography and Network Security
PPTX
Modern Workplace with Microsoft 365
PPTX
TELNET and SSH by MUSTAFA SAKHAI
PPT
INTRODUCTION TO IIS
PPTX
What is Microsoft Dynamics 365 Business Central & What Does It Mean for My Bu...
PPTX
Secure your M365 resources using Azure AD Identity Governance
PPTX
Introduction of cryptography and network security
PDF
Data analytics as a service
PPTX
Orquestração de containers com Rancher
PDF
What is WHOIS?
PPTX
Salesforce Cross-Cloud Architecture
PDF
Autorização de transações no Nubank
PPTX
Kerberos Authentication Protocol
What is Salesforce lighting explained
Building an insurance startup with Alan, Luko, Coverd & Balderton
Arquitetura funcional em microservices, 4 anos depois
What is NET Bios.pptx
Tech leaders guide to effective building of machine learning products
Domain name system (dns)
Overview on Cryptography and Network Security
Modern Workplace with Microsoft 365
TELNET and SSH by MUSTAFA SAKHAI
INTRODUCTION TO IIS
What is Microsoft Dynamics 365 Business Central & What Does It Mean for My Bu...
Secure your M365 resources using Azure AD Identity Governance
Introduction of cryptography and network security
Data analytics as a service
Orquestração de containers com Rancher
What is WHOIS?
Salesforce Cross-Cloud Architecture
Autorização de transações no Nubank
Kerberos Authentication Protocol
Anúncio

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

PDF
Microservices em Python: desafios e soluções
PPTX
DevTalk 08/2019
PDF
Microservices: uma abordagem para arquitetura de aplicações (Devcamp 2015)
PDF
Microservices reativos e a experiência do iFood
PDF
Devcamp 2017 Microservices Reativos
PDF
Um método para o desenvolvimento de software baseado em microsserviços
PDF
Introdução a Microservices com Node.JS
PDF
QCon SP 2017 - Reactive Microservices e a experiência do iFood
PDF
Arquitetura de Microserviços
PDF
QCon SP 2016 - WebAPIs e delivery: Matando a fome de 1 milhão de pedidos men...
PDF
Internet das coisas - A Revolução já começou
PDF
GUJavaSC - Combinando Micro-serviços com Práticas DevOps
PDF
TDC Floripa 2016 - Decolando seus micro-serviços na Spring Cloud
PPSX
Web Tools Pt Br
PDF
Microservices
PDF
Containers and microservices orchestration
PPSX
Web tools pt-br
PDF
Vantagens e desvantagens de uma arquitetura microservices
PPTX
ODP
Ruby on Rails 100% na cloud com heroku e outros serviços
Microservices em Python: desafios e soluções
DevTalk 08/2019
Microservices: uma abordagem para arquitetura de aplicações (Devcamp 2015)
Microservices reativos e a experiência do iFood
Devcamp 2017 Microservices Reativos
Um método para o desenvolvimento de software baseado em microsserviços
Introdução a Microservices com Node.JS
QCon SP 2017 - Reactive Microservices e a experiência do iFood
Arquitetura de Microserviços
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
GUJavaSC - Combinando Micro-serviços com Práticas DevOps
TDC Floripa 2016 - Decolando seus micro-serviços na Spring Cloud
Web Tools Pt Br
Microservices
Containers and microservices orchestration
Web tools pt-br
Vantagens e desvantagens de uma arquitetura microservices
Ruby on Rails 100% na cloud com heroku e outros serviços
Anúncio

Escalabilidade e Resiliência de Microservices em Python