Você está na página 1de 47

Gustavo Pantuza

Agenda

Contexto Introdução Casos de uso


De onde viemos

Globo
G1 Esporte GShow Techtudo
Para onde vamos

Globo
G1 Esporte GShow Techtudo
Monolito
Micro-serviços
Resiliência
● Não é uma flag que ativa a
resiliência de sua aplicação

● Não é um único ponto de


controle
Resiliência
● Nada é 100% resiliente

● Não é determinístico
Substantivo feminino

1. Propriedade que alguns corpos apresentam de


retornar à forma original após terem sido
Resiliência submetidos a uma deformação elástica;

2. Capacidade de se recobrar facilmente ou se


adaptar à má sorte ou às mudanças;
Resiliência
Capacidade de superar
Resiliência
adversidades
Promovendo resiliência

Passo 3
Passo 2 Proponha soluções que
Passo 1 Ordene os principais
promovam a resiliência
Identifique o perfil da pontos de falha
aplicação
Passo 1

Negócio
Passo 2

Os conteúdos devem estar sempre


Negócio 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

Se minha aplicação saturar algum


Cloud recurso computacional eu preciso
distribuir a carga
Passo 3

Elasticidade automatizada

CPU: 50%

CPU: 95%
Cloud
CPU: 85%

CPU: 50%

CPU: 50%
Passo 1

Aplicação
Accounts
Passo 2

Se os micro-serviços que eu integro


Aplicação 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

Se o meu serviço ficar indisponível


Clientes o que meus clientes devem fazer
Passo 3

Clientes devem fazer

Clientes

Retry Backoff Cache


Passo 1

Sistema
Operacional

Varnish
Passo 2

Sistema À medida que o acesso aumentava,


tivemos paginação em disco e
Operacional 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

Como adicionar novas aplicações


Serviço sem alterar meus serviços atuais?
Passo 3

● Agregação de APIs
● Reforço na disponibilidade de seu BFF

Serviço
Passo 1

Monitoração
Passo 2

Como minimizar o tempo de


Monitoração detecção e recuperação de falhas?
Passo 3
Sistemas de feedback

● Zabbix
● Sentry
● Páginas de status - cachet
● Graylog

Monitoração
Passo 1

Arquitetura
APIs
Passo 2

Como garantir que mudanças


Arquitetura possam acontecer sem impactar
meus clientes?
Passo 3

Tenants

Arquitetura
APIs

G1 GE GS
Passo 1

Algoritmo APIs
Passo 2

Como contabilizar votos de maneira


Algoritmo 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

Como distribuir um micro-serviço de


Rede modo a maximizar a disponibilidade?
Passo 1

Balanceamento de carga

Rede
Resumindo
Promover uma aplicação resiliente é uma tarefa evolutiva

Cache Circuit breaker Tunning Feedback Buffer

Negócio Cloud Aplicação Clientes SO Serviço Monitoração Arquitetura Algoritmo Rede

Tenants
Elasticidade Retry BFF
Load balancer
Promovendo resiliência

Passo 3
Passo 2 Proponha soluções que
Passo 1 Ordene os principais
promovam a resiliência
Identifique o perfil da pontos de falha
aplicação
https://talentos.globo.com
Dúvidas?

https://blog.pantuza.com
https://github.com/pantuza
https://twitter.com/gpantuza

Você também pode gostar