Translate

Mostrar mensagens com a etiqueta Chaos Monkey. Mostrar todas as mensagens
Mostrar mensagens com a etiqueta Chaos Monkey. Mostrar todas as mensagens

sábado, 14 de novembro de 2020

☕ O Holocron do Chaos Monkey

 

Bellacosa Mainframe e o Chaos Monkey

☕ O Holocron do Chaos Monkey

Como um Pequeno Macaco da Netflix Ensinou ao Mundo Algo que os Sysprogs do IBM Z Já Praticavam Há Décadas

Existe um momento curioso na jornada de todo Padawan COBOL, Sysprog, arquiteto ou profissional de infraestrutura em que ele descobre uma verdade desconfortável.

Nenhum sistema é indestrutível.

Nenhuma arquitetura é perfeita.

Nenhum diagrama bonito no PowerPoint é capaz de impedir que um disco falhe, uma fibra seja rompida, uma aplicação entre em loop, uma região CICS desapareça ou uma LPAR resolva tirar férias em plena Black Friday.

Foi exatamente dessa constatação que nasceu, em 2011, uma das ideias mais influentes da engenharia moderna de software.

Um pequeno macaco digital.

Travesso.

Imprevisível.

Sem qualquer respeito pelo conforto psicológico dos administradores de sistemas.

Seu nome era Chaos Monkey.

Criado pela Netflix como parte do projeto Simian Army, o Chaos Monkey possuía uma missão aparentemente absurda:

Derrubar servidores deliberadamente.

Mas havia uma razão bastante séria por trás dessa atitude quase sociopata.

A Netflix havia aprendido uma lição dolorosa em 2008, após sofrer problemas importantes de indisponibilidade em sua infraestrutura. A empresa percebeu que esperar que a primeira falha ocorresse naturalmente era uma péssima estratégia.

Era melhor provocar pequenos desastres controlados.

Observar.

Medir.

Aprender.

Corrigir.

Repetir.

Nascia assim o movimento conhecido como Chaos Engineering.

No entanto, enquanto boa parte do mercado enxergava aquilo como uma revolução tecnológica, muitos profissionais do IBM Z apenas levantaram uma sobrancelha, tomaram um gole de café e pensaram:

Interessante...

Nós fazemos algo parecido há décadas.

Sysprogs veteranos conhecem bem essa filosofia.

Testar GDPS.

Executar Disaster Recovery.

Parar uma região CICS.

Desligar um membro Db2 Data Sharing.

Simular perda de um Queue Manager.

Trocar caminhos FICON.

Validar políticas do WLM.

Testar SA z/OS.

Mover workloads.

Executar IPLs programadas.

No fundo, a grande diferença talvez seja apenas de nomenclatura.

A Netflix colocou um macaco sorridente em apresentações corporativas.

O Mainframe chamou isso de plano de contingência, teste de disponibilidade, procedimento operacional ou simplesmente terça-feira à tarde.

Ao longo desta série do ☕ Um Café no Bellacosa Mainframe, acompanhamos a jornada de um Padawan COBOL descobrindo que resiliência não significa impedir falhas.

Significa aprender a conviver com elas.

Automatizá-las.

Medi-las.

Compreendê-las.

E principalmente garantir que o usuário continue tomando seu café tranquilamente enquanto os engenheiros observam gráficos, métricas e dashboards piscando em uma sala de guerra.


📖 Índice do Holocron do Chaos Monkey

Parte I

O Dia em que a Netflix Soltou um Macaco no Datacenter e Descobriu Algo que os Sysprogs do IBM Z Já Sabiam Há Décadas

Nesta primeira jornada, exploramos a origem do Chaos Monkey, a crise enfrentada pela Netflix em 2008, o nascimento do Simian Army, a filosofia de Adrian Cockcroft e os princípios fundamentais do Chaos Engineering, incluindo o conceito de Steady State, hipóteses de falha e a importância de provocar pequenos desastres antes que eles ocorram naturalmente.

https://eljefemidnightlunch.blogspot.com/2020/07/o-holocron-do-chaos-monkey-o-dia-em-que.html


Parte II

Como o Macaco Escolhe suas Vítimas, o Conceito de Blast Radius e as Técnicas Secretas dos Engenheiros da Netflix

No segundo capítulo, estudamos o funcionamento interno dos experimentos de caos, aprendendo conceitos essenciais como:

  • Blast Radius;

  • Observabilidade;

  • Seleção controlada de componentes;

  • Métricas de disponibilidade;

  • Técnicas empregadas por SREs;

  • Ferramentas modernas como Gremlin, LitmusChaos, Chaos Mesh e AWS Fault Injection Simulator.

Também acompanhamos estudos de caso inspirados em arquiteturas bancárias e serviços digitais.

https://eljefemidnightlunch.blogspot.com/2020/08/o-holocron-do-chaos-monkey-como-o.html

Parte III

Quando o Macaco Entra no IBM Z: Será que o Mainframe Precisava Mesmo de um Chaos Monkey?

Na terceira etapa, levamos o Chaos Engineering para dentro do universo IBM Z.

Analisamos como os conceitos de caos podem ser aplicados em:

  • CICSplex;

  • Db2 Data Sharing;

  • MQ Queue Sharing Groups;

  • WLM;

  • Parallel Sysplex;

  • Coupling Facilities;

  • GDPS;

  • SA z/OS;

  • NetView;

  • z/OSMF;

  • Ansible for IBM Z.

Descobrimos que muitos princípios defendidos pela Netflix já eram praticados há décadas pelos Sysprogs mais experientes.

https://eljefemidnightlunch.blogspot.com/2020/09/o-holocron-do-chaos-monkey-quando-o.html


