Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

Resiliência 1

Slide 4

Slide 4 text

“ Resiliência é a habilidade de um sistema se recuperar e continuar operando mesmo quando uma falha ocorre. 4

Slide 5

Slide 5 text

Resiliência 5 Disponibilidade Prevenção Recuperação de desastres (DR) Remediação

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

Como medimos? 7 Availability = 𝑈𝑝𝑡𝑖𝑚𝑒 𝑇𝑜𝑡𝑎𝑙 𝑡𝑖𝑚𝑒 Availability!"#$% = 𝐴𝑣𝑎𝑖𝑙&'' × 𝐴𝑣𝑎𝑖𝑙()'* × 𝐴𝑣𝑎𝑖𝑙()'+ Availability!"#$% = 99,9% × 95% × 95% = 90%

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

Padrões de Resiliência 2

Slide 10

Slide 10 text

Timeouts Cenários mais comuns ▸ Operações de banco de dados ▸ Requisições de API’s (privadas ou públicas) 10 D etect

Slide 11

Slide 11 text

Timeouts Solução para... ▸ Evitar esperas desnecessárias ▸ Economizar recursos em busy_wait ▸ Evitar falhas em cascata 11 D etect

Slide 12

Slide 12 text

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/

Slide 13

Slide 13 text

Retry 13 R ecover

Slide 14

Slide 14 text

Retry - Failsafe 14 R ecover

Slide 15

Slide 15 text

Exponential Backoff 15 R ecover Source: https://www.jawahar.tech/blog/handling-transient-faults/

Slide 16

Slide 16 text

Circuit Breaker 16 D etect Source: https://www.jawahar.tech/blog/handling-transient-faults/

Slide 17

Slide 17 text

Fallback 17 M itigate Source: https://blog.codecentric.de/en/2019/06/resilience-design-patterns-retry-fallback-timeout-circuit-breaker/ Fallbacks podem ser técnicos ou funcionais!

Slide 18

Slide 18 text

Circuit Breaker + Fallback 18

Slide 19

Slide 19 text

Rate Limit – Resilience4j 19 Prevent

Slide 20

Slide 20 text

Resilience by Design

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

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

Slide 24

Slide 24 text

Dependências entre tiers Serviço PIX Serviço de Notificação Serviço de Antifraude Classe 1 Classe 2 Classe 2

Slide 25

Slide 25 text

Desacoplamento 25

Slide 26

Slide 26 text

Dependências internas HTTP Serviço PIX Classe 1 Serviço de Notificação Classe 2

Slide 27

Slide 27 text

Serviço PIX Classe 1 Serviço de Notificação Classe 2 Topic Dependências internas Publish-Suscribe

Slide 28

Slide 28 text

Amazon SNS Serviço de Notificação Classe 2 Amazon SQS Queue Topic Serviço PIX Classe 1 Dependências internas Fanout Pattern

Slide 29

Slide 29 text

“ Desacoplamento adiciona complexidade... Use com moderação. 29

Slide 30

Slide 30 text

Usando contingências Cliente Serviço TED Serviço de PIX Serviço de Transferência Serviço DOC

Slide 31

Slide 31 text

Autorização em confiança Cliente Serviço Antifraude Serviço PIX Valor <= 100?

Slide 32

Slide 32 text

Arquitetura Baseada em Células 32

Slide 33

Slide 33 text

Arquitetura baseada em células Camada de roteamento Clientes

Slide 34

Slide 34 text

Arquitetura baseada em células Camada de roteamento Clientes

Slide 35

Slide 35 text

Arquitetura baseada em células Camada de roteamento Clientes Clientes do Sul Clientes do Nordeste

Slide 36

Slide 36 text

Benefícios Reduzir o Impacto Maior Escalabilidade (Horizontal) Deployments graduais

Slide 37

Slide 37 text

Sharding 37

Slide 38

Slide 38 text

Arquitetura tradicional Escopo do Impacto = Todos clientes

Slide 39

Slide 39 text

Sharding Escopo do Impacto = Clientes Shards

Slide 40

Slide 40 text

Shuffle Sharding

Slide 41

Slide 41 text

Shuffle Sharding

Slide 42

Slide 42 text

Shuffle Sharding

Slide 43

Slide 43 text

Shuffle Sharding Escopo do Impacto = Clientes Combinações

Slide 44

Slide 44 text

Desafios de Sharding Roteamento Re-Sharding Custo Operacional

Slide 45

Slide 45 text

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

Slide 46

Slide 46 text

Estamos aqui!

Slide 47

Slide 47 text

47 Outros recursos…

Slide 48

Slide 48 text

48 Obrigado! linkedin.com/in/leoap github.com/lpiedade linkedin.com/in/tiago-reichert github.com/tiagoReichert