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