O que é TOIL? Quais suas características? Quais são os passos para a redução?
Seguindo com a série de conceitos básicos do SRE, chegou a vez de entendermos o que é toil.
A definição de Vivek Rau sobre toil é simples e direta ao ponto:
"Toil é um tipo de trabalho vinculado à execução de um serviço de produção que tende a ser manual, repetitivo, automatizável, tático, desprovido de valor duradouro e que se dimensiona linearmente à medida que o serviço cresce."
Muito parecido com a história de Sísifo, não?! Mas Antes de darmos alguns exemplos, vamos entender melhor as características do toil:
- Manual: depende de uma pessoa para executar algo, como um script;
- Repetitiva: executa a mesma rotina repetitivamente;
- Automatizável: tarefas que uma máquina pode executar tão bem quanto um ser humano;
- Tático: tarefas orientadas por interrupções e reativas;
- Desprovido de valor: quando o serviço permanece no mesmo estado após executar a tarefa;
- Linear: é o trabalho envolvido em uma tarefa que cresce em escala linear a medida que o tamanho do serviço aumenta, ou o volume de tráfego ou o volume de usuários.
Se a tarefa se encaixa em pelo menos em uma dessas características ela é considerada um toil (que a literatura de SRE em português comumente traduz para "trabalho penoso").
Alguns exemplos clássicos de toil são: sabe aquele script que você usa todos os dias para corrigir dados na base de dados? Então, é um toil (manual e repetitiva). Ou aquele procedimento documentado (conecte em um servidor X, execute o script Y)? Também é um toil (automatizável). Ou aquela requisição que o time do Departamento Fiscal abre todo o mês para extração de dados para o fechamento fiscal? Pois é, toil (desprovido de valor). E por ai vai…
Segundo o relatório "SRE Report 2021" da Catchpoint, em média 25% do tempo do time de SRE foi gasto na execução de toils 2021. É menor que em 2020, que estava na casa dos 40%, mas ainda é um tempo considerável.
Lembrem-se, uma das principais diretrizes do SRE é a meta de manter o trabalho operacional (ou seja, toil) abaixo dos 50% do tempo de cada SRE. No mínimo 50% do tempo de cada SRE deve ser gasto em trabalho de engenharia de melhoria dos serviços ou de redução de toil.
Mas por que o toil é tão ruim? Quem já trabalhou em Operação de TI tem essa resposta na ponta da lingua… por vários motivos:
- Estagnação da carreira: muitas tarefas repetitivas e sem valor sobrecarregam as pessoas, eliminando o tempo para trabalhar em melhorias e para o desenvolvimento das habilidades;
- Baixo moral: tédio, insatisfação, esgotamento… quem gosta de executar os mesmos scripts todos os dias?
- Progresso lento: muito trabalho em toil significa menos velocidade para trabalhar em melhorias, dificultando que o time de SRE entregue valor consistente para a organização;
- Gera precedentes: o time de SRE assumindo demasiadamente as tarefas penosas abre a porteira para o time de DEV realizar entregas de soluções baseadas em tarefas penosas (aquelas que só funcionam com alguém apertando os botões todos os dias);
- Promovem atritos: os melhores engenheiros não estão dispostos a passar maior parte do tempo executando tarefas de baixo valor;
- Qualidade ruim: tarefas manuais podem resultar em erros humanos, trazendo ainda mais problemas para a reputação e sobrecarregando ainda mais o time de SRE.
“Se você não tiver cuidado, o nível de toil em uma organização pode aumentar a um ponto em que a organização não terá a capacidade necessária para impedí-lo” (Damon Edwards, Rundeck).
Em contrapartida, reduzindo o toil o time terá maior tempo para participar em projetos que realmente entrega valor para a organização, aumentará o orgulho e moral, aumentará a produtividade com a redução de interrupções e com a padronização dos processos e diminui a interrupção dos serviços por erros humanos.
Então tudo deve ser automatizado? NÃO! O time de SRE sempre terá que executar uma % do seu tempo em trabalhos manuais. Existem 2 caraterísticas básicas que devem ser levadas em consideração para tomar a decisão de automatizar ou não uma tarefa penosa:
A primeira é a eficiência. É importante entender se a tarefa manual está eficiente o bastante para ser automatizada. Automatizar ineficiência só irá colaborar para a inserção de mais desperdício na execução do trabalho.
A segunda é o tempo que será gasto para eliminar o toil, ou seja, o tempo salvo de execução da tarefa penosa deve ser, no mínimo, proporcional ao tempo investido no desenvolvimento da automação e no posterior tempo de manutenção.
Então, se a tarefa já estiver eficiência o bastante e o tempo salvo na automação compensar o tempo necessário para desenvolver e manter a automação, essa tarefa é uma forte candidata para ser automatizada.
Uma vez decidido automatizar uma tarefa penosa, lembre-se que reduzir toil requer tempo de engenharia, que será a escolha de:
- Criação de automação externa, que são scripts ou ferrametas de automação do lado de fora do serviço;
- Criação de automação interna, que é a automação entregue como parte do serviço (self atendimento, por exemplo);
- Aprimoramento do serviço, que são as melhorias necessárias para eliminar a necessidade de intervenção.
Aqui temos um ponto muito importante: é preciso ter um workflow e ferramentas de automação acopladas no stack de TI. Sem isso a redução de toil será um trabalho de muito heroísmo e pouco resultado.
E para finalizar, abaixo está uma sugestão dos passos para redução do toil:
1- Identifique e faça a medição do toil (para medir escolha uma medida apropriada como o tempo de execução de uma tarefa, quantidade de pessoas envolvidas, quantidade de tickets que exigem a execução daquela tarefa manual…);
2- Analise o custo benefício, principalmente se o tempo salvo é suficiente para investir nessa automação;
3- Analise o risco. A automação pode salvar o esforço humano mas pode trazer consequências inapropriadas como instabilidade no serviço);
4- Programe entregas incrementais, tenha o controle do backlog de toil, dos itens em andamento e das entregas;
5- Ao entregar a automação, continue a medição para entender a efetividade da solução entregue;
6- E faça a melhoria contínua, redução de toil não é um projeto, é uma atividade contínua do time de SRE.
Toil é algo que corrói o dia a dia dos times de SRE. Sem o devido controle ele pode tomar conta da maior parte do tempo da equipe trazendo um trabalho bastante massante e sem visibilidade, baixando a moral do time. Invista tempo e dinheiro (com plataformas e workflow de automação) para eliminar o toil e aumente a moral do time e a eficiência da sua operação de TI.
Siga a série de conceitos básicos de SRE:
- Guia dos Conceitos Básicos (https://medium.com/@mclortizz/guia-dos-conceitos-b%C3%A1sicos-do-sre-ab91f0b7531d).
- Vídeo sobre os Conceitos Básicos: https://www.youtube.com/watch?v=9uvS6WeCuVg&t=172s
- SLOs e Error Budget (https://medium.com/@mclortizz/o-que-%C3%A9-sli-slo-error-budget-e-como-isso-evita-a-fal%C3%AAncia-do-sla-3ebfee7c140c).
- Observabilidade (https://medium.com/@mclortizz/1e60194cc337).
- Redução de Toil (esse aqui).
- Aprendizagem com a falha (e sem culpa) (https://medium.com/@mclortizz/post-mortem-sem-culpa-5a36f27b885b).
Para quem quer buscar mais informações, deixo alguns livros e sites interessantes sobre SRE:
- Livro: Engenharia de Confiabilidade do Google (https://sre.google/sre-book/table-of-contents/)
- Livro: The Site Reliability Workbook (https://sre.google/workbook/table-of-contents/)
- Site da Catchpoint sobre o relatório "2021 SRE Report): https://pages.catchpoint.com/2021-sre-report-mkty?submissionGuid=642f0f92-df2e-40cd-b182-825ca00eca64
- Site Google SRE: https://sre.google/
- Wikipédia sobre o Sísifo: https://pt.wikipedia.org/wiki/S%C3%ADsifo
Obrigado e até a próxima.
Marcelo Ortiz
Engenheiro da Computação, mestrando em Ciências da Computação.