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

Arquitetura Resilientes em Java - Navegando por...

Arquitetura Resilientes em Java - Navegando por mares revoltos (2023)

Leonardo

June 16, 2023
Tweet

More Decks by Leonardo

Other Decks in Technology

Transcript

  1. Navegando com a sua aplicação de forma resiliente por mares

    revoltos TDC Innovation 2023 Leonardo Piedade Solutions Architect, AWS Tiago Reichert Solutions Architect, AWS
  2. 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
  3. “ Resiliência é a habilidade de um sistema se recuperar

    e continuar operando mesmo quando uma falha ocorre. 4
  4. 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
  5. Como medimos? 7 Availability = 𝑈𝑝𝑡𝑖𝑚𝑒 𝑇𝑜𝑡𝑎𝑙 𝑡𝑖𝑚𝑒 Availability!"#$% =

    𝐴𝑣𝑎𝑖𝑙&'' × 𝐴𝑣𝑎𝑖𝑙()'* × 𝐴𝑣𝑎𝑖𝑙()'+ Availability!"#$% = 99,9% × 95% × 95% = 90%
  6. 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
  7. Timeouts Cenários mais comuns ▸ Operações de banco de dados

    ▸ Requisições de API’s (privadas ou públicas) 10 D etect
  8. 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/
  9. 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
  10. Pensando em tiers 22 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
  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. Serviço PIX Classe 1 Serviço de Notificação Classe 2 Topic

    Dependências internas Publish-Suscribe
  13. Amazon SNS Serviço de Notificação Classe 2 Amazon SQS Queue

    Topic Serviço PIX Classe 1 Dependências internas Fanout Pattern
  14. 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? 45