SlideShare uma empresa Scribd logo
Sobrevivendo
ao Caos
Com Istio Service Mesh
Matheus Fidelis
Site Reliability Engineer
@fidelissauro
linktr.ee/fidelissauro
PROPOSTA
O que esperar desse papo?
Istio Não é
Solução pra
código zoado
LET’S GET STARTED
● Artigo
● Istio Service Mesh
● Features para Resiliência
● Simular um sistema caotico
● Situação de Crise
● Diversas possibilidade de Falha
○ Sistemica
○ Capacity
○ Zonas de Disponibilidade
Proposta
Workload
Hipotético
● Malha de 4 micro serviços Síncronos
● Comunicação HTTP Síncrona
● Chamadas Altamente Dependentes
● Sem resiliência pragmática
LET’S GET STARTED
● Sobreviver
● Empresa / Workload Fictício
● Elastic Kubernetes Service
● Três zonas de
disponibilidade
● Istio por Default
● Kiali / Grafana
● K6 Load Test
● Chaos Mesh
● Gin-chaos-monkey
Premissas
LET’S GET STARTED
● Memory Assault
● CPU Assault
● Latency Assault (1000ms ~ 5000ms)
● Exception Assault - Injeção de 5xx
● AppKillerAssault - Runtime
Middleware de Chaos
Chaos Mesh
● Pod Failure
● Pod Kill
Istio Service Mesh
LET’S GET STARTED
● Pattern de Networking
● Arquitetura Distribuída
● Adicionar Funcionalidades a Rede
● Comportamentos
● Gestão de Tráfego
● Segurança
● Observabilidade
● Resiliência
Service Mesh
Tratar Networking
Como Software
LET’S GET STARTED
● Service Mesh de código aberto
● 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
Envoy Proxy
LET’S GET STARTED
● Proxy Reverso
● Intermediário Cliente / Servidor
● Funções de manipulação de Layer 4 e
7
● Patterns de Cloud Native
● Alta Disponibilidade
● Observabilidade / Métricas
● Segurança
● API's abertas
● HTTP/1.x, HTTP/2, gRPC, TCP
Envoy
LET’S GET STARTED
● Sidecar
● Container Adicional (2/2)
● Integração com Istio Discovery
● Integração com CRD's do Istio
● Configuração Dinâmica
● Alterações sem Downtime
● Inbound / Outbound
● Métricas de utilização
● Proxy de Controle de Comunicação
Envoy / Istio / Sidecar
ENVOY
APP
POD
MECANISMOS DE
RESILIÊNCIA
LET’S GET STARTED
● Retry Automático de Requests
● Policy de Falhas Específicas
● HTTP
● Conexões
● gRPC
● Timeout
Retentativas
LET’S GET STARTED
● Workload preparado
● Idempotência
● Duplicidade
● Auto-DoS
● Não deve ser tratado como
mecanismo prioritário da
solução
Retentativas - Cuidado
retry_on
Nova tentativa quando o
upstream retornar erros
da familia 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
Retry_on gRPC
Nova tentativa se o código
de status gRPC 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"
LET’S GET STARTED
● Lidar com falhas
● Limitar o Tráfego
● Proteção de Capacity
● Limitador de Consumo
● Detecção de Falhas
● Evita falhas em cascata
● Isola recursos problematicos
● Baseado em métricas
● Detecção de Outliers
● Checagem Temporária
Circuit Breaking
LET’S GET STARTED
Circuit Breaking - Pool Ejection
LET’S GET STARTED
Circuit Breaking - Pool Ejection
LET’S GET STARTED
Circuit Breaking
LET’S GET STARTED
● ServiceEntry
● Capacidade de Roteamento
● 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
LET’S GET STARTED
Failover
Response Flags
Mais úteis
Conexão Finalizada pelo
Cliente
DC
Tentativas 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
…
Considerações
Importantes
LET’S GET STARTED
● Evitar o uso como mecanismo
primário 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
@fidelissauro
linktr.ee/fidelissauro
Obrigado!

Mais conteúdo relacionado

Semelhante a Sobrevivendo a Cenários de Caos com Istio

Mulesoft Meetup Latam Summit Brazil
Mulesoft Meetup Latam Summit BrazilMulesoft Meetup Latam Summit Brazil
Mulesoft Meetup Latam Summit Brazil
Guilherme Pereira Silva
 
Plone na nuvem
Plone na nuvemPlone na nuvem
Plone na nuvem
Fabiano Weimar
 
Async/Await Pattern in C#
Async/Await Pattern in C#Async/Await Pattern in C#
Async/Await Pattern in C#
Leandro Silva
 
