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.

B1412c9ed55333c1df561f64dfad69d3?s=128

Gustavo Pantuza

April 25, 2017
Tweet

Transcript

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

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

  4. De onde viemos G1 Globo Esporte GShow Techtudo

  5. Para onde vamos G1 Globo Esporte GShow Techtudo

  6. Monolito

  7. Micro-serviços

  8. Resiliência

  9. Resiliência

  10. Resiliência

  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
  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;
  13. Resiliência

  14. Resiliência Capacidade de superar adversidades

  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
  16. Negócio Passo 1

  17. Passo 2 Os conteúdos devem estar sempre atualizadas e nunca

    deixar de ser entregue aos usuários. Negócio
  18. Passo 3 Vários níveis de cache do conteúdo O Expurgo

    é proativo Negócio
  19. Cloud Passo 1 Platform as a service

  20. Cloud Passo 2 Se minha aplicação saturar algum recurso computacional

    eu preciso distribuir a carga
  21. Cloud Passo 3 Elasticidade automatizada CPU: 50% CPU: 95% CPU:

    85% CPU: 50% CPU: 50%
  22. Aplicação Passo 1 Accounts

  23. Passo 2 Se os micro-serviços que eu integro falharem como

    eu garanto minha autenticação Aplicação
  24. Passo 3 Aplicação Quebra de circuito (Circuit breaker) x% de

    falha envia email para garantir autenticação
  25. Clientes Passo 1 APIs

  26. Passo 2 Se o meu serviço ficar indisponível o que

    meus clientes devem fazer Clientes
  27. Passo 3 Clientes devem fazer Retry Backoff Cache Clientes

  28. Sistema Operacional Passo 1 Varnish

  29. Sistema Operacional Passo 2 À medida que o acesso aumentava,

    tivemos paginação em disco e problemas com conexões
  30. Sistema Operacional Passo 1 Tunning de memória Tunning TCP/IP User

    space Kernel space CacheOS
  31. Passo 1 Serviço

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

    serviços atuais?
  33. Passo 3 Serviço • Agregação de APIs • Reforço na

    disponibilidade de seu BFF
  34. Monitoração Passo 1

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

    recuperação de falhas?
  36. Monitoração Passo 3 • Zabbix • Sentry • Páginas de

    status - cachet • Measures (Kibana as a service) Sistemas de feedback
  37. Arquitetura Passo 1 APIs

  38. Passo 2 Como garantir que mudanças possam acontecer sem impactar

    meus clientes? Arquitetura
  39. Passo 3 APIs Tenants G1 GE GS Arquitetura

  40. Algoritmo Passo 1 APIs

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

    tempo de resposta Algoritmo
  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 ...
  43. Rede Passo 1

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

    maximizar a disponibilidade?
  45. Rede Passo 1 Balanceamento de carga

  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
  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
  48. https://talentos.globo.com

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