Parte IV

Os Laboratórios Bellacosa Mainframe: Como um Sysprog Pode Injetar Caos no IBM Z Sem Ser Expulso da Sala de Guerra

Encerrando o Holocron, construímos uma coleção de laboratórios práticos voltados para ambientes IBM Z.

Entre os exercícios apresentados estão:

  • Derrubar uma região CICS secundária;

  • Simular a perda de um membro Db2 Data Sharing;

  • Testar um MQ Queue Sharing Group;

  • Alterar políticas do WLM;

  • Simular indisponibilidade de uma LPAR;

  • Testar Coupling Facilities;

  • Automatizar experimentos utilizando SA z/OS, Ansible e z/OSMF.

Também apresentamos checklists, exemplos de playbooks, métricas recomendadas e um modelo de maturidade em Chaos Engineering para equipes de Sysprog.

https://eljefemidnightlunch.blogspot.com/2020/10/o-holocron-do-chaos-monkey-os.html


☕ A Última Reflexão do Bellacosa Mainframe

Talvez a maior contribuição do Chaos Monkey não tenha sido derrubar servidores.

Talvez tenha sido lembrar aos arquitetos modernos uma lição antiga que os profissionais do IBM Z conhecem há muito tempo:

Disponibilidade não é sorte.

Resiliência não é marketing.

Alta disponibilidade é a disciplina de transformar falhas inevitáveis em acontecimentos rotineiros, previsíveis e quase entediantes.

E se um pequeno macaco travesso puder nos ensinar isso, talvez ele mereça uma cadeira na próxima reunião de arquitetura... desde que fique longe do botão vermelho da produção. ☕🐵💻🚀

sábado, 17 de outubro de 2020

O Holocron do Chaos Monkey – Os Laboratórios Bellacosa Mainframe: Como um Sysprog Pode Injetar Caos no IBM Z Sem Ser Expulso da Sala de Guerra - Parte IV

 

Bellacosa Mainframe e o chaos monkey parte iv

☕ Um Café no Bellacosa Mainframe

O Holocron do Chaos Monkey – Parte IV

Os Laboratórios Bellacosa Mainframe: Como um Sysprog Pode Injetar Caos no IBM Z Sem Ser Expulso da Sala de Guerra

"Em produção todos são especialistas em alta disponibilidade. Em laboratório descobrimos quem realmente sabe recuperá-la."


O Café das 3 da Manhã e a Última Lição do Mestre

03h11.

A sala estava silenciosa.

O RMF Monitor III permanecia aberto.

OMEGAMON coletava estatísticas.

O SDSF exibia centenas de jobs.

MQ continuava movimentando mensagens.

Db2 processava commits.

CICS atendia milhares de transações.

O Padawan perguntou.

— Mestre...

— Sim?

— Já entendi a teoria.

— Já entendi o Blast Radius.

— Já entendi observabilidade.

— Já entendi o Parallel Sysplex.

— Mas...

— Como fazemos isso de verdade?

O velho Sysprog sorriu.

Abriu um caderno antigo.

Escrito na capa.

Bellacosa Chaos Labs


Filosofia dos Laboratórios

Objetivo:

Não quebrar ambientes.

Objetivo:

Aprender.

Medir.

Observar.

Melhorar.


Princípios.

Pequeno impacto

Rollback rápido

Equipe avisada

Métricas disponíveis

Documentação obrigatória


Laboratório 1

Chaos Monkey para CICS


Ambiente

CICSPLEX01

TOR01

TOR02

AOR01

AOR02

AOR03

FOR01


Hipótese

Posso perder AOR02.

Sem impacto.


Métricas

CPU

Task Rate

Response Time

Storage

SOS

Abends


Execução

Método 1

CEMT PERFORM SHUTDOWN

Método 2

CEMT SET REGION QUIESCED

Método 3

SA z/OS

INGREQ AOR02 STOP

Observar

OMEGAMON

RMF

CICS Explorer

SMF110


Resultado esperado

TOR redireciona.

Usuários continuam.


Hipótese validada

SIM


Laboratório 2

Chaos Monkey para Db2


Ambiente

DB2A

DB2B

DB2C

CF1

CF2


Hipótese

DB2B pode falhar.


Observar

GBP

IRLM

Claims

Commits

Threads


Simulação

-STOP DB2 MODE(QUIESCE)

ou

-STOP DB2

ambiente controlado.


Métricas

SMF 100

SMF101

IFCID

OMEGAMON


Verificar

Aplicações continuam.

Sim.

Não.


Laboratório 3

Chaos Monkey para MQ


Ambiente

MQA

MQB

MQC

QSG


Hipótese

MQB pode desaparecer.


Execução

STOP QMGR

Observar

Queue Depth

Channels

Persistent Messages

Restart


Ferramentas

MQ Explorer

MO71

OMEGAMON MQ

SMF115


Resultado

Mensagens preservadas.


Laboratório 4

Chaos Monkey para WLM

Talvez um dos mais interessantes.


Hipótese

Aplicação suporta degradação.


Situação

Service Class

HIGH

MEDIUM

LOW


Alteração

Política.

Reduzir.

Importance.


Observação

Velocity

Execution Delay

CPU

SRB


Pergunta

Quem sofre primeiro?


Descoberta

Aplicações frágeis.

Aparecem rapidamente.


Laboratório 5

Simulando Perda de LPAR


Ambiente

LPAR1

LPAR2

LPAR3

LPAR4


Hipótese

Perda.

LPAR2.


Observar

XCF

Coupling

Db2

MQ

CICS


Ferramentas

RMF

NetView

SA

OMEGAMON


Resultado