Fazendo uma manada de elefantes passar por baixo da porta
Fazendo uma manada de elefantes passar por baixo da portaFazendo uma manada de elefantes passar por baixo da porta
Fazendo uma manada de elefantes passar por baixo da porta
Fabio Telles Rodriguez
 
QCon SP 2015 - Advogados do diabo: como a arquitetura emergente de sua aplica...
QCon SP 2015 - Advogados do diabo: como a arquitetura emergente de sua aplica...QCon SP 2015 - Advogados do diabo: como a arquitetura emergente de sua aplica...
QCon SP 2015 - Advogados do diabo: como a arquitetura emergente de sua aplica...
Gleicon Moraes
 
Tuning Apache/MySQL/PHP para desenvolvedores
Tuning Apache/MySQL/PHP para desenvolvedoresTuning Apache/MySQL/PHP para desenvolvedores
Tuning Apache/MySQL/PHP para desenvolvedores
Douglas V. Pasqua
 
Avaliando o Apache Cassandra como cache distribuido no SPC Brasil - NoSQLBR
Avaliando o Apache Cassandra como cache distribuido no SPC Brasil - NoSQLBRAvaliando o Apache Cassandra como cache distribuido no SPC Brasil - NoSQLBR
Avaliando o Apache Cassandra como cache distribuido no SPC Brasil - NoSQLBR
Julio Viegas
 
burlando um WAF
burlando um WAFburlando um WAF
burlando um WAF
Antonio Costa aka Cooler_
 
HA em PostgreSQL: O Elefante disponível para além do infinito
HA em PostgreSQL: O Elefante disponível para além do infinitoHA em PostgreSQL: O Elefante disponível para além do infinito
HA em PostgreSQL: O Elefante disponível para além do infinito
elliando dias
 
Clean code part 2
Clean code   part 2Clean code   part 2
Clean code part 2
clauvane1708
 
Aumente a performance de seu site de maneira disciplinada
Aumente a performance de seu site de maneira disciplinadaAumente a performance de seu site de maneira disciplinada
Aumente a performance de seu site de maneira disciplinada
Henrique Lima
 
Cache, Concorrência e Sincronização.
Cache, Concorrência e Sincronização.Cache, Concorrência e Sincronização.
Cache, Concorrência e Sincronização.
Thiago Rondon
 
Mais performance com o MySQL 5.6
Mais performance com o MySQL 5.6Mais performance com o MySQL 5.6
Mais performance com o MySQL 5.6
MySQL Brasil
 
Collectd
CollectdCollectd
Collectd
Diogo Biazus
 
Net - Threads
Net - ThreadsNet - Threads
Net - Threads
Lucas Teles
 
PHP Jedi - Boas Práticas e Alta Performance
PHP Jedi - Boas Práticas e Alta PerformancePHP Jedi - Boas Práticas e Alta Performance
PHP Jedi - Boas Práticas e Alta Performance
Felipe Ribeiro
 
Tunning PostgreSQL em modo OGRO - 13º Latinoware
Tunning PostgreSQL em modo OGRO - 13º LatinowareTunning PostgreSQL em modo OGRO - 13º Latinoware
Tunning PostgreSQL em modo OGRO - 13º Latinoware
Gerdan Santos
 
Dicas para Turbinar o servidor de Aplicações JBoss 7
Dicas para Turbinar o servidor de Aplicações JBoss 7Dicas para Turbinar o servidor de Aplicações JBoss 7
Dicas para Turbinar o servidor de Aplicações JBoss 7
Claudio Miranda
 
Monitoramento contínuo em dia de pico de consumo ajuda a determinar o número ...
Monitoramento contínuo em dia de pico de consumo ajuda a determinar o número ...Monitoramento contínuo em dia de pico de consumo ajuda a determinar o número ...
Monitoramento contínuo em dia de pico de consumo ajuda a determinar o número ...
Joao Galdino Mello de Souza
 
TDC2016SP - Trilha Quebrando um monolítico J2EE, uma história de trás das tri...
TDC2016SP - Trilha Quebrando um monolítico J2EE, uma história de trás das tri...TDC2016SP - Trilha Quebrando um monolítico J2EE, uma história de trás das tri...
TDC2016SP - Trilha Quebrando um monolítico J2EE, uma história de trás das tri...
tdc-globalcode
 

Semelhante a Sobrevivendo a Cenários de Caos com Istio (20)

Mulesoft Meetup Latam Summit Brazil
Mulesoft Meetup Latam Summit BrazilMulesoft Meetup Latam Summit Brazil
Mulesoft Meetup Latam Summit Brazil
 
Plone na nuvem
Plone na nuvemPlone na nuvem
Plone na nuvem
 
Async/Await Pattern in C#
Async/Await Pattern in C#Async/Await Pattern in C#
Async/Await Pattern in C#
 
