$30 off During Our Annual Pro Sale. View Details »

Resiliência em Micro-serviços

Resiliência em Micro-serviços

Essa palestra visa apresentar as soluções utilizadas pela Globo.com ao distribuir suas aplicações em micro-serviços. Serão apresentados como nossa estrutura de cache distribuída garante resiliência mesmo quando algum serviço falha. Será apresentado como uma arquitetura baseada em feedback torna os micro-serviços mais resilientes no longo prazo. Será mostrado como a definição de contratos garante estabilidade nas comunicações entre micro-serviços. Além disso, será mostrado alguns tunnings de arquitetura de redes que ajudam a garantir a disponibilidade e segurança dos micro-serviços.

Gustavo Pantuza

April 25, 2017
Tweet

More Decks by Gustavo Pantuza

Other Decks in Programming

Transcript

  1. Resiliência em microservices
    cache distribuído, feedback e tuning na Globo.com

    View Slide

  2. View Slide

  3. Agenda
    Contexto Introdução Casos de uso Perguntas

    View Slide

  4. De onde viemos
    G1
    Globo
    Esporte GShow Techtudo

    View Slide

  5. Para onde vamos
    G1
    Globo
    Esporte GShow Techtudo

    View Slide

  6. Monolito

    View Slide

  7. Micro-serviços

    View Slide

  8. Resiliência

    View Slide

  9. Resiliência

    View Slide

  10. Resiliência

    View Slide

  11. 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

    View Slide

  12. 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;

    View Slide

  13. Resiliência

    View Slide

  14. Resiliência Capacidade de superar adversidades

    View Slide

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

    View Slide

  16. Negócio
    Passo 1

    View Slide

  17. Passo 2
    Os conteúdos devem estar sempre
    atualizadas e nunca deixar de ser
    entregue aos usuários.
    Negócio

    View Slide

  18. Passo 3
    Vários níveis de cache do conteúdo
    O Expurgo é proativo
    Negócio

    View Slide

  19. Cloud
    Passo 1
    Platform as a service

    View Slide

  20. Cloud
    Passo 2
    Se minha aplicação saturar algum
    recurso computacional eu preciso
    distribuir a carga

    View Slide

  21. Cloud
    Passo 3
    Elasticidade automatizada
    CPU: 50%
    CPU: 95%
    CPU: 85%
    CPU: 50%
    CPU: 50%

    View Slide

  22. Aplicação
    Passo 1
    Accounts

    View Slide

  23. Passo 2
    Se os micro-serviços que eu integro
    falharem como eu garanto minha
    autenticação
    Aplicação

    View Slide

  24. Passo 3
    Aplicação
    Quebra de circuito (Circuit breaker)
    x% de falha envia
    email para
    garantir
    autenticação

    View Slide

  25. Clientes
    Passo 1
    APIs

    View Slide

  26. Passo 2
    Se o meu serviço ficar indisponível
    o que meus clientes devem fazer
    Clientes

    View Slide

  27. Passo 3
    Clientes devem fazer
    Retry Backoff Cache
    Clientes

    View Slide

  28. Sistema
    Operacional
    Passo 1
    Varnish

    View Slide

  29. Sistema
    Operacional
    Passo 2
    À medida que o acesso aumentava,
    tivemos paginação em disco e
    problemas com conexões

    View Slide

  30. Sistema
    Operacional
    Passo 1
    Tunning de memória Tunning TCP/IP
    User space
    Kernel space
    CacheOS

    View Slide

  31. Passo 1
    Serviço

    View Slide

  32. Passo 2
    Serviço Como adicionar novas aplicações
    sem alterar meus serviços atuais?

    View Slide

  33. Passo 3
    Serviço
    ● Agregação de APIs
    ● Reforço na disponibilidade de seu BFF

    View Slide

  34. Monitoração
    Passo 1

    View Slide

  35. Monitoração
    Passo 2
    Como maximizar o tempo de
    detecção e recuperação de falhas?

    View Slide

  36. Monitoração
    Passo 3
    ● Zabbix
    ● Sentry
    ● Páginas de status - cachet
    ● Measures (Kibana as a service)
    Sistemas de feedback

    View Slide

  37. Arquitetura
    Passo 1
    APIs

    View Slide

  38. Passo 2
    Como garantir que mudanças
    possam acontecer sem impactar
    meus clientes?
    Arquitetura

    View Slide

  39. Passo 3
    APIs
    Tenants
    G1 GE GS
    Arquitetura

    View Slide

  40. Algoritmo
    Passo 1
    APIs

    View Slide

  41. Passo 2
    Como contabilizar votos de maneira
    a minimizar o tempo de resposta
    Algoritmo

    View Slide

  42. 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
    ...

    View Slide

  43. Rede
    Passo 1

    View Slide

  44. Rede
    Passo 2
    Como distribuir um micro-serviço de
    modo a maximizar a disponibilidade?

    View Slide

  45. Rede
    Passo 1
    Balanceamento de carga

    View Slide

  46. 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

    View Slide

  47. Passo 1
    Identifique o perfil da
    aplicação
    Passo 2
    Ordene os principais
    pontos de falha
    Passo 3
    Proponha soluções que
    promovam a resiliência
    Resumindo
    Promover uma aplicação resiliente é uma tarefa evolutiva

    View Slide

  48. https://talentos.globo.com

    View Slide

  49. https://blog.pantuza.com
    https://github.com/pantuza
    https://twitter.com/gpantuza
    Dúvidas?

    View Slide