Partindo do princípio de que incidentes são intrínsecos a quem trabalha com tecnologia, é fundamental refletir sobre a criação de sistemas com maior resiliência. Para isso, é necessário planejar que a esteira de desenvolvimento, composta por ferramentas, processos e validações, chegue a um estágio tal que garanta aos times de engenharia e de produtos agilidade para inovar sem ter que ficar testando a torto e a direito, ou viver sob o temor paralisante de incidentes.
O ideal é que a maioria das plataformas básicas da engenharia já estejam testadas, para que seja baixa a chance de uma equipe “quebrar” algo muito grande. Quanto mais débitos técnicos, disparidades e ausência de validações, maior é a insegurança do time. Só que há áreas de uma empresa ou instituição, como a de desenvolvimento de produtos novos, que precisam andar rápido e validar suas ideias de forma veloz, sem sofrer com tanta insegurança.
O arcabouço operacional bem feito serve justamente para isolar essas áreas de problemas maiores, para que uma mudança não gere um maremoto de contratempos.
Um sistema automatizado de freezes, ou seja, congelamento de mudanças de código em momentos decisivos para a empresa, como uma data de grande volume de negócios ou uma situação em que a equipe esteja reduzida, funciona para limitar as consequências de incidentes. A automatização impede que haja brechas para driblar manualmente o congelamento. Freezes precisam ser usados com parcimônia, para não gerar um acúmulo de mudanças de código simultâneas, que são uma receita para incidentes difíceis de dirimir.
O registro automático de todas as operações no código é uma prática que ajuda a rastrear os incidentes e determinar o que aconteceu, e deve estar construído dentro das ferramentas de alterações. Essas informações ajudam tanto no processo do war room, no auge do incidente, quanto no post mortem para identificar suas causas.
Uma boa gestão de mudanças de códigos e deploys inclui também a capacidade de reverter automática e rapidamente uma alteração, caso sejam detectados problemas. Nem sempre isso é possível de programar, mas é uma habilidade que precisa estar no horizonte de qualquer mudança.
Inteligência artificial
Ferramentas de inteligência artificial ajudam bastante a evitar e enfrentar incidentes de tecnologia, porque podem ser integradas ao ambiente de desenvolvimento da empresa e exercer várias funções. Pode-se, por exemplo, gerar testes unitários de validação para determinado código novo. Com esse apoio da IA, o grau de confiança cresce muito.
Inteligência artificial é um elemento facilitador, embora humanos ainda tenham que se envolver para monitorar se aquele código gerado é bom e, se for, encaminhá-lo para a revisão. Se a inteligência artificial alucinar e criar alguma coisa que não funciona ou que é falsa, o processo de revisão de código deve entrar em ação. Os processos de engenharia já envolvem humanos naturalmente (human in the loop), o que torna o uso de copilotos para desenvolvimento de código uma aplicação de IA bem propícia.

Marcus Fontoura
Marcus Fontoura é atualmente technical fellow na Microsoft e CTO do Azure Core. Iniciou a carreira na área de pesquisa da IBM em 2000, depois de concluir o doutorado na PUC-Rio e o pós-doutorado na Universidade de Princeton, nos Estados Unidos. Teve passagens pelo Yahoo! e pelo Google, e promoveu uma transformação digital na fintech brasileira StoneCo, onde atuou como CTO. É autor do livro Tecnologia Intencional e publisher da plataforma com o mesmo nome.