Features para Resiliência • Simular um sistema caotico • Situação de Crise • Diversas possibilidade de Falha ◦ Sistemica ◦ Capacity ◦ Zonas de Disponibilidade Proposta
• Elastic Kubernetes Service • Três zonas de disponibilidade • Istio por Default • Kiali / Grafana • K6 Load Test • Chaos Mesh • Gin-chaos-monkey Premissas
Kubernetes • Gerenciar a comunicação entre serviços distribuídos • Recursos avançados para controle • Gerenciamento de tráfego e balanceamento de carga • Definição de políticas de rede Istio - Service Mesh
5xx 5xx Retentativas em caso da upstream retornar casos de disconnect/reset/read timeout diretamente da conexão TCP reset gateway-error Retentativa em caso de falha de conexão com o upstrem. Timeout. connect-failure Nova tentativa em caso do upstream redefinir a conexão com REFUSED_UPSTREAM refused-stream Similar aos 5xx porém só haverá retentativas em casos de 502, 503 ou 504
nos cabeçalhos de resposta for "recurso esgotado" resource-exhausted Nova tentativa se o código de status gRPC nos cabeçalhos de resposta for "cancelled" cancelled unavailable Nova tentativa se o código de status gRPC nos cabeçalhos de resposta for "deadline excedida" deadline-exceeded Nova tentativa se o código de status gRPC nos cabeçalhos de resposta for "indisponível"
Assumir a responsabilidade do serviço principal • Direcionar Tráfego para Fallbacks • Garantir o serviço solicitado • Serviços Internos e Externos • Necessário que todos os fluxos tenham o mesmo contrato Failover
de Retry Excedidas URX UR Falha de conexão com a upstream UF Conexão Abortada por um Fault Injection FI Conexão finalizada com a upstream com um 503 Upstream Timeout UT Upstream Overflow Acionamento do Circuit Breaker UO Sem upstreams disponíveis UH
ou único de resiliência • Parte da composição de resiliência, não a solução definitiva para ela • Optar por retentativas pragmáticas e que façam parte da lógica do negócio • Invista em Idempotência Considerações