Como posso amarrar um Jetpack aos meus novatos enquanto mantenho os SREs seniores no ritmo desejado?
Escrito por Andrew Widdowson
Editado por Shylaja Nukala
Contratou o(s) seu(s) próximo(s) SRE(s), E agora?
Contratou novos empregados na sua organização, e eles estão começando como Engenheiros de Confiabilidade do Site. Agora tem de os treinar para o trabalho. Investindo antecipadamente na educação e orientação técnica dos novos SREs, irá transformá-los em melhores engenheiros. Tal formação irá acelerá-los para um estado de proficiência mais rápido, ao mesmo tempo que torna o seu conjunto de competências mais robusto e equilibrado.
Equipes SRE bem sucedidas são construídas com base na confiança – para manter um serviço consistente e global, é preciso confiar que os seus colegas de serviço sabem como funciona o seu sistema, podem diagnosticar comportamentos atípicos do sistema, sentem-se à vontade para pedir ajuda, e podem reagir sob pressão para salvar o dia. É então essencial, mas não suficiente, pensar na educação SRE através da lente de: “O que é que um novato precisa aprender para estar de plantão?”. Dadas as exigências relativas à confiança, também é necessário fazer perguntas como:
- Como podem os meus atuais plantonistas avaliar o estado de preparação do novato para o plantão?
- Como podemos aproveitar o entusiasmo e a curiosidade das nossas novas contratações para garantir que os SREs existentes se beneficiem disso?
- Que atividades posso comprometer nossa equipe para que isso beneficie a educação de todos, mas que todos irão gostar?
Os estudantes têm uma vasta gama de preferências de aprendizagem. Reconhecendo que irá contratar pessoas que têm uma mistura destas preferências, seria míope atender apenas a um estilo à custa dos outros. Assim, não há nenhum estilo de educação que funcione melhor para formar novos SREs, e não há certamente nenhuma fórmula mágica que funcione para todas as equipes SRE. A tabela 28-1 lista as práticas de treino recomendadas (e os seus correspondentes antipadrões) que são bem conhecidas da SRE no Google. Estas práticas representam uma vasta gama de opções disponíveis para tornar a sua equipe bem educada nos conceitos de SRE, tanto agora como de forma contínua.
Tabela 28-1. Práticas educativas do SRE
Padrões recomendados | Antipadrões |
Projetar experiências de aprendizagem concretas e sequenciais para os alunos seguirem | Inundar os alunos com trabalho braçal (por exemplo, triagem de alerta/ticket) para os treinar; “prova de fogo”. |
Encorajar a engenharia inversa, o pensamento estatístico, e o trabalho a partir de princípios fundamentais | Formação estritamente através de procedimentos de operadores, listas de verificação e livros de jogos |
Celebrar a análise do fracasso sugerindo postmortems para que os alunos leiam | Tratar as interrupções como segredos a enterrar para evitar a culpa |
Criação de rupturas contidas, mas realistas para os estudantes corrigirem usando monitoramento e ferramentas reais | Ter a primeira oportunidade de corrigir algo só ocorre depois de um estudante já estar de plantão |
Interpretar desastres teóricos como um grupo, para misturar as abordagens de resolução de problemas de uma equipe | Criação de especialistas na equipe cujas técnicas e conhecimentos são compartimentados |
Permitir que os alunos acompanhem sua rotação de plantão mais cedo, comparando notas com o plantonista | Empurrar os estudantes para serem os principais de plantão antes de alcançarem uma compreensão holística do seu serviço |
Associar estudantes com peritos em SREs para revisar seções específicas do plano de treinamento de plantão | Tratar os planos de formação em permanência como estáticos e intocáveis, exceto por peritos na matéria |
Realização de trabalhos de projeto não triviais para os estudantes, permitindo que eles obtenham propriedade parcial da stack | Atribuição de todo o novo trabalho de projeto aos SREs mais seniores, deixando os SREs juniores para pegar os restos |
O resto deste capítulo apresenta os principais temas que descobrimos serem eficazes na aceleração dos SREs para o serviço de plantão e para além dele. Estes conceitos podem ser visualizados num esquema para os SREs de inicialização (Figura 28-1).
Figura 28-1. Um plano para a colocação de um SRE em plantão e para além
Esta ilustração captura as melhores práticas que as equipes de SRE podem escolher para ajudar a recrutar novos membros, mantendo os talentos seniores atualizados. De entre as muitas ferramentas aqui presentes, pode escolher as atividades que melhor se adequam à sua equipe.
A ilustração tem dois eixos:
- O eixo x representa o espectro entre diferentes tipos de trabalho, desde atividades abstratas a atividades aplicadas.
- O eixo y representa o tempo. Lido de cima para baixo, os novos SREs têm muito pouco conhecimento sobre os sistemas e serviços pelos quais serão responsáveis, portanto os postmortems que detalham como estes sistemas falharam no passado são um bom ponto de partida. Os novos SREs podem também tentar inverter os sistemas de engenharia a partir dos fundamentos, uma vez que começam do zero. Assim que compreenderem mais sobre os seus sistemas e tiverem feito algum trabalho prático, os SREs estão prontos para acompanhar o plantão e começar a consertar a documentação incompleta ou desatualizada.
Dicas para a interpretação desta ilustração:
- Estar de plantão é um marco na carreira de um novo SRE, após o que a aprendizagem se torna muito mais nebulosa, indefinida e autodirecionada – as linhas tracejadas em torno das atividades que acontecem no SRE ou depois de o SRE estar de plantão.
- A forma triangular do trabalho de projeto & propriedade indica que o trabalho de projeto começa pequeno e constrói-se com o tempo, tornando-se mais complexo e provavelmente continuando bem depois de ter estado de plantão.
- Algumas destas atividades e práticas são muito abstratas/passivas, e algumas são muito aplicadas/ativas. Algumas atividades são misturas de ambas. É bom ter uma variedade de modalidades de aprendizagem que se adaptem a diferentes estilos de aprendizagem.
- Para um efeito máximo, as atividades e práticas de formação devem ser ritmadas adequadamente: algumas são apropriadas para serem empreendidas imediatamente, outras devem acontecer mesmo antes de um SRE ser oficialmente chamado, e outras devem ser contínuas e em progresso mesmo por SREs experientes. Experiências de aprendizagem concretas devem acontecer durante todo o tempo que antecede a permanência de um SRE em plantão.
Experiências iniciais de aprendizagem: O caso da estrutura sobre o caos
Tal como discutido em outra parte deste livro, as equipes SRE realizam uma mistura natural de trabalho proativo 136 e reativo 137 . Deve ser um objetivo forte de cada equipe SRE conter e reduzir o trabalho reativo através de uma ampla proatividade, e a abordagem adotada para integrar o(s) seu(s) novato(s) não deve ser exceção. Considere o seguinte processo de integração muito comum, mas infelizmente abaixo do ideal:
“John é o membro mais recente da equipe do FooServer SRE. Os SREs seniores desta equipe são encarregados de muito trabalho pesado, tal como responder a tickets, lidar com alertas, e realizar lançamentos binários enfadonhos. No primeiro dia de trabalho de John, ele recebe todos os novos tickets recebidos. Ele é informado de que pode pedir a qualquer membro da equipe SRE que o ajude a obter os antecedentes necessários para decifrar um ticket. Claro, haverá muita aprendizagem inicial que terá de ser feita”, diz o gerente de John. Mas acabará por ser muito mais rápido com estes tickets. Um dia, basta clicar e saberá muito sobre todas as ferramentas que utilizamos, os procedimentos que seguimos, e os sistemas que mantemos’. Um membro sênior da equipe comenta, ‘Estamos jogando você no fundo do poço aqui’.”
Este método de “prova de fogo” de orientar os novatos nasce muitas vezes do ambiente atual de uma equipe; equipes SRE reativas e orientadas por operações “treinam” os seus membros mais recentes fazendo-os…bem, reagir! Uma e outra vez. Se tiver sorte, os engenheiros que já são bons em lidar com a ambiguidade irão rastejar para fora do buraco em que os colocaram. Mas é provável que esta estratégia tenha alienado vários engenheiros capazes. Embora uma tal abordagem possa eventualmente produzir grandes operações de empregados, os seus resultados ficarão aquém das expectativas. A abordagem tentativa por tentativa também pressupõe que muitos ou a maioria dos aspectos de uma equipe podem ser ensinados estritamente através da prática, e não através do raciocínio. Se o conjunto de trabalho que se encontra numa fila de espera de tickets proporcionar formação adequada para o referido trabalho, então esta não é uma posição SRE.
Os alunos da SRE terão questões como as seguintes:
- Em que é que estou trabalhando?
- Quantos progressos já fiz?
- Quando é que estas atividades irão acumular experiência suficiente para eu ficar de plantão?
Dar o salto de uma empresa ou universidade anterior, ao mesmo tempo que muda de funções (de engenheiro de software tradicional ou administrador de sistemas tradicional) para este nebuloso papel de Engenheiro de Confiabilidade do Site é frequentemente suficiente para abalar a confiança dos estudantes várias vezes. Para personalidades mais introspectivas (especialmente em relação às perguntas #2 e #3), as incertezas incorridas por respostas nebulosas ou menos claras podem levar a problemas de desenvolvimento ou retenção mais lentos. Em vez disso, considere as abordagens delineadas nas seções seguintes. Estas sugestões são tão concretas como qualquer ticket ou alerta, mas são também sequenciais, e portanto muito mais gratificantes.
Caminhos de aprendizagem que são cumulativos e ordenados
Coloque alguma ordem de aprendizagem no(s) seu(s) sistema(s) para que os seus novos SREs vejam um caminho à sua frente. Qualquer tipo de treino é melhor do que tickets aleatórios e interrupções, mas façam um esforço consciente para combinar a mistura certa de teoria e aplicação: conceitos abstratos que se repetirão várias vezes na viagem de um novato devem ser carregados de antemão na sua educação, enquanto que o estudante deve também receber experiência prática o mais cedo possível na prática.
Aprender sobre a(s) sua(s) stack(s) e subsistema(s) requer um ponto de partida. Considere se faz mais sentido agrupar as formações por semelhança de objetivos, ou por ordem de execução normal do caso. Por exemplo, se a sua equipe for responsável por uma stack de serviços em tempo real e voltada para o usuário, considere uma ordem curricular como a que se segue:
1) Como uma consulta entra no sistema
Fundamentos de rede e datacenter, balanceamento de carga frontal, proxies, etc.
2) Serviço de frontend
Frontend(s) de aplicação, registro de consultas, experiência do usuário SLO(s), etc.
3) Serviços de nível intermédio
Caches, equilíbrio de carga backend
4) Infraestruturas
Backends, infraestruturas, e recursos computacionais
5) Amarrar tudo junto
Técnicas de depuração, procedimentos de escalonamento, e cenários de emergência.
A forma como escolhe apresentar as oportunidades de aprendizagem (conversas informais em quadro branco, palestras formais, ou exercícios práticos de descoberta) depende de si e dos SREs, ajudando-o a estruturar, conceber e dar formação. A equipe do Google Search SRE estrutura esta aprendizagem através de um documento chamado “on-call learning checklist” (lista de verificação de aprendizagem em plantão). Uma seção simplificada de uma lista de verificação de aprendizagem em regime de plantão pode parecer-se com o seguinte:
O Servidor de Mistura de Resultados (“Mixer”)
Frontend by: Servidor frontend
Backends chamados: Servidor de recuperação de resultados, Servidor de Geolocalização, Base de dados de personalização
Peritos da SRE: Sally W, Dave K, Jen P
Contatos dos promotores: Jim T, equipe de resultados@
Saiba antes de seguir em frente:
- Que aglomerados têm Mixer implantado
- Como reverter uma versão do Mixer
- Que backends de Mixer são considerados “caminho crítico” e porquê
Leia e compreenda os seguintes documentos:
- Visão geral da mistura de resultados: “Seção “Execução da consulta
- Visão geral da mistura de resultados: “Seção “Produção
- Playbook: Como lançar um novo servidor de mistura de resultados
- Uma análise de desempenho do Mixer
Questões de compreensão:
- P: Como é que o calendário de lançamento muda se um feriado da empresa ocorre no dia normal de construção do lançamento?
- P: Como se pode corrigir um mau impulso do conjunto de dados de geolocalização?
Note-se que a seção anterior não codifica diretamente procedimentos, passos de diagnóstico, ou livros de brincar; em vez disso, é uma escrita relativamente à prova de futuro, centrada estritamente na enumeração de contatos de peritos, destacando os recursos de documentação mais úteis, estabelecendo conhecimentos básicos que deve reunir e interiorizar, e fazendo perguntas de sondagem que só podem ser respondidas uma vez que os conhecimentos básicos tenham sido absorvidos. Também fornece resultados concretos, para que o aluno saiba que tipos de conhecimentos e competências terá adquirido ao completar esta seção da lista de verificação da aprendizagem.
É uma boa ideia que todas as partes interessadas tenham uma noção da quantidade de informação que o estagiário está retendo. Embora este mecanismo de feedback talvez não precise ser tão formal como um questionário, é uma boa prática ter trabalhos de casa completos que colocam questões sobre como o(s) seu(s) serviço(s) funciona(m). As respostas satisfatórias, verificadas pelo mentor de um estudante, são um sinal de que a aprendizagem deve continuar para a fase seguinte. As perguntas sobre o funcionamento interno do seu serviço podem parecer semelhantes às seguintes:
- Que backends deste servidor são considerados “no caminho crítico”, e porquê?
- Que aspectos deste servidor poderiam ser simplificados ou automatizados?
- Onde pensa que o primeiro estrangulamento se encontra nesta arquitetura? Se esse estrangulamento fosse saturado, que medidas poderia tomar para o aliviar?
Dependendo de como as permissões de acesso são configuradas para o seu serviço, também pode considerar a implementação de um modelo de acesso por níveis. O primeiro nível de acesso permitiria ao seu aluno o acesso apenas para leitura ao funcionamento interno dos componentes, e um nível posterior permitir-lhe-ia mutilar o estado de produção. A conclusão satisfatória de seções da lista de verificação da aprendizagem em plantão permitiria ao aluno um acesso progressivamente mais profundo ao sistema. A equipe do Search SRE chama a estes níveis atingidos “powerups”. Na rota para o serviço de plantão, uma vez que os estagiários são eventualmente adicionados ao mais alto nível de acesso aos sistemas.
Trabalho de Projeto Orientado, Não Trabalho Braçal
Os SREs são solucionadores de problemas, então dê a eles um problema sério para resolver! Ao começar, ter mesmo um menor sentido de propriedade no serviço da equipe pode fazer maravilhas para a aprendizagem. Pelo contrário, essa propriedade pode também fazer grandes avanços na construção de confiança entre colegas seniores, porque estes abordarão o seu colega júnior para aprenderem sobre o(s) novo(s) componente(s) ou processos. As primeiras oportunidades para a propriedade são padrão no Google em geral: a todos os engenheiros é dado um projeto inicial que se destina a proporcionar uma viagem através da infraestrutura suficiente para lhes permitir dar uma pequena, mas útil contribuição precoce. Fazer com que o novo SRE divida o tempo entre a aprendizagem e o trabalho do projeto também lhes dará um sentido de propósito e produtividade, o que não aconteceria se passassem tempo apenas aprendendo ou trabalhando no projeto. Vários padrões de projetos iniciais que parecem funcionar bem incluem:
- Fazer uma mudança trivial de característica visível pelo usuário numa stack de serviço, e subsequentemente conduzir o lançamento do recurso até a produção. A compreensão tanto da cadeia de ferramentas de desenvolvimento como do processo de lançamento binário incentiva a empatia para com os criadores.
- Adicionar monitoramento ao seu serviço onde existem atualmente pontos cegos. O novato terá de raciocinar com a lógica de monitoramento, conciliando ao mesmo tempo a sua compreensão de um sistema com a forma como ele realmente (mal) se comporta.
- Automatizar um ponto problemático que não é suficientemente problemático para já ter sido automatizado, proporcionando ao novo SRE uma apreciação do valor que os SREs atribuem ao remover o trabalho pesado de nossas operações diárias.
Criação de Engenheiros Inversos e Pensadores de Improvisação Estelar
Podemos propor um conjunto de orientações para a formação de novos SREs, mas em que devemos treiná-los? O material de formação dependerá das tecnologias utilizadas no trabalho, mas a questão mais importante é: que tipo de engenheiros estamos tentando criar? À escala e complexidade em que os SREs operam, não se podem dar ao luxo de serem meros administradores de sistemas tradicionais, centrados nas operações. Para além de terem uma mentalidade de engenharia em grande escala, os SREs devem exibir as seguintes características:
- No decurso dos seus trabalhos, deparar-se-ão com sistemas que nunca viram antes, por isso precisam ter fortes competências de engenharia reversa.
- Em escala, haverá anomalias que são difíceis de detectar, pelo que necessitarão da capacidade de pensar estatisticamente, em vez de processualmente, para desvendar os problemas.
- Quando os procedimentos operacionais padrão se avariarem, terão de ser capazes de improvisar totalmente.
Vamos examinar mais aprofundadamente estes atributos, para que possamos compreender como equipar os nossos SREs para estas competências e comportamentos.
Engenheiros Reversos: Descobrindo como as coisas funcionam
Os engenheiros estão curiosos sobre como os sistemas que nunca viram antes – ou, mais provavelmente, como funcionam as versões atuais dos sistemas que conheciam bastante bem. Ao ter uma compreensão básica de como os sistemas funcionam na sua empresa, juntamente com uma vontade de aprofundar as ferramentas de depuração, os limites do RPC, e logs dos seus binários para desenterrar os seus fluxos, os SREs tornar-se-ão mais eficientes na busca de soluções para problemas inesperados em arquiteturas de sistemas inesperados. Ensine seus SREs sobre as superfícies de diagnóstico e depuração de seus aplicativos e faça com que eles pratiquem fazer inferências a partir das informações que essas superfícies revelam, para que esse comportamento se torne reflexivo ao lidar com interrupções futuras.
Pensadores estatísticos e comparativos: Administradores do Método Científico Sob Pressão
Pode-se pensar na abordagem de um SRE à resposta a incidentes para sistemas de grande escala como navegando através de uma enorme árvore de decisão que se desenrola na frente deles. Na janela de tempo limitada proporcionada pelas exigências de resposta a incidentes, o SRE pode tomar algumas ações entre centenas com o objetivo de mitigar a interrupção, quer a curto quer a longo prazo. Porque o tempo é muitas vezes da maior importância, o SRE tem de podar esta árvore de decisão de forma eficaz e eficiente. A capacidade para o fazer é parcialmente adquirida através da experiência, que só vem com o tempo e a exposição a uma grande variedade de sistemas de produção. Esta experiência deve ser emparelhada com a construção cuidadosa de hipóteses que, quando comprovadas ou refutadas, reduzem ainda mais esse espaço de decisão. Dito de outra forma, a detecção de quebras de sistema é frequentemente semelhante a jogar um jogo de “qual destas coisas não é como a outra?” onde “coisas” podem implicar a versão do núcleo, a arquitetura da CPU, a(s) versão(ões) binária(s) na sua stack, a mistura de tráfego regional, ou uma centena de outros fatores. Arquitetonicamente, é da responsabilidade da equipe assegurar que todos estes fatores possam ser controlados e individualmente analisados e comparados. Contudo, devemos também formar os nossos mais recentes SREs para se tornarem bons analistas e comparadores desde os seus primeiros momentos no trabalho.
Melhorar os Artistas: Quando o Inesperado Acontece
Experimenta-se uma reparação para a quebra, mas não funciona. O(s) revelador(es) por detrás do sistema com falha não são encontrados em lugar algum. O que é que se faz agora? Improvisa! Aprender várias ferramentas que podem resolver partes do seu problema permite-lhe praticar a defesa em profundidade nos seus próprios comportamentos de resolução de problemas. Ser demasiado procedimental face a uma falha, esquecendo assim as suas capacidades analíticas, pode ser a diferença entre ficar preso e encontrar a causa raiz. Um caso de resolução de problemas atolados pode ser ainda mais agravado quando um SRE traz demasiados pressupostos não testados sobre a causa de uma interrupção na sua tomada de decisão. Demonstrar que existem muitas armadilhas analíticas em que os SREs podem cair, que requerem um “zoom out” e uma abordagem diferente da resolução, é uma lição valiosa para os SREs aprenderem desde cedo.
Dados estes três atributos aspiracionais dos SREs de alto desempenho, que cursos e experiências podemos fornecer aos novos SREs para os enviar por um caminho na direção certa? É necessário elaborar o seu próprio conteúdo de curso que incorpore estes atributos, para além dos outros atributos específicos da sua cultura SRE. Consideremos uma classe que acreditamos atingir todos os pontos acima mencionados.
Amarrando tudo isso: Engenharia Reversa um Serviço de Produção
“Quando chegou a hora de aprender [parte da stack do Google Maps], [uma nova SRE] perguntou se, em vez de ter passivamente alguém explicando o serviço, ela poderia fazer isto por si própria – aprendendo tudo através das técnicas da aula de engenharia reversa, e tendo o resto de nós corrigindo/preenchendo os espaços em branco para o que quer que tenha perdido ou se tenha enganado. O resultado? Bem, foi provavelmente mais correto e útil do que teria sido se eu tivesse dado a palestra, e tenho estado de plantão há mais de 5 anos!”
Paul Cowan, Engenheiro de Confiabilidade do Site Google
Uma classe popular que oferecemos no Google chama-se “Reverse Engineering a Production Service (sem a ajuda dos seus proprietários)”. O cenário do problema apresentado parece simples no início. Toda a equipe da Google News-SRE, Engenheiros de Software, Gestão de Produtos, etc., foi numa viagem de empresa: um cruzeiro do Triângulo das Bermudas. Não temos notícias da equipe há 30 dias, então nossos alunos são a recém-nomeada Equipe de SRE do Google News. Eles precisam descobrir como funciona a stack de serviço de ponta a ponta para comandá-la e mantê-la funcionando.
Depois de lhes ter sido dado este cenário, os estudantes são conduzidos através de exercícios interativos e orientados por objetivos, nos quais traçam o caminho de entrada da consulta do seu navegador da web através da infraestrutura do Google. Em cada fase do processo, enfatizamos que é importante aprender múltiplas formas de descobrir a conectividade entre servidores de produção, para que as ligações não sejam perdidas. No meio da turma, desafiamos os alunos a encontrar outro ponto final para o tráfego de entrada, demonstrando que o nosso pressuposto inicial era demasiado estreito. Desafiamos então os nossos alunos a encontrarem outras formas de entrar na stack. Exploramos a natureza altamente instrumentalizada dos nossos binários de produção, que auto-relatam a sua conectividade RPC, bem como a nossa monitorização da caixa branca e da caixa negra disponíveis, para determinar que caminho(s) as consultas dos usuários levam.139 Ao longo do percurso, construímos um diagrama de sistema e também discutimos componentes que são infraestruturas partilhadas que os nossos alunos provavelmente voltarão a ver no futuro.
No final da aula, os alunos são encarregados de uma tarefa. Cada aluno regressa à sua equipe de origem e pede a um SRE sênior que os ajude a selecionar uma stack ou uma fatia de uma stack para a qual estarão de plantão. Utilizando as competências aprendidas nas aulas, o aluno faz então um diagrama da stack e apresenta as suas descobertas ao SRE sênior. Sem dúvida que o aluno perderá alguns detalhes sutis, o que contribuirá para uma boa discussão. É também provável que o SRE sênior também aprenda algo com o exercício, expondo os desvios na sua compreensão prévia do sistema em constante mudança. Devido à rápida mudança dos sistemas de produção, é importante que a sua equipe se congratule com qualquer oportunidade de se familiarizar com um sistema, inclusive aprendendo com os membros mais novos, e não com os mais antigos, da equipe.
Cinco Práticas para Aspirantes plantonistas
Estar de plantão não é o objetivo mais importante de qualquer SRE, mas as responsabilidades de engenharia de produção envolvem normalmente algum tipo de cobertura de notificação urgente. Alguém capaz de assumir de forma responsável para estar de plantão é alguém que compreende o sistema em que trabalha até uma profundidade e amplitude razoáveis. Por isso, usaremos “capaz de estar de plantão” como um substituto útil para “sabe o suficiente e pode descobrir o resto”.
Uma fome de fracasso: Leitura e Partilha de Correspondência
“Aqueles que não se lembram do passado estão condenados a repeti-lo.”
George Santayana, filósofo e ensaísta
Os postmortems (ver Capítulo 15) são uma parte importante da melhoria contínua. São uma forma livre de culpas de se chegar às muitas causas de uma interrupção significativa ou visível. Ao escrever um post-mortem, tenha em mente que o seu público mais apreciado pode ser um engenheiro que ainda não tenha sido contratado. Sem uma edição radical, podem ser feitas alterações sutis aos nossos melhores postmortems para os tornar “ensináveis”.
Mesmo os melhores postmortems não são úteis se definharem no fundo de um gabinete de arquivo virtual. Segue-se que a sua equipe deve recolher e curar valiosos postmortems para servir como recursos educativos para futuros novatos. Alguns postmortems são de corda, mas os “postmortems ensináveis”, que fornecem conhecimentos sobre falhas estruturais ou inovadoras de sistemas de grande escala, são tão bons como o ouro para os novos estudantes.
A propriedade dos postmortems não se limita apenas à autoria. É um ponto de orgulho para muitas equipes terem sobrevivido e documentado as suas maiores interrupções. Recolha os seus melhores postmortems e disponibilize-os de forma proeminente para os seus novatos – para além das partes interessadas de equipes relacionadas e/ou integradoras – para ler. Peça às equipes relacionadas que publiquem os seus melhores postmortems onde possa aceder aos mesmos.
Algumas equipes SRE no Google gerem “clubes de leitura post-mortem”, onde circulam fascinantes e perspicazes postmortems, pré-lidos, e depois discutidos. O(s) autor(es) original(ais) do post-mortem pode(m) ser o(s) convidado(s) de honra na reunião. Outras equipes organizam “contos de fracasso” onde o(s) autor(es) postmortem está(ão) semiformemente presente(s), recontando a interrupção e conduzindo efetivamente a discussão eles próprios.
Leituras ou apresentações regulares sobre cortes, incluindo condições de desencadeamento e passos de mitigação, fazem maravilhas para a construção de um novo mapa mental da SRE e compreensão da produção e da resposta em tempo de espera. Os postmortems são também um excelente combustível para futuros cenários de desastres abstratos.
Desempenho do papel do desastre
“Uma vez por semana, temos uma reunião onde uma vítima é escolhida para estar no local à frente do grupo, e um cenário – frequentemente um cenário real retirado dos anais da história do Google – é atirado a ele ou ela. A vítima, que eu considero como um concorrente a um concurso, diz ao anfitrião do concurso o que faria ou questionaria para compreender ou resolver o problema, e o anfitrião diz à vítima o que acontece com cada ação ou observação. É como o SRE Zork. Está num labirinto de consolas de monitorização sinuosas, todas da mesma forma. Deve evitar que usuários inocentes caiam no abismo da Latência Excessiva de Consulta, salvar os datacenters de um colapso quase certo, e poupar-nos a todos o embaraço da Exibição Errada do Google Doodle.”
Robert Kennedy, antigo Engenheiro de Confiabilidade de Sites para Google Search e healthcare.gov
Quando se tem um grupo de SREs de níveis de experiência muito diferentes, o que você pode fazer para reuni-los e permitir que aprendam uns com os outros? Como é que impressiona a cultura SRE e a natureza de resolução de problemas da sua equipe com um novato, ao mesmo tempo que mantém os veteranos grisalhos informados das novas mudanças e características da sua stack? As equipes SRE do Google abordam estes desafios através de uma tradição consagrada pelo tempo, de desempenhar regularmente um papel de catástrofe. Entre outros nomes, este exercício é geralmente referido como “Roda do Infortúnio” ou “Andar na Prancha”. O sentido de humor que tais títulos emprestam ao exercício torna-o menos intimidante para os SREs recém-contratados.
Na melhor das hipóteses, estes exercícios tornam-se um ritual semanal no qual cada membro do grupo aprende alguma coisa. A fórmula é simples e tem alguma semelhança com um RPG de mesa (Role Playing Game): o “mestre do jogo” (GM) escolhe dois membros da equipe para serem primários e secundários de plantão; estes dois SREs juntam-se ao GM na frente da sala. É anunciado um incidente de entrada, e a equipe de plantão responde com o que fariam para mitigar e investigar a interrupção.
O GM preparou cuidadosamente um cenário que está prestes a desdobrar-se. Este cenário pode basear-se numa interrupção anterior para a qual os membros mais recentes da equipe não estavam presentes ou que os membros mais antigos da equipe se tenham esquecido. Ou talvez o cenário seja uma incursão numa hipotética quebra de um novo elemento ou um elemento a ser lançado em breve na stack, tornando todos os membros da sala igualmente despreparados para lidar com a situação. Melhor ainda, um colega de trabalho poderá encontrar uma nova e inovadora ruptura na produção, e o cenário de hoje expande-se sobre esta nova ameaça.
Durante os próximos 30-60 minutos, os primeiros e os segundos que estão de plantão tentarão atacar o problema pela raiz. O GM felizmente fornece um contexto adicional à medida que o problema se desdobra, talvez informando as pessoas de plantão (e a sua audiência) de como os gráficos no seu painel de controle podem parecer durante a interrupção. Se o incidente exigir uma escalada fora da equipe da casa, o GM finge ser um membro dessa outra equipe para os fins do cenário. Nenhum cenário virtual será perfeito, então, às vezes, o GM pode ter que orientar os participantes de volta aos trilhos, redirecionando os visitantes para longe de pistas falsas, introduzindo urgência e clareza ao adicionar outros estímulos,141 ou fazendo perguntas urgentes e pontuais.142
Quando o seu RPG de desastres for bem sucedido, todos terão aprendido algo: talvez uma nova ferramenta ou truque, uma perspectiva diferente sobre como resolver um problema, ou (especialmente gratificante para os novos membros da equipe) uma validação que poderia ter resolvido o problema desta semana se tivesse sido escolhido. Com alguma sorte, este exercício irá inspirar os colegas de equipe a ansiosamente ansiar pela aventura da próxima semana ou a pedir para se tornar o mestre do jogo para uma próxima semana.
Quebrar Coisas Reais, Consertar Coisas Reais
Um novato pode aprender muito sobre o SRE lendo a documentação, os postmortems, e fazendo cursos de formação. A interpretação de desastres pode ajudar a colocar a mente de um novato no jogo. No entanto, a experiência derivada da experiência prática de quebrar e/ou consertar sistemas de produção reais é ainda melhor. Haverá muito tempo para experiências práticas quando um novato estiver de plantão, mas tal aprendizagem deve acontecer antes de um novo SRE chegar a esse ponto. Portanto, forneça essas experiências práticas muito mais cedo para desenvolver as respostas reflexivas do aluno para usar as ferramentas e o monitoramento de sua empresa para abordar uma interrupção em desenvolvimento.
O realismo é primordial nestas interações. Idealmente, a sua equipe tem uma stack que é multifacetada e provisionada de tal forma que pode desviar pelo menos uma instância do tráfego ao vivo e do empréstimo temporário para um exercício de aprendizagem. Em alternativa, poderá ter uma instância mais pequena, mas ainda assim completa, de encenação ou de garantia de qualidade da sua stack que pode ser emprestada por um curto período de tempo. Se possível, submeta a stack a uma carga sintética que se aproxime do tráfego real do usuário/cliente, para além do consumo de recursos, se possível.
As oportunidades para aprender com um sistema de produção real sob carga sintética são abundantes. Os SREs seniores terão experimentado todo o tipo de problemas: erros de configuração, fugas de memória, regressões de desempenho, consultas de crashing, estrangulamentos de armazenamento, e assim por diante. Neste ambiente realista mas relativamente livre de riscos, os inspetores podem manipular o trabalho definido de forma a alterar o comportamento da stack, forçando novos SREs a encontrar diferenças, determinar fatores contribuintes e, em última análise, reparar sistemas para restaurar o comportamento adequado.
Como alternativa à sobrecarga de pedir a um SRE sênior que planeje cuidadosamente um tipo específico de ruptura que o(s) novo(s) SRE(s) deve(m) reparar, também se pode trabalhar na direção oposta com um exercício que também pode aumentar a participação de toda a equipe: trabalhe a partir de uma boa configuração conhecida e prejudique lentamente a stack em pontos de estrangulamento selecionados, observando os esforços de upstream e downstream por meio de seu monitoramento. Este exercício é valorizado pela equipe do Google Search SRE, cuja versão deste exercício se chama “Vamos queimar um cluster de pesquisa no chão! O exercício prossegue da seguinte forma:
- Como grupo, discutimos que características de desempenho observáveis podem mudar à medida que paralisamos a stack.
- Antes de infligir os danos planejados, sondamos os participantes pelos seus palpites e raciocínios sobre as suas previsões sobre a forma como o sistema irá reagir.
- Validamos os pressupostos e justificamos o raciocínio por detrás dos comportamentos que vemos.
Este exercício, que realizamos trimestralmente, sacode novos bugs que avidamente corrigimos, porque os nossos sistemas nem sempre se degradam de forma tão graciosa como seria de esperar.
Documentação como Aprendizagem
Muitas equipes SRE mantêm uma “lista de verificação da aprendizagem de plantão”, que é uma lista organizada de leitura e compreensão das tecnologias e conceitos relevantes para o(s) sistema(s) que mantêm. Esta lista deve ser internalizada por um estudante antes de ser elegível para servir como sombra de plantão. Tire um momento para rever o exemplo da lista de verificação da aprendizagem de plantão na Tabela 28-2. A lista de verificação da aprendizagem serve diferentes propósitos para diferentes pessoas:
Para o estudante:
- Este documento ajuda a estabelecer os limites do sistema que a sua equipe apoia.
- Ao estudar esta lista, o estudante ganha uma noção de quais sistemas são mais importantes e porquê. Quando compreendem a informação aí contida, podem passar a outros tópicos que precisam aprender, em vez de se deter na aprendizagem de detalhes esotéricos que podem ser aprendidos ao longo do tempo.
Aos mentores e gestores: O progresso dos estudantes através da lista de verificação da aprendizagem pode ser observado. A lista de verificação responde a perguntas como, por exemplo:
- Em que seções está trabalhando hoje?
- Que seções são as mais confusas?
A todos os membros da equipe: O doc torna-se um contrato social pelo qual (após o domínio) o estudante se junta às fileiras do serviço de plantão. A lista de verificação da aprendizagem estabelece o padrão a que todos os membros da equipe devem aspirar e manter.
Num ambiente em rápida mutação, a documentação pode desvincular-se rapidamente. A documentação desatualizada é menos problemática para os SREs seniores que já estão atualizados, porque mantêm o estado no mundo e as suas mudanças nas suas próprias cabeças. Os SREs principiantes precisam muito mais de documentação atualizada, mas podem não se sentir com poderes ou conhecimentos suficientes para fazer alterações. Quando desenhada com a quantidade certa de estrutura, a documentação de plantão pode tornar-se um corpo de trabalho adaptável que aproveita o entusiasmo dos recém-chegados e o conhecimento sênior para manter todos frescos.
No Search SRE, antecipamos a chegada de novo(s) membro(s) da equipe, revendo a nossa lista de verificação de aprendizado de plantão, e ordenando as suas seções pelo seu grau de atualização. À medida que o novo membro da equipe chega, indicamos a eles a lista de verificação geral de aprendizado, mas também os encarregamos de rever uma ou duas das seções mais desatualizadas. Como se pode ver na Tabela 28-2, etiquetamos o SRE sênior e os contatos do programador para cada tecnologia. Encorajamos o estudante a estabelecer uma ligação precoce com esses peritos na matéria, para que possam aprender diretamente o funcionamento interno da tecnologia selecionada. Mais tarde, à medida que se familiarizam com o âmbito e o tom da lista de verificação da aprendizagem, espera-se que contribuam com uma seção revista da lista de verificação da aprendizagem, que deve ser revista por um ou mais SREs seniores que estão listados como peritos.
Sombra de Plantão Cedo e Frequentemente
Em última análise, nenhuma quantidade de exercícios hipotéticos de desastres ou outros mecanismos de treinamento prepararão totalmente um SRE para ficar de plantão. No final das contas, enfrentar as verdadeiras interrupções será sempre mais benéfico de um ponto de vista de aprendizagem do que envolver-se com hipóteses. No entanto, é injusto fazer com que os novatos esperem até à sua primeira chamada real para terem uma oportunidade de aprender e reter o conhecimento.
Depois que o aluno passar por todos os fundamentos do sistema (completando, por exemplo, uma lista de verificação de aprendizado de plantão), considere configurar o seu sistema de alerta para copiar as notificações recebidas para o seu novato, no início apenas durante o horário de trabalho. Confie na sua curiosidade para liderar o caminho. Esses turnos de plantão “sombra” são uma ótima maneira de um mentor obter visibilidade do progresso de um aluno e de um aluno obter visibilidade das responsabilidades de estar de plantão. Ao organizar para o novato fazer sombra a múltiplos membros da sua equipe, a equipe ficará cada vez mais confortável com o pensamento dessa pessoa entrar no turno de plantão. Incutir confiança desta forma é um método eficaz de construir confiança, permitindo que mais membros seniores se destaquem quando não estão de plantão, ajudando assim a evitar o esgotamento da equipe.
Quando chega um alerta, o novo SRE não é o membro de plantão nomeado, condição que elimina qualquer pressão de tempo para o aluno. Têm agora um lugar na primeira fila para a interrupção enquanto esta se desdobra, e não depois que o problema é resolvido. Pode ser que o aluno e o primeiro de plantão de atendimento partilhem uma sessão terminal, ou se sentem perto um do outro para comparar notas prontamente. Num momento de conveniência mútua após a interrupção da sessão, o aluno pode rever o raciocínio e os processos seguidos, em benefício do aluno. Este exercício aumentará a retenção do sombreado de plantão do que realmente ocorreu.
Dica (Conselho)
Caso ocorra uma interrupção para a qual seja benéfico escrever uma post-mortem, o plantonista deve incluir o novato como coautor. Não descarte a escrita apenas no aluno, porque pode ser confundido com o fato de que os postmortems são, de alguma forma, um trabalho pesado para ser passado para os mais jovens. Seria um erro criar uma tal impressão.
Algumas equipes incluirão também uma etapa final: ter a experiente “sombra inversa” do aluno. O novato se tornará o principal de plantão e será o dono de todas as escalações recebidas, mas o experiente de plantão se esconderá nas sombras, diagnosticando independentemente a situação sem modificar nenhum estado. O SRE experiente estará disponível para fornecer apoio ativo, ajuda, validação, e dicas, conforme necessário.
De plantão e Além: Rituais de Passagem, e a Prática da Educação Contínua
À medida que a compreensão aumenta, o estudante atingirá um ponto na sua carreira em que será capaz de raciocinar confortavelmente através da maior parte da stack, e poderá improvisar o seu caminho através do resto. Neste ponto, devem ir de plantão para o seu serviço. Algumas equipes criam uma espécie de exame final que testa os seus estudantes uma última vez antes de lhes conferir poderes e responsabilidades de plantão. Outros novos SREs submeterão a sua conclusão da lista de verificação da aprendizagem em serviço de plantão como prova de que estão prontos. Independentemente da forma como se encerra este marco, estar de plantão é um rito de passagem e deve ser celebrado como uma equipe.
A aprendizagem pára quando um estudante entra para as fileiras de plantão? Claro que não! Para permanecer vigilante como SREs, sua equipe sempre precisará estar ativa e ciente das mudanças que estão por vir. Enquanto a sua atenção está noutro lugar, partes da sua stack podem ser rearquitetadas e alargadas, deixando o conhecimento operacional da sua equipe como histórico, na melhor das hipóteses.
Estabeleça uma série de aprendizagem regular para toda a sua equipe, onde as visões gerais das mudanças novas e futuras em sua stack, são dadas como apresentações pelos SREs que estão conduzindo as mudanças, que podem copresentar com os programadores conforme necessário. Se puder, grave as apresentações para que possa construir uma biblioteca de formação para futuros estudantes.
Com alguma prática, ganhará muito envolvimento oportuno tanto dos SREs dentro da sua equipe como dos programadores que trabalham em estreita colaboração com a sua equipe, tudo isto enquanto mantém a mente de todos fresca sobre o futuro. Existem também outros locais de envolvimento educacional: considere a possibilidade de ter SREs dando palestras aos seus colegas desenvolvedores. Quanto melhor os seus pares de desenvolvimento compreenderem o seu trabalho e os desafios que a sua equipe enfrenta, tanto mais fácil será chegar a decisões totalmente informadas sobre projetos posteriores.
Reflexões finais
Um investimento inicial na formação do SRE vale absolutamente a pena, tanto para os estudantes ansiosos por compreender o seu ambiente de produção como para as equipes gratas por acolherem os estudantes nas fileiras de plantão. Através da utilização de práticas aplicáveis delineadas neste capítulo, criar-se-ão SREs bem fundamentadas mais rapidamente, ao mesmo tempo que se aperfeiçoam as competências das equipes para sempre. A forma como se aplicam estas práticas depende de si, mas a carga é clara: como SRE, tem de escalar os seus humanos mais rapidamente do que escalar as suas máquinas. Boa sorte para si e para as suas equipes na criação de uma cultura de aprendizagem e ensino!