Sysplex redistribui.


Laboratório 6

Coupling Facility

Apenas para ambientes preparados.


Hipótese

CF1 indisponível.


Observação

Lock Structure

Cache Structure

GBP

Latency


Resultado esperado

CF2 assume.


Laboratório 7

z/OS Connect

Ambientes híbridos.


REST

JSON

APIs


Hipótese

API Gateway indisponível.


Monitorar

HTTP 500

Timeout

MQ

Db2


Laboratório 8

Batch Chaos

Pouco discutido.

Muito útil.


Parar JES Initiator.


Perguntas.

Jobs aguardam?

Restart funciona?

Dependências quebram?


O Papel do Ansible

Chaos moderno.

Precisa ser repetível.


Exemplo.

Playbook.

---
- hosts: zos

tasks:


- stop_cics


- collect_rmf


- wait


- validate


- restart


- report

Benefícios.

Auditoria

Versionamento

Git

Rollback


Exemplo Python

if latency < 120:

    print("Hipótese válida")

else:

    print("Ajustar arquitetura")

O Checklist Bellacosa Chaos

Antes

Hipótese

Blast Radius

Equipe

Janela

Backup

Dashboard

Autorização

Rollback


Durante

Coletar métricas

Observar

Documentar

Registrar horário


Depois

Corrigir

Melhorar

Automatizar

Repetir


O Nível de Maturidade Chaos para IBM Z

Nível 1

Sem testes.


Nível 2

DR anual.


Nível 3

Testes trimestrais.


Nível 4

Automação.


Nível 5

Chaos contínuo.


Nível 6

Auto Healing.

IA.

Ansible.

SA z/OS.


O Futuro

IBM Z já possui.

Observabilidade.

Automação.

Resiliência.

Telemetry.

OpenTelemetry.

Ansible.

AIOps.

Watson.

Instana.

Zowe.

z/OSMF.


Talvez o próximo passo seja.

Chaos Engineering Assistido por IA.


IA pergunta.

Posso testar?


Sysprog.

Sim.


IA.

Executa.

Coleta.

Analisa.

Produz relatório.

Abre Change.

Atualiza Wiki.

Agenda próximo teste.


Bibliografia Recomendada

Chaos Engineering

Netflix

Google SRE

Building Secure and Reliable Systems

IBM Redbooks

Parallel Sysplex Handbook

SA z/OS Planning Guide

CICS TS Administration Guide

Db2 Data Sharing Redbook

MQ for z/OS Redbooks

RMF User Guide

SMF Manuals


A Última Conversa do Padawan

O relógio marcava quase quatro horas da manhã.

O café havia acabado.

O mestre fechou o caderno.

O Padawan perguntou.

— Então...

— Sim.

— O Chaos Monkey é apenas um macaco derrubando servidores?

O velho Sysprog sorriu.

— Não.

— O Chaos Monkey é um professor.

Ele ensina humildade.

Ensina observabilidade.

Ensina automação.

Ensina recuperação.

Ensina arquitetura.

Ensina disciplina.

Ensina documentação.

E acima de tudo.

Ensina que sistemas confiáveis não são aqueles que nunca falham.

São aqueles que falharam inúmeras vezes.

Em laboratório.

Sob controle.

Com métricas.

Com aprendizado.

Com engenharia.

Muito antes dos usuários.

Muito antes dos auditores.

Muito antes da manchete do jornal.

E talvez seja exatamente por isso que tantos Sysprogs veteranos olham para o Chaos Monkey e apenas dão um pequeno sorriso.

Porque, no fundo, sabem que o IBM Z passou décadas ensinando a mesma lição.

Disponibilidade não é sorte.

Resiliência não é marketing.

Alta disponibilidade é a arte de transformar falhas inevitáveis em eventos rotineiros, previsíveis e quase entediantes.


☕ Fim do Holocron do Chaos Monkey

Teste. Observe. Aprenda. Evolua. E nunca deixe que o primeiro desastre da sua arquitetura aconteça em uma segunda-feira às 9h da manhã.


quarta-feira, 16 de setembro de 2020

O Holocron do Chaos Monkey – Quando o Macaco Entra no IBM Z: Será que o Mainframe Precisava Mesmo de um Chaos Monkey? - Parte III

 

Bellacosa Mainframe e o chaos monkey parte iii

☕ Um Café no Bellacosa Mainframe

O Holocron do Chaos Monkey – Parte III

Quando o Macaco Entra no IBM Z: Será que o Mainframe Precisava Mesmo de um Chaos Monkey?

"O pessoal da Netflix inventou o Chaos Monkey em 2011. O pessoal do IBM Z talvez apenas tenha respondido: 'Interessante... nós chamamos isso de terça-feira de teste de contingência.'"


O Café da Madrugada e a Pergunta que Incomodava o Padawan

Já passavam das duas horas da manhã.

O monitor do RMF permanecia aberto.

No SDSF, milhares de jobs continuavam terminando com CC=0000.

OMEGAMON mostrava gráficos verdes.

O CICSplex estava equilibrado.

O Db2 Data Sharing parecia tranquilo.

MQ continuava escoando mensagens.

WLM distribuía trabalho silenciosamente.

O Padawan então perguntou.

— Mestre...

— Sim?

— Existe um Chaos Monkey para z/OS?

O velho Sysprog tomou um gole de café.

Pensou alguns segundos.

E respondeu.

— Não exatamente.

— Mas existe algo muito mais interessante.

— O quê?

— Um ambiente que foi construído durante décadas assumindo que o desastre iria acontecer.

E talvez seja essa a maior diferença filosófica entre boa parte do mundo distribuído moderno e o IBM Z.