Fazendo uma manada de elefantes passar por baixo da porta
Fazendo uma manada de elefantes passar por baixo da portaFazendo uma manada de elefantes passar por baixo da porta
Fazendo uma manada de elefantes passar por baixo da porta
 
QCon SP 2015 - Advogados do diabo: como a arquitetura emergente de sua aplica...
QCon SP 2015 - Advogados do diabo: como a arquitetura emergente de sua aplica...QCon SP 2015 - Advogados do diabo: como a arquitetura emergente de sua aplica...
QCon SP 2015 - Advogados do diabo: como a arquitetura emergente de sua aplica...
 
Tuning Apache/MySQL/PHP para desenvolvedores
Tuning Apache/MySQL/PHP para desenvolvedoresTuning Apache/MySQL/PHP para desenvolvedores
Tuning Apache/MySQL/PHP para desenvolvedores
 
Avaliando o Apache Cassandra como cache distribuido no SPC Brasil - NoSQLBR
Avaliando o Apache Cassandra como cache distribuido no SPC Brasil - NoSQLBRAvaliando o Apache Cassandra como cache distribuido no SPC Brasil - NoSQLBR
Avaliando o Apache Cassandra como cache distribuido no SPC Brasil - NoSQLBR
 
burlando um WAF
burlando um WAFburlando um WAF
burlando um WAF
 
HA em PostgreSQL: O Elefante disponível para além do infinito
HA em PostgreSQL: O Elefante disponível para além do infinitoHA em PostgreSQL: O Elefante disponível para além do infinito
HA em PostgreSQL: O Elefante disponível para além do infinito
 
Clean code part 2
Clean code   part 2Clean code   part 2
Clean code part 2
 
Aumente a performance de seu site de maneira disciplinada
Aumente a performance de seu site de maneira disciplinadaAumente a performance de seu site de maneira disciplinada
Aumente a performance de seu site de maneira disciplinada
 
Cache, Concorrência e Sincronização.
Cache, Concorrência e Sincronização.Cache, Concorrência e Sincronização.
Cache, Concorrência e Sincronização.
 
Mais performance com o MySQL 5.6
Mais performance com o MySQL 5.6Mais performance com o MySQL 5.6
Mais performance com o MySQL 5.6
 
Collectd
CollectdCollectd
Collectd
 
Net - Threads
Net - ThreadsNet - Threads
Net - Threads
 
PHP Jedi - Boas Práticas e Alta Performance
PHP Jedi - Boas Práticas e Alta PerformancePHP Jedi - Boas Práticas e Alta Performance
PHP Jedi - Boas Práticas e Alta Performance
 
Tunning PostgreSQL em modo OGRO - 13º Latinoware
Tunning PostgreSQL em modo OGRO - 13º LatinowareTunning PostgreSQL em modo OGRO - 13º Latinoware
Tunning PostgreSQL em modo OGRO - 13º Latinoware
 
Dicas para Turbinar o servidor de Aplicações JBoss 7
Dicas para Turbinar o servidor de Aplicações JBoss 7Dicas para Turbinar o servidor de Aplicações JBoss 7
Dicas para Turbinar o servidor de Aplicações JBoss 7
 
Monitoramento contínuo em dia de pico de consumo ajuda a determinar o número ...
Monitoramento contínuo em dia de pico de consumo ajuda a determinar o número ...Monitoramento contínuo em dia de pico de consumo ajuda a determinar o número ...
Monitoramento contínuo em dia de pico de consumo ajuda a determinar o número ...
 
TDC2016SP - Trilha Quebrando um monolítico J2EE, uma história de trás das tri...
TDC2016SP - Trilha Quebrando um monolítico J2EE, uma história de trás das tri...TDC2016SP - Trilha Quebrando um monolítico J2EE, uma história de trás das tri...
TDC2016SP - Trilha Quebrando um monolítico J2EE, uma história de trás das tri...
 

Último

TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdfTOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
Momento da Informática
 
Logica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptxLogica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptx
Momento da Informática
 
DESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdf
DESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdfDESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdf
DESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdf
Momento da Informática
 
Certificado Jornada Python Da Hashtag.pdf
Certificado Jornada Python Da Hashtag.pdfCertificado Jornada Python Da Hashtag.pdf
Certificado Jornada Python Da Hashtag.pdf
joaovmp3
 
Manual-de-Credenciamento ANATER 2023.pdf
Manual-de-Credenciamento ANATER 2023.pdfManual-de-Credenciamento ANATER 2023.pdf
Manual-de-Credenciamento ANATER 2023.pdf
WELITONNOGUEIRA3
 
História da Rádio- 1936-1970 século XIX .2.pptx
História da Rádio- 1936-1970 século XIX   .2.pptxHistória da Rádio- 1936-1970 século XIX   .2.pptx
História da Rádio- 1936-1970 século XIX .2.pptx
TomasSousa7
 

