Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Arquiteturas Resilientes em Java

Leonardo
August 24, 2022

Arquiteturas Resilientes em Java

Leonardo

August 24, 2022
Tweet

More Decks by Leonardo

Other Decks in Technology

Transcript

  1. War Room!? +20 pessoas: ▸ Reportando status ▸ Recuperando o

    sistema ▸ Analisando a causa raiz ▸ Espalhando desinformação Quando fica pior? ▸ Não tem café ▸ Fora do horário ▸ Final de semana
  2. “ Resiliência é a habilidade de um sistema se recuperar

    e continuar operando mesmo quando uma falha ocorre. 4
  3. Disponibilidade em 9's 6 Disponibilidade Indisponibilidade Máxima Anual Tipos de

    aplicação (Exemplos) 99% 3 dias e 15 horas Processamento em lote, ETL’s, transferência de arquivos 99,9% 8 horas e 45 minutos Sistemas internos (Backoffice) 99,99% 52 minutos E-commerce, POS Entrega de vídeos 99,999% 5 minutos Gateways de pagamento, equipamentos de telefonia
  4. Como medimos? 7 Availability = 𝑈𝑝𝑡𝑖𝑚𝑒 𝑈𝑝𝑡𝑖𝑚𝑒 + (𝐷𝑜𝑤𝑛𝑡𝑖𝑚𝑒 −

    𝑀𝑎𝑖𝑛𝑡𝑒𝑛𝑎𝑛𝑐𝑒 𝑊𝑖𝑛𝑑𝑜𝑤) Availability!"#$% = 𝐴𝑣𝑎𝑖𝑙&'' × 𝐴𝑣𝑎𝑖𝑙()'* × 𝐴𝑣𝑎𝑖𝑙()'+ Availability!"#$% = 99,9% × 95% × 95% = 90%
  5. Além dos 9’s Outras métricas ▸ Tempo de resposta (latência

    esperada) ▸ Taxa de erros ▸ Qualquer métrica que esteja no contrato! 8
  6. Timeouts Cenários mais comuns ▸ Operações de banco de dados

    ▸ Requisições de API’s (privadas ou públicas) 10 D etect
  7. Retry 12 Cenários mais comuns ▸ Falhas de redes ▸

    Tratamento de exceções R ecover Source: https://blog.codecentric.de/en/2019/06/resilience-design-patterns-retry-fallback-timeout-circuit-breaker/
  8. Sistemas dentro de um banco Serviço de Extrato Serviço PIX

    Serviço de Notificação Serviço de Análise de Fraude Serviço de Empréstimo Serviço de Seguro Serviço de Login Serviço de Agendamento de Pagamento Serviço de Previdência Privada Serviço de backoffice
  9. Pensando em tiers 24 Classe 1 Classe 2 Classe 3

    Classe 4 Aplicações de pagamento Sistemas de riscos Site público Intranet Aplicações de compensação Sistemas regulatórios Ferramentas internas Plataformas de backoffice Aplicações de liquidação E-mail e comunicação ERP Armazenamento (backup) Plataformas de negociação na bolsa CRM Sites internos
  10. Classificando em tiers Serviço de Extrato Serviço PIX Serviço de

    Notificação Serviço de Antifraude Serviço de Empréstimo Serviço de Seguro Serviço de Login Serviço de Agendamento de Pagamento Serviço de Wiki Interno Classe 1 Classe 2 Classe 2 Classe 1 Classe 3 Classe 2 Serviço de backoffice Classe 4 Classe 3 Classe 2 Classe 4
  11. Serviços e suas dependências Serviço de Extrato Serviço PIX Serviço

    de Notificação Serviço de Antifraude Serviço de Empréstimo Serviço de Seguro Serviço de Login Serviço de Agendamento de Pagamento Classe 1 Classe 2 Classe 2 Classe 1 Classe 3 Classe 2 Classe 3 Classe 2 Serviço de Wiki Interno Classe 4 Serviço de backoffice Classe 4
  12. Dependências internas Fan-out Pattern Amazon SNS Serviço PIX Classe 1

    Serviço de Notificação Classe 2 Serviço de Antifraude Classe 2 Amazon SQS Amazon SQS Queue Queue Topic
  13. Considerações Finais Desenvolva pensando em: ▸ Quais falhas podem ocorrer?

    ▸ Como devo testar esse componente? ▸ Qual a experiência do usuário quando um componente falha? ▸ Se a falha ocorrer, deve ter um alerta? Para quem? Como alertar? ▸ Como eliminar atividades manuais na operação dos sistemas? 42