O IBM Z Nasceu em uma Época em que Falhar Era Inaceitável

Para entender isso precisamos voltar algumas décadas.

Década de 1960.

Década de 1970.

Década de 1980.

Não existiam containers.

Não existia Kubernetes.

Não existia AWS.

Não existia Netflix.

Mas existiam bancos.

Bolsa de valores.

Companhias aéreas.

Seguradoras.

Governos.

E todos tinham uma exigência simples.

Não pode parar.

Nunca.

Ou quase nunca.

Enquanto muitas arquiteturas modernas foram inicialmente criadas pensando em escalabilidade e depois adaptadas para alta disponibilidade, o Mainframe nasceu praticamente no caminho inverso.

Primeiro.

Disponibilidade.

Depois.

Performance.

Depois.

Escalabilidade.


O Que é o Chaos Engineering Sob a Ótica IBM Z?

Podemos resumir Chaos Engineering em uma frase.

Provocar falhas controladas para validar a resiliência do ambiente.

No IBM Z isso pode ser traduzido como:

Testar a perda de componentes críticos antes que a natureza faça isso por você.


Exemplos.

Perder uma região CICS.

Perder uma LPAR.

Perder um membro Db2.

Perder um Queue Manager.

Perder um caminho FICON.

Perder conectividade XCF.

Perder uma Coupling Facility.

Alterar prioridades WLM.

Testar GDPS.

Executar Disaster Recovery.


O Primeiro Macaco do Mainframe Talvez Tenha Sido o Operador

Uma curiosidade interessante.

Durante muitos anos.

Chaos Engineering era praticamente um procedimento operacional.

O operador recebia uma lista.


Plano DR

Passo 1.

Parar CICSA

Passo 2.

Monitorar.

Passo 3.

Verificar workload.

Passo 4.

Liberar usuários.

Passo 5.

Restaurar.


Em essência.

Era um experimento de caos.

Manual.

Documentado.

Auditável.

E bastante eficiente.


Chaos Monkey em CICS

Talvez seja um dos melhores ambientes para começar.


Suponha.

CICSPLX01

TOR01

TOR02

AOR01

AOR02

AOR03

FOR01


Objetivo.

Testar disponibilidade.


Hipótese.

Posso perder AOR02.

Sem impacto.


Experimento.

CEMT PERFORM SHUTDOWN

ou

CEMT SET REGION QUIESCED


Observação.

Transações continuam?

Sessões perdem estado?

CPU aumenta?

Fila cresce?


Resultado esperado.

Usuário não percebe.


Hipótese validada.


Chaos Monkey para Db2 Data Sharing

Esse é provavelmente um dos experimentos mais interessantes.


Ambiente.

DB2A

DB2B

DB2C


CF1

CF2


Objetivo.

Validar.

Data Sharing.


Hipótese.

Posso perder DB2B.

Sem indisponibilidade.


Experimento.

STOP DB2

ou

Simulação planejada.


Monitorar.

Locks.

Claims.

Threads.

Group Buffer Pools.

IRLM.


Resultado.

DB2A

DB2C

Assumem.


Aplicação continua.


Cliente feliz.


Auditoria satisfeita.


Chaos Monkey para MQ

MQ nasceu para sobreviver.

Mas precisa ser testado.


Ambiente.

MQA

MQB

MQC


QSG.


Hipótese.

Perder MQB.


Experimento.

STOP QMGR


Monitorar.

Depth.

Channels.

Message persistence.


Observação.

Filas crescem?

Canal reinicia?

Mensagem desapareceu?


Problemas descobertos.

Excelente.

Era justamente isso.


O WLM é Talvez o Melhor Chaos Monkey do z/OS

Muitos Sysprogs não percebem.

Mas o WLM executa constantemente decisões semelhantes.


CPU saturada.


Quem ganha?


Batch?

CICS?

Db2?

MQ?


Service Class.


Importance.


Velocity.


Execution Delay.


WLM pergunta.

Quem merece recursos?

Chaos Engineering pergunta.

Quem continua funcionando sem eles?


Filosoficamente.

São primos.


O Parallel Sysplex é um Grande Exercício Permanente de Chaos Engineering

Imagine.

Quatro LPARs.


LPAR1

LPAR2

LPAR3

LPAR4


CICS.

Db2.

MQ.

IMS.


Hipótese.

Perder uma LPAR.


Resultado esperado.

XCF redistribui.

WLM ajusta.

Db2 assume.

MQ continua.

Usuário nem percebe.


Isso é praticamente.

Chaos Engineering.

Em hardware.


Coupling Facility: O Chefe Final

Talvez nenhum experimento seja tão delicado.


Perder CF.


Hipótese.

CF secundária assume.


Monitorar.

GBP.

Locks.

Cache.

Latency.


Se algo quebrar.

Descobrimos.

Antes do desastre.


SA z/OS: O Maestro do Caos Controlado

System Automation.

É uma ferramenta extremamente interessante.

Porque permite.

Criar cenários.

Automatizar.

Testar.

Recuperar.


Exemplo.

INGREQ STOP


Observação.


INGLIST


INGINFO


DISPSYS


Automação responde.


Reinício.


Failover.


Recuperação.


Hipótese validada.


NetView e Chaos Engineering

NetView talvez seja um dos maiores aliados.


Alertas.


Mensagens.


Automação.


Scripts.


Correlação.


Quando algo falha.

Precisamos saber.

Rapidamente.


NetView ajuda.


Chaos precisa disso.


z/OSMF e APIs

Experimentos podem ser automatizados.

REST.

Ansible.

Python.

Zowe.


Exemplo.

Playbook.


Parar região.

Esperar.

