Slides

Propaganda
Resiliência em microservices
cache distribuído, feedback e tuning na Globo.com
Agenda
Contexto
Introdução
Casos de uso
Perguntas
De onde viemos
G1
Globo
Esporte
GShow
Techtudo
Para onde vamos
G1
Globo
Esporte
GShow
Techtudo
Monolito
Micro-serviços
Resiliência
Resiliência
Resiliência
● Não é uma flag que ativa a
resiliência de sua aplicação
Resiliência
● Não é um único ponto de controle
● Nada é 100% resiliente
● Não é determinístico
Substantivo feminino
1.
Propriedade que alguns corpos apresentam de
retornar à forma original após terem sido
submetidos a uma deformação elástica;
2.
Capacidade de se recobrar facilmente ou se
adaptar à má sorte ou às mudanças;
Resiliência
Resiliência
Resiliência
Capacidade de superar adversidades
Promovendo resiliência
Passo 3
Passo 1
Identifique o perfil da
aplicação
Passo 2
Ordene os principais
pontos de falha
Proponha soluções que
promovam a resiliência
Passo 1
Negócio
Passo 2
Negócio
Os conteúdos devem estar sempre
atualizadas e nunca deixar de ser
entregue aos usuários.
Passo 3
Vários níveis de cache do conteúdo
Negócio
O Expurgo é proativo
Passo 1
Platform as a service
Cloud
Passo 2
Cloud
Se minha aplicação saturar algum
recurso computacional eu preciso
distribuir a carga
Passo 3
Elasticidade automatizada
CPU: 50%
Cloud
CPU: 95%
CPU: 85%
CPU: 50%
CPU: 50%
Passo 1
Aplicação
Accounts
Passo 2
Aplicação
Se os micro-serviços que eu integro
falharem como eu garanto minha
autenticação
Passo 3
Quebra de circuito (Circuit breaker)
Aplicação
x% de falha envia
email para
garantir
autenticação
Passo 1
Clientes
APIs
Passo 2
Clientes
Se o meu serviço ficar indisponível
o que meus clientes devem fazer
Passo 3
Clientes devem fazer
Clientes
Retry
Backoff
Cache
Passo 1
Sistema
Operacional
Varnish
Passo 2
Sistema
Operacional
À medida que o acesso aumentava,
tivemos paginação em disco e
problemas com conexões
Passo 1
CacheOS
User space
Sistema
Operacional
Kernel space
Tunning de memória
Tunning TCP/IP
Passo 1
Serviço
Passo 2
Serviço
Como adicionar novas aplicações
sem alterar meus serviços atuais?
Passo 3
●
●
Serviço
Agregação de APIs
Reforço na disponibilidade de seu BFF
Passo 1
Monitoração
Passo 2
Monitoração
Como maximizar o tempo de
detecção e recuperação de falhas?
Passo 3
Sistemas de feedback
●
●
●
●
Monitoração
Zabbix
Sentry
Páginas de status - cachet
Measures (Kibana as a service)
Passo 1
Arquitetura
APIs
Passo 2
Arquitetura
Como garantir que mudanças
possam acontecer sem impactar
meus clientes?
Passo 3
Tenants
Arquitetura
APIs
G1
GE
GS
Passo 1
Algoritmo
APIs
Passo 2
Algoritmo
Como contabilizar votos de maneira
a minimizar o tempo de resposta
Passo 3
Buffer em memória
...
1000 votos ou 10 segundos
Algoritmo
●
Baixo processamento
●
16 mil votos simultâneos (BBB17)
●
141 milhões de votos totais (BBB17)
●
Kernel time_wait de 60s para 15s
Passo 1
Rede
Passo 2
Rede
Como distribuir um micro-serviço de
modo a maximizar a disponibilidade?
Passo 1
Balanceamento de carga
Rede
Resumindo
Promover uma aplicação resiliente é uma tarefa evolutiva
Cache
Negócio
Tunning
Circuit breaker
Cloud
Aplicação
Clientes
SO
Serviço
Feedback
Monitoração
Arquitetura
Buffer
Algoritmo
Rede
Tenants
Elasticidade
Retry
BFF
Load balancer
Resumindo
Promover uma aplicação resiliente é uma tarefa evolutiva
Passo 3
Passo 1
Identifique o perfil da
aplicação
Passo 2
Ordene os principais
pontos de falha
Proponha soluções que
promovam a resiliência
https://talentos.globo.com
Dúvidas?
https://blog.pantuza.com
https://github.com/pantuza
https://twitter.com/gpantuza
Download