Em 20 de julho, 8,5 milhões de dispositivos com Windows travaram quando a gigante da segurança cibernética CrowdStrike lançou uma atualização de software defeituosa. A interrupção resultante causou estragos em quase todos os principais setores empresariais: voos foram cancelados, procedimentos médicos foram adiados e estações de notícias não puderam transmitir.
Para as empresas afetadas, as implicações de custo podem chegar a dezenas de bilhões de dólares. No entanto, esse incidente é parte de um problema muito maior e crescente. A má qualidade do software custou à economia dos EUA pelo menos US$ 2,41 trilhões em 2022. Com clientes e funcionários cada vez mais dependentes de serviços digitais, as organizações precisam reavaliar urgentemente como entregam software para se protegerem de falhas futuras.
Um desafio crescente
Para aqueles que querem garantir que sua empresa não se torne a próxima manchete em uma grande interrupção de TI, o desafio está na facilidade com que erros passam despercebidos. Embora os engenheiros testem rigorosamente seus códigos, o grande volume de lançamentos significa que é inevitável que bugs às vezes escapem, mesmo dos desenvolvedores mais experientes. Em vez de esperar que os desenvolvedores entreguem códigos perfeitos todas as vezes, as organizações precisam fornecer a eles os meios para gerenciar riscos de forma eficaz.
Se as equipes de desenvolvimento da CrowdStrike tivessem conseguido lançar atualizações incrementalmente e reverter instantaneamente para uma versão anterior ao primeiro sinal de problema, a interrupção mundial em julho poderia ter sido evitada. Com regulamentações da UE como DORA e NIS2 no horizonte, as organizações precisam priorizar a capacitação de seus desenvolvedores com esses recursos para manter a confiabilidade do serviço e evitar o acionamento de uma grande interrupção. Não fazer isso pode resultar em multas por não conformidade de até 2% da receita global anual, além de danos à sua reputação e perda imediata de receita.
Adotando práticas modernas de DevOps
A maneira mais eficaz de controlar os riscos da inovação orientada por software é enviar sistematicamente atualizações para pequenos lotes de usuários, monitorar resultados e ajustar o código com base no feedback ou comportamento. Isso pode ser melhor alcançado com plataformas DevOps modernas que suportam o processo de ponta a ponta e fornecem as ferramentas que os desenvolvedores precisam para entregar atualizações de software rápidas e confiáveis. Junto com a automação, dois recursos cruciais para aumentar a confiabilidade e minimizar o risco de bugs incluem implantações canary e sinalização de recursos.
As implantações canárias envolvem fazer lançamentos em estágios para um pequeno grupo de usuários antes de uma implementação completa. Isso permite que os usuários testem a atualização e forneçam feedback, reduzindo a interrupção e mitigando o risco de grandes interrupções se um bug estiver presente. As organizações podem garantir que a nova versão seja confiável antes de entregá-la a todos os usuários. Os sinalizadores de recursos fornecem mais controle, permitindo que os desenvolvedores ativem e desativem a funcionalidade em serviços ativos sem implementar um novo código. Isso permite que os engenheiros desabilitem imediatamente a funcionalidade problemática e revertam a atualização, evitando qualquer impacto nos usuários e permitindo mais liberdade experimental.
Um problema de pipeline
É da natureza humana querer agir rapidamente, especialmente ao entregar pequenas atualizações. Os desenvolvedores não são diferentes. Na pressa de entregar o código, os engenheiros são conhecidos por pular etapas no processo de desenvolvimento. As organizações devem incorporar recursos como sinalização de recursos e implantações canárias no pipeline de entrega. Elas não podem permitir que os processos de controle de qualidade sejam ad hoc, especialmente em organizações maiores com centenas ou milhares de engenheiros.
Para resolver isso, é importante criar um pipeline automatizado que garanta que todas as verificações e balanços sejam concluídos sem comprometer a velocidade. Uma abordagem eficaz é aderir às práticas de engenharia de plataforma. Isso envolve uma equipe central estabelecendo um portal de desenvolvedor interno (IDP) onde as equipes podem autoatendimento dos recursos necessários para automatizar tarefas de desenvolvimento de baixo valor, como testes, e usar pipelines de entrega padronizados com implantações canary integradas e sinalização de recursos.
Esse tipo de controle de qualidade automatizado torna muito mais fácil garantir que as versões de código estejam livres de bugs antes da implantação. É como ter um sistema inteligente o suficiente para recuperar software instantaneamente e corrigir automaticamente todos os bugs sem intervenção humana ou coleta de dados. Essa será uma ferramenta crucial para desenvolvedores, pois eles buscam acelerar a inovação sem distrações.
Um chamado para despertar
A indisponibilidade do CrowdStrike serviu como um lembrete severo do impacto que falhas de software podem ter em empresas de todos os setores no mundo todo. À medida que avançamos em direção a um mundo cada vez mais digital e altamente regulamentado, a importância da confiabilidade do software não pode ser exagerada.
Este último incidente foi um inconfundível chamado de despertar para que as organizações garantam que suas equipes de desenvolvimento estejam capacitadas para usar práticas modernas de DevOps de forma eficaz, garantindo um processo de entrega de software robusto e confiável. Por fim, essas capacidades permitirão que as equipes de desenvolvimento se concentrem em acelerar a inovação sem a ameaça iminente de falhas catastróficas.
Crédito da imagem: Alexandersikov / Dreamstime.com
Martin Reynolds é CTO de campo na Harness.