Coletar métricas.

Reiniciar.

Gerar relatório.


Padawan feliz.

Sysprog também.


Ansible para IBM Z

Talvez seja uma das melhores ferramentas modernas.


Playbook.

- stop_cics

- collect_rmf

- wait

- validate

- start_cics

- generate_report

Tudo documentado.

Versionado.

Auditável.

Repetível.


Chaos Engineering adora isso.


O Que Nunca Deve Ser Feito

Existem limites.


Nunca.

Produção.

Sem autorização.


Nunca.

Sem rollback.


Nunca.

Sem métricas.


Nunca.

Sem observabilidade.


Nunca.

Sem janela.


Nunca.

Sem comunicação.


Nunca.

Sem plano B.


O Checklist Bellacosa Mainframe

Antes de executar um experimento.

Pergunte.

Tenho hipótese?

Sim.

Não.


Tenho métrica?


Tenho rollback?


Tenho dashboard?


Tenho equipe?


Tenho autorização?


Tenho documentação?


Blast Radius aceitável?


Se todas forem SIM.

Experimento aprovado.


O Dia em que o Padawan Entendeu

O Padawan olhou para o mestre.

E perguntou.

— Então...

— Sim.

— O Mainframe não precisava de um Chaos Monkey?

O velho sorriu.

— Precisava.

— E ele existiu.

— Quem?

O Sysprog.

O operador.

O arquiteto.

O especialista de DR.

O administrador de CICS.

O DBA Db2.

O administrador MQ.

Todos eles.

Durante décadas.

Simulando falhas.

Executando testes.

Planejando contingências.

Fazendo IPL.

Trocando caminhos.

Parando regiões.

Validando recuperação.

Aprendendo.

Melhorando.

Repetindo.

Muito antes de alguém colocar um macaco sorridente em uma apresentação do PowerPoint.

Porque talvez a maior lição do IBM Z seja esta:

Resiliência não é a capacidade de evitar falhas.

É a capacidade de continuar prestando serviço quando as falhas inevitavelmente chegam.


Continua na Parte IV

No próximo capítulo do Holocron do Chaos Monkey, construiremos os Laboratórios Bellacosa Mainframe, incluindo:

  • Laboratório 1 – Derrubando uma região CICS com segurança;

  • Laboratório 2 – Simulando a perda de um membro Db2 Data Sharing;

  • Laboratório 3 – Testando MQ Queue Sharing Group;

  • Laboratório 4 – Experimentos com WLM;

  • Laboratório 5 – Perda controlada de uma LPAR em Parallel Sysplex;

  • Playbooks Ansible, comandos z/OS, exemplos práticos, métricas RMF/SMF e checklists utilizados por Sysprogs para transformar caos em conhecimento operacional.

sábado, 15 de agosto de 2020

O Holocron do Chaos Monkey – Como o Macaco Escolhe suas Vítimas, o Conceito de Blast Radius e as Técnicas Secretas dos Engenheiros da Netflix - Parte II

 

Bellacosa Mainframe e o chaos monkey parte II

☕ Um Café no Bellacosa Mainframe

O Holocron do Chaos Monkey – Parte II

Como o Macaco Escolhe suas Vítimas, o Conceito de Blast Radius e as Técnicas Secretas dos Engenheiros da Netflix

"A diferença entre um sistema resiliente e um sistema frágil é que o resiliente já sobreviveu ao desastre em laboratório."


O Café Esfria e o Macaco Aprende Novos Truques

O relógio marcava 01h17.

O Padawan COBOL ainda estava intrigado.

Na noite anterior, havia descoberto que a Netflix possuía um pequeno macaco virtual cuja diversão favorita era assassinar servidores em plena luz do dia.

Algo que parecia absurdo.

Algo que, para um operador acostumado a passar horas analisando mensagens DFHxxxx, DSNxxxx, IEAxxxx e $HASPxxxx, soava quase criminoso.

Ele olhou para o velho Sysprog do Bellacosa Mainframe.

— Mestre...

— Sim?

— O Chaos Monkey simplesmente escolhe qualquer servidor e aperta o botão vermelho?

O velho tomou um gole de café.

Sorriu.

E respondeu.

— Se fosse apenas isso, meu jovem Padawan, chamaríamos de estagiário em produção.

O Chaos Monkey é muito mais sofisticado.

Ele trabalha com hipóteses.

Métricas.

Estatística.

Probabilidade.

E principalmente com um conceito extremamente importante.

Blast Radius.


O Conceito de Blast Radius

Talvez a maior contribuição filosófica do Chaos Engineering seja uma pergunta simples.

Quanto estrago eu posso causar antes de me tornar um problema para a empresa?

Esse conceito recebeu o nome de:

Blast Radius

Em português poderíamos traduzir como:

Raio de Explosão

Ou

Zona de impacto controlado


Imagine uma granada.

A explosão possui um alcance limitado.

Pessoas próximas são afetadas.

Pessoas distantes permanecem seguras.

Chaos Engineering funciona da mesma forma.

Não se derruba tudo.

Derruba-se apenas uma pequena parte.

E observa-se.


Exemplo Netflix

Serviços existentes:

Catalog Service

Authentication Service

Billing Service

Streaming Service

Recommendation Engine

CDN Controller

Número total de instâncias:

300

Chaos Monkey escolhe:

2 instâncias.

Blast Radius.

0,66%

Impacto esperado:

Nenhum cliente deve perceber.


Exemplo IBM Z

Ambiente.


LPAR PROD1

LPAR PROD2

LPAR PROD3

CICSA

CICSB

CICSC

Db2A

Db2B

MQA

MQB


Experimento.

Parar CICSB.

Blast Radius.

16%

Objetivo.

Nenhum terminal 3270 deve perder sessão.

Nenhuma transação deve falhar.

Nenhum SLA deve ser violado.


Quanto Menor o Blast Radius, Melhor

Essa é uma das regras mais importantes.

Nunca comece destruindo metade do ambiente.

Comece pequeno.

Muito pequeno.

Ridiculamente pequeno.

Primeiro.

Mate uma instância.

Depois.

Mate duas.

Depois.

Uma AZ.

Depois.

Uma região.

Depois.

Teste desastre.


No mundo IBM Z.

Primeiro.

Pare uma região AOR.

Depois.

Um TOR.

Depois.

Um MQ Manager.

Depois.

Um membro Db2.

Depois.

Uma LPAR.

Somente depois.

Teste GDPS.


O Conceito de Steady State

Na Parte I falamos rapidamente sobre isso.

Agora vamos aprofundar.

Chaos Engineering não começa derrubando servidores.

Começa respondendo.

O que é comportamento normal?


Exemplo.

Sistema bancário.

TPS

8000

CPU

42%

Latência

120 ms

Erros

0,002%


Esse é o estado estável.

Steady State.


Hipótese.

Posso perder um servidor.

Mantendo.

TPS acima de 7800.

Latência abaixo de 150 ms.

Erro abaixo de 0,01%.


Agora sim.

Executamos o caos.


Como o Chaos Monkey Escolhe suas Vítimas

Muita gente imagina.

Servidor.

Sorteio.

Desliga.

Fim.

Não.

Existem estratégias.


Estratégia 1

Seleção aleatória pura

Número aleatório.

Escolha.

Encerrar.


Vantagem.

Simples.


Desvantagem.

Pode escolher servidores pouco importantes.


Estratégia 2

Weighted Random

Peso.

Criticidade.

Histórico.

Capacidade.


Exemplo.

API01

peso 30

API02

peso 10

API03

peso 60


Maior chance.

API03.


Estratégia 3

Tag Based

AWS Tags.

Kubernetes Labels.


Production

Homolog

ChaosEnabled


Exemplo.

ChaosEnabled=true

Apenas esses.

Serão vítimas.


Estratégia 4

Janela Programada

09h às 11h

Terça-feira

Equipe presente

Observabilidade ativa


Muito usada.

Na Netflix.

Google.

Spotify.


O Segredo dos SREs

Os Site Reliability Engineers possuem um mantra.

Não faça experimentos quando ninguém puder observar.

Parece óbvio.

Mas muitas empresas ignoram.


É necessário.

Logs.

Dashboards.

Tracing.

Alertas.

Equipe disponível.

Rollback.

Runbook.


Sem isso.

Chaos vira apenas.

Caos.


O Conceito de Observabilidade

Chaos Engineering depende totalmente dela.


Logs


Métricas


Tracing


Eventos


Alertas


No IBM Z.

RMF.

SMF.

OMEGAMON.

NetView.

SA z/OS.

CICS Monitoring.

Db2 Monitor.

MQ Statistics.

SDSF.

JES2.

WLM.


Exemplo Completo — Banco Digital

Arquitetura.


Load Balancer

6 APIs

Kafka

Redis

Postgres

IAM

PIX

Open Finance


Estado.

12000 TPS

85ms

Erro 0,001%


Hipótese.

Perder API04.


Chaos.

Kill.

API04.


Resultado.

Latência.

91ms.

TPS.

Erro.

0,003%


Hipótese validada.


Novo teste.

Perder Redis.


Resultado.

Latência.

650 ms.


Fila cresce.


Clientes reclamam.


Descoberta.

Redis era SPOF.


Problema corrigido.


Single Point of Failure

Talvez o maior inimigo.

SPOF.


IBM Z nasceu combatendo isso.


Redundância.


Coupling Facility.


Parallel Sysplex.


FICON redundante.


Db2 Sharing.


MQ QSG.


GDPS.


WLM.


RACF Database Sharing.


ODS.


XCF.


Sysplex Timer.


STP.


Chaos Engineering apenas tornou explícita uma filosofia que ambientes críticos praticam há décadas.


Ferramentas Modernas

Gremlin

Plataforma comercial.

CPU.

Memória.

Rede.

Disco.

DNS.

Processos.


LitmusChaos

Kubernetes.


CRDs.

Experimentos.

GitOps.


Chaos Mesh

Cloud Native.


Latência.

IO.

Kernel.


AWS FIS

Fault Injection Simulator.


Instâncias.

EBS.

Rede.


PowerfulSeal

Clusters Kubernetes.


Chaos Toolkit

Python.

Open Source.


Truques Utilizados por Equipes Experientes

Truque 1

Sempre começar em homologação.


Truque 2

Executar experimentos repetidamente.


Truque 3

Automatizar.


CI/CD.


GitOps.


Ansible.


Terraform.


Truque 4

Documentar tudo.


Hipótese.

Resultado.

Aprendizado.

Correção.


Truque 5

Criar um catálogo.

Chaos Experiments.

Versão.

Data.

Owner.


Um Sysprog Descobre o Chaos Monkey

O Padawan olhou para o mestre.

— Então...

— Sim.

— Chaos Engineering é ensinar o sistema a sofrer.

— Exatamente.

— Até ele parar de sentir dor.

— Não.

O velho sorriu.

— Até ele continuar funcionando mesmo sentindo.

Porque a disponibilidade perfeita não existe.

Hardware quebra.

Fibra rompe.

Discos falham.

Firmware possui bugs.

Aplicações vazam memória.

Operadores cometem erros.

Pessoas esquecem procedimentos.

O objetivo nunca foi impedir falhas.

O objetivo sempre foi algo muito mais ambicioso.

Fazer com que as falhas se tornem acontecimentos comuns, previsíveis e entediantes.

E foi nesse momento que o Padawan percebeu algo curioso.

Talvez o Chaos Monkey nunca tivesse sido realmente uma invenção revolucionária.

Talvez fosse apenas uma nova linguagem para explicar uma velha sabedoria dos Sysprogs do IBM Z:

Não espere o desastre ensinar sua arquitetura. Ensine sua arquitetura a sobreviver ao desastre antes que ele aconteça.


Continua na Parte III

No próximo capítulo do Holocron do Chaos Monkey, entraremos definitivamente no território do IBM Z:

  • Existe um Chaos Monkey para z/OS?

  • Como testar falhas em CICSplex, Db2 Data Sharing e MQ QSG.

  • O papel do WLM, Sysplex, XCF e GDPS.

  • Como construir experimentos de caos seguros para Sysprogs.

  • Técnicas usando SA z/OS, NetView, z/OSMF e Ansible Automation Platform.

  • Laboratórios Bellacosa Mainframe com exemplos práticos para Padawans e Sysprogs Seniores.

sábado, 18 de julho de 2020

O Holocron do Chaos Monkey – O Dia em que a Netflix Soltou um Macaco no Datacenter e Descobriu Algo que os Sysprogs do IBM Z Já Sabiam Há Décadas - Parte I

 

Bellacosa Mainframe e o chaos monkey parte i

☕ Um Café no Bellacosa Mainframe

O Holocron do Chaos Monkey – Parte I

O Dia em que a Netflix Soltou um Macaco no Datacenter e Descobriu Algo que os Sysprogs do IBM Z Já Sabiam Há Décadas

"Existem duas categorias de administradores de sistemas: os que já perderam servidores em produção e os que ainda não descobriram que já perderam."

— Provérbio não oficial dos Sysprogs que já passaram por uma IPL às três da manhã.


O Café, o Padawan e a Pergunta Incômoda

Era quase meia-noite.

O jovem Padawan COBOL observava sua tela ISPF iluminada enquanto uma caneca de café começava lentamente a esfriar.

No SDSF, milhares de jobs terminavam normalmente.

No RMF, os gráficos permaneciam estáveis.

No Db2 Data Sharing, todos os membros estavam ativos.

MQ respondia.

CICS aceitava transações.

WLM parecia satisfeito.

RACF não reclamava.

Tudo parecia perfeito.

Foi então que o velho Sysprog do Bellacosa Mainframe fez uma pergunta aparentemente simples.

— E se eu desligar uma LPAR agora?

O Padawan arregalou os olhos.

— Em produção?

— Não.

— Em homologação?

— Talvez.

— Em laboratório?

— Definitivamente.

— Mas... por quê?

O velho Sysprog sorriu.

— Porque sistemas que nunca foram testados sob falha não são sistemas resilientes.

São apenas sistemas que tiveram sorte.

E foi exatamente essa pergunta que levou uma empresa de streaming de vídeos a criar um dos conceitos mais influentes da engenharia moderna de software.

Um pequeno macaco digital.

Travesso.

Imprevisível.

E absolutamente genial.

Seu nome era Chaos Monkey.


Antes do Macaco Existia o Trauma

Para compreender a origem do Chaos Monkey precisamos voltar alguns anos.

Mais especificamente para 2008.

Naquela época a Netflix ainda não era a gigante que conhecemos.

Ela era uma empresa em transição.

Durante muito tempo seu negócio principal havia sido enviar DVDs pelo correio.

Milhões de DVDs.

Milhões de envelopes vermelhos.

Milhões de assinantes.

Mas o streaming começava a crescer.

E isso trouxe um problema monumental.


O Datacenter que Quase Matou a Netflix

Em agosto de 2008 ocorreu um incidente importante.

A base de dados principal da Netflix sofreu corrupção.

Diversos serviços ficaram indisponíveis.

A recuperação foi lenta.

Custosa.

Dolorosa.

A empresa percebeu algo desconfortável.

Seu sistema era robusto.

Mas não era antifrágil.

Era eficiente.

Mas dependia demais de componentes específicos.

A pergunta passou a assombrar os arquitetos:

O que acontece se um servidor morrer?

E se um rack inteiro desaparecer?

E se perdermos uma zona de disponibilidade?

E se um datacenter simplesmente sumir?

E se tudo isso acontecer numa sexta-feira às 18h?

Perguntas semelhantes já eram familiares para administradores IBM Z.

Um Sysprog veterano talvez reformulasse:

  • E se perdermos um CF?

  • E se uma região CICS cair?

  • E se um membro Db2 sair do grupo?

  • E se um CHPID apresentar erro?

  • E se uma LPAR inteira desaparecer?

A Netflix precisava responder a perguntas equivalentes.


Conhecendo Adrian Cockcroft

Uma das figuras centrais dessa história é Adrian Cockcroft.

Na época ele era arquiteto de cloud da Netflix.

Cockcroft possuía uma visão bastante pragmática.

Ele defendia uma ideia simples.

Falhas não são exceções.

Falhas são eventos normais.

Portanto:

Se você sabe que algo vai falhar, por que esperar que aconteça sozinho?

Por que não provocar a falha?

Em ambiente controlado.

Sob observação.

Durante o horário comercial.

Com engenheiros atentos.

Antes que a natureza faça isso às três horas da manhã.

Essa filosofia mudaria para sempre a maneira como sistemas distribuídos seriam projetados.


O Nascimento do Simian Army

Em 2011 surgiu um conjunto de ferramentas chamado:

Simian Army

A tradução seria algo como:

Exército dos Símios

Cada "macaco" tinha uma função específica.


Chaos Monkey

Mata instâncias aleatoriamente.


Janitor Monkey

Remove recursos abandonados.


Conformity Monkey

Verifica aderência às políticas.


Security Monkey

Audita vulnerabilidades.


Doctor Monkey

Detecta máquinas defeituosas.


Chaos Gorilla

Simula perda de uma zona inteira.


Chaos Kong

Simula perda de uma região completa.

Era uma abordagem brilhante.

Em vez de esperar desastres...

Eles ensaiavam desastres.

Como bombeiros.

Como pilotos.

Como astronautas.

Como equipes de recuperação de desastres em grandes bancos.

Algo bastante familiar para profissionais IBM Z.


O Macaco que Derruba Servidores

O Chaos Monkey original era relativamente simples.

Seu trabalho consistia basicamente em:

Selecionar uma instância.

Escolher aleatoriamente.

Desligá-la.

E observar.

Nada mais.

Nada menos.

Mas por trás dessa simplicidade existia uma filosofia extremamente sofisticada.


O Conceito de Steady State

Primeira pergunta:

Como sabemos que o sistema está saudável?

Precisamos definir métricas.

Exemplos:

Tempo médio de resposta.

Número de transações.

Erros HTTP.

Latência.

TPS.

CPU.

Consumo de memória.

No IBM Z poderíamos medir:

SMF 30

SMF 72

RMF

OMEGAMON

CICS Monitoring

Db2 Accounting

MQ Statistics

WLM Service Classes


A Hipótese

Exemplo.

Hipótese:

Posso perder um servidor API sem impacto ao cliente.

Hipótese IBM Z:

Posso perder uma região TOR sem indisponibilidade.

Hipótese Db2:

Posso perder um membro Data Sharing.

Hipótese MQ:

Posso perder um Queue Manager.


O Experimento

Agora o macaco trabalha.

Servidor API-03.

Encerrar.

Pronto.

Observar.


Resultado

Usuário percebeu?

Latência aumentou?

Filas cresceram?

CPU disparou?

Alarmes tocaram?

Se tudo continuou funcionando...

Excelente.

Sistema resiliente.

Se não...

Descobrimos um problema.

Antes do cliente.

Antes do auditor.

Antes do jornal.

Antes do diretor ligar perguntando:

Quem derrubou o banco?


Um Exemplo Passo a Passo

Suponha um ambiente com:

4 servidores Web

3 APIs

2 bancos

Redis

MQ

Load Balancer


Estado inicial.

Web01

Web02

Web03

Web04

API01

API02

API03

DB01

DB02


Métrica.

99,99%

TPS = 5000

Latência = 80 ms


Chaos Monkey escolhe.

API02.


Comando.

Shutdown.


Balanceador detecta.

Remove API02.


API01 assume.

API03 assume.


Usuários continuam navegando.

Nenhum impacto.

Experimento aprovado.


Caso contrário:

Erro 500.

Sessões perdidas.

Timeout.

Fila congestionada.

Problema descoberto.

Correção necessária.


O Conceito Mais Importante: O Sistema Já Está Quebrado

Talvez a principal lição do Chaos Engineering seja esta:

O sistema não é confiável porque nunca falhou.

Ele é confiável porque já falhou centenas de vezes.

Em laboratório.

Em homologação.

Sob controle.

Com métricas.

Com observabilidade.

Com aprendizado.

Isso é extremamente próximo da cultura tradicional do IBM Z.

Sysprogs experientes sempre fizeram algo semelhante.

Trocar caminhos.

Testar GDPS.

Executar DR.

Parar regiões.

Mover workloads.

Fazer IPL programada.

Testar fallback.

Treinar operadores.

A diferença é que a Netflix deu um nome elegante para algo que muitas equipes de infraestrutura críticas já praticavam intuitivamente havia décadas.


Curiosidades Sobre o Chaos Monkey

Algumas curiosidades interessantes:

O Chaos Monkey original foi desenvolvido principalmente para a infraestrutura AWS.

Muitas equipes tinham medo de habilitá-lo.

Alguns executivos perguntavam:

Vocês estão pagando engenheiros para derrubar servidores?

A resposta era:

Sim.

Porque a alternativa é deixar que os clientes descubram os problemas.

Atualmente, dezenas de empresas utilizam princípios derivados do Chaos Engineering.

Entre elas:

Google.

Microsoft.

Amazon.

LinkedIn.

Spotify.

Uber.

Shopify.

Salesforce.

E, cada vez mais, instituições financeiras que operam ambientes híbridos envolvendo IBM Z.


O Que Aprenderemos na Próxima Parte?

Na Parte II do Holocron do Chaos Monkey, o Padawan descobrirá:

  • O conceito de Blast Radius;

  • Como SREs escolhem vítimas para os experimentos;

  • Técnicas avançadas utilizadas por equipes do Google e Netflix;

  • Como criar hipóteses de falha inteligentes;

  • Ferramentas modernas como Gremlin, LitmusChaos, Chaos Mesh e AWS Fault Injection Simulator;

  • Um estudo de caso completo de um banco digital submetido a experimentos de caos;

  • E por que um pequeno macaco digital pode ensinar mais sobre arquitetura resiliente do que dezenas de diagramas coloridos em apresentações corporativas.


No Bellacosa Mainframe costumamos dizer que a alta disponibilidade não nasce quando tudo funciona. Ela nasce quando alguma coisa quebra, todos observam atentamente, aprendem com a experiência e descobrem que o sistema continua servindo café para os usuários como se nada tivesse acontecido.