SlideShare ist ein Scribd-Unternehmen logo
1 von 40
Downloaden Sie, um offline zu lesen
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

Weitere ähnliche Inhalte

Was ist angesagt?

ASP.NET과 C#으로 개발하는 대규모 소셜 게임
ASP.NET과 C#으로 개발하는 대규모 소셜 게임ASP.NET과 C#으로 개발하는 대규모 소셜 게임
ASP.NET과 C#으로 개발하는 대규모 소셜 게임
흥배 최
 
온톨로지 & 규칙 추론 시스템
온톨로지 & 규칙 추론 시스템온톨로지 & 규칙 추론 시스템
온톨로지 & 규칙 추론 시스템
Sang-Kyun Kim
 
딥러닝 모델을 이용한 반도체 웨이퍼 가공 불량 타입 분류
딥러닝 모델을 이용한 반도체 웨이퍼 가공 불량 타입 분류딥러닝 모델을 이용한 반도체 웨이퍼 가공 불량 타입 분류
딥러닝 모델을 이용한 반도체 웨이퍼 가공 불량 타입 분류
ssuserdff4c9
 

Was ist angesagt? (20)

Rest in flask
Rest in flaskRest in flask
Rest in flask
 
Presentation on Ember.js
Presentation on Ember.js Presentation on Ember.js
Presentation on Ember.js
 
Airflow를 이용한 데이터 Workflow 관리
Airflow를 이용한  데이터 Workflow 관리Airflow를 이용한  데이터 Workflow 관리
Airflow를 이용한 데이터 Workflow 관리
 
40+ tips to use Postman more efficiently
40+ tips to use Postman more efficiently40+ tips to use Postman more efficiently
40+ tips to use Postman more efficiently
 
유니티 + Nodejs를 활용한 멀티플레이어 게임 개발하기
유니티 + Nodejs를 활용한 멀티플레이어 게임 개발하기유니티 + Nodejs를 활용한 멀티플레이어 게임 개발하기
유니티 + Nodejs를 활용한 멀티플레이어 게임 개발하기
 
Trace memory leak with gdb (GDB로 메모리 누수 찾기)
Trace memory  leak with gdb (GDB로 메모리 누수 찾기)Trace memory  leak with gdb (GDB로 메모리 누수 찾기)
Trace memory leak with gdb (GDB로 메모리 누수 찾기)
 
RabbitMQ
RabbitMQRabbitMQ
RabbitMQ
 
Oracle on AWS RDS Migration - 성기명
Oracle on AWS RDS Migration - 성기명Oracle on AWS RDS Migration - 성기명
Oracle on AWS RDS Migration - 성기명
 
Soma search
Soma searchSoma search
Soma search
 
ASP.NET과 C#으로 개발하는 대규모 소셜 게임
ASP.NET과 C#으로 개발하는 대규모 소셜 게임ASP.NET과 C#으로 개발하는 대규모 소셜 게임
ASP.NET과 C#으로 개발하는 대규모 소셜 게임
 
온톨로지 & 규칙 추론 시스템
온톨로지 & 규칙 추론 시스템온톨로지 & 규칙 추론 시스템
온톨로지 & 규칙 추론 시스템
 
Introdução ao ASP .NET Web API
Introdução ao ASP .NET Web APIIntrodução ao ASP .NET Web API
Introdução ao ASP .NET Web API
 
A Web é uma API
A Web é uma APIA Web é uma API
A Web é uma API
 
Nginx Architecture
Nginx ArchitectureNginx Architecture
Nginx Architecture
 
Prometheus Overview
Prometheus OverviewPrometheus Overview
Prometheus Overview
 
2204 Kakao talk on Hate speech dataset
2204 Kakao talk on Hate speech dataset2204 Kakao talk on Hate speech dataset
2204 Kakao talk on Hate speech dataset
 
Rest api standards and best practices
Rest api standards and best practicesRest api standards and best practices
Rest api standards and best practices
 
[NDC17] Kubernetes로 개발서버 간단히 찍어내기
[NDC17] Kubernetes로 개발서버 간단히 찍어내기[NDC17] Kubernetes로 개발서버 간단히 찍어내기
[NDC17] Kubernetes로 개발서버 간단히 찍어내기
 
딥러닝 모델을 이용한 반도체 웨이퍼 가공 불량 타입 분류
딥러닝 모델을 이용한 반도체 웨이퍼 가공 불량 타입 분류딥러닝 모델을 이용한 반도체 웨이퍼 가공 불량 타입 분류
딥러닝 모델을 이용한 반도체 웨이퍼 가공 불량 타입 분류
 
쿠키런 1년, 서버개발 분투기
쿠키런 1년, 서버개발 분투기쿠키런 1년, 서버개발 분투기
쿠키런 1년, 서버개발 분투기
 

Ähnlich wie Escalabilidade e Resiliência de Microservices em Python

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
Bruno Ghisi
 

Ähnlich wie 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