Último (6)

TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdfTOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
 
Logica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptxLogica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptx
 
DESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdf
DESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdfDESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdf
DESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdf
 
Certificado Jornada Python Da Hashtag.pdf
Certificado Jornada Python Da Hashtag.pdfCertificado Jornada Python Da Hashtag.pdf
Certificado Jornada Python Da Hashtag.pdf
 
Manual-de-Credenciamento ANATER 2023.pdf
Manual-de-Credenciamento ANATER 2023.pdfManual-de-Credenciamento ANATER 2023.pdf
Manual-de-Credenciamento ANATER 2023.pdf
 
História da Rádio- 1936-1970 século XIX .2.pptx
História da Rádio- 1936-1970 século XIX   .2.pptxHistória da Rádio- 1936-1970 século XIX   .2.pptx
História da Rádio- 1936-1970 século XIX .2.pptx
 

Sobrevivendo a Cenários de Caos com Istio

  • 2. Matheus Fidelis Site Reliability Engineer @fidelissauro linktr.ee/fidelissauro
  • 4.
  • 5.
  • 6. Istio Não é Solução pra código zoado
  • 7. LET’S GET STARTED ● Artigo ● Istio Service Mesh ● Features para Resiliência ● Simular um sistema caotico ● Situação de Crise ● Diversas possibilidade de Falha ○ Sistemica ○ Capacity ○ Zonas de Disponibilidade Proposta
  • 8. Workload Hipotético ● Malha de 4 micro serviços Síncronos ● Comunicação HTTP Síncrona ● Chamadas Altamente Dependentes ● Sem resiliência pragmática
  • 9. LET’S GET STARTED ● Sobreviver ● Empresa / Workload Fictício ● Elastic Kubernetes Service ● Três zonas de disponibilidade ● Istio por Default ● Kiali / Grafana ● K6 Load Test ● Chaos Mesh ● Gin-chaos-monkey Premissas
  • 10. LET’S GET STARTED ● Memory Assault ● CPU Assault ● Latency Assault (1000ms ~ 5000ms) ● Exception Assault - Injeção de 5xx ● AppKillerAssault - Runtime Middleware de Chaos Chaos Mesh ● Pod Failure ● Pod Kill
  • 12. LET’S GET STARTED ● Pattern de Networking ● Arquitetura Distribuída ● Adicionar Funcionalidades a Rede ● Comportamentos ● Gestão de Tráfego ● Segurança ● Observabilidade ● Resiliência Service Mesh
  • 14. LET’S GET STARTED ● Service Mesh de código aberto ● 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
  • 16. LET’S GET STARTED ● Proxy Reverso ● Intermediário Cliente / Servidor ● Funções de manipulação de Layer 4 e 7 ● Patterns de Cloud Native ● Alta Disponibilidade ● Observabilidade / Métricas ● Segurança ● API's abertas ● HTTP/1.x, HTTP/2, gRPC, TCP Envoy
  • 17. LET’S GET STARTED ● Sidecar ● Container Adicional (2/2) ● Integração com Istio Discovery ● Integração com CRD's do Istio ● Configuração Dinâmica ● Alterações sem Downtime ● Inbound / Outbound ● Métricas de utilização ● Proxy de Controle de Comunicação Envoy / Istio / Sidecar
  • 18.
  • 19.
  • 22. LET’S GET STARTED ● Retry Automático de Requests ● Policy de Falhas Específicas ● HTTP ● Conexões ● gRPC ● Timeout Retentativas
  • 23. LET’S GET STARTED ● Workload preparado ● Idempotência ● Duplicidade ● Auto-DoS ● Não deve ser tratado como mecanismo prioritário da solução Retentativas - Cuidado
  • 24. retry_on Nova tentativa quando o upstream retornar erros da familia 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
  • 25. Retry_on gRPC Nova tentativa se o código de status gRPC 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"
  • 26. LET’S GET STARTED ● Lidar com falhas ● Limitar o Tráfego ● Proteção de Capacity ● Limitador de Consumo ● Detecção de Falhas ● Evita falhas em cascata ● Isola recursos problematicos ● Baseado em métricas ● Detecção de Outliers ● Checagem Temporária Circuit Breaking
  • 27. LET’S GET STARTED Circuit Breaking - Pool Ejection
  • 28. LET’S GET STARTED Circuit Breaking - Pool Ejection
  • 30. LET’S GET STARTED ● ServiceEntry ● Capacidade de Roteamento ● 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
  • 32. Response Flags Mais úteis Conexão Finalizada pelo Cliente DC Tentativas 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
  • 33.
  • 34.
  • 36. LET’S GET STARTED ● Evitar o uso como mecanismo primário 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