A ansiedade das implantações é real. Vamos tentar entender as emoções humanas relacionadas à implantação e aprender as melhores práticas para minimizar o medo.
Uma interrupção recente envolvendo CrowdStrike impactou 8,5 milhões de sistemas operacionais Windows, levando a interrupções em vários serviços globais, incluindo companhias aéreas e hospitais. Múltiplas análises examinaram a causa raiz deste incidente em si.
No entanto, como engenheiro de software, acho que estamos perdendo o aspecto das emoções humanas relacionadas a implantações, especificamente o medo de interromper a produção. É nisso que tentaremos nos aprofundar neste artigo. Abordaremos:
Antes de nos aprofundarmos no medo de implantações da perspectiva de um engenheiro de software, vamos primeiro entender o papel de um engenheiro de lançamento. A engenharia de lançamento evoluiu consideravelmente nos últimos anos, graças às ferramentas modernas de CI e CD e à padronização do Kubernetes. Apesar desses avanços, as principais responsabilidades permanecem as mesmas:
Ao contrário dos engenheiros de lançamento, como engenheiros de software que trabalham na equipe de produto, podemos nos importar apenas com certos aspectos das implantações:
Embora haja coisas com as quais nos importamos, também há aquelas com as quais não nos importamos:
Então o que o medo tem a ver com implantações contínuas?
Bastante.
Estudos comprovaram [vários benefícios](https://dora.dev/capabilities/continuous-delivery/#:~:text=DevOps%20Research%20and%20Assessment%20(DORA,as%20higher%20levels%20of%20availability) da Implantação Contínua (CD) e, sem surpresa, muitos dos quais são de natureza psicológica . As implantações contínuas removem o “humano no circuito”, portanto, exigem uma forte confiança na infraestrutura de teste.
Em outras palavras, os testes automatizados não só garantem a confiabilidade da produção, mas também fornecem segurança psicológica , às vezes irracionalmente, reduzindo o medo de implantações. Como desenvolvedor, estou mais confortável fazendo alterações em um processo de CD do que se me pedirem para verificar as alterações manualmente.
No entanto, apesar da popularidade dessas estratégias de CD, muitas empresas ainda acionam implantações manualmente (têm um humano no circuito), indicando uma abordagem cautelosa para implementações de CD. Esse comportamento sugere que as equipes preferem manter a supervisão do processo de lançamento e intervir quando necessário.
É importante entender isso de uma perspectiva de segurança psicológica. Implantações manuais implicam que alguém está supervisionando o processo e lidando com problemas quando as coisas dão errado. Embora isso forneça uma sensação de segurança, também pode induzir medo na pessoa que está implantando e é propenso a erro humano.
Apesar das desvantagens, a maioria das equipes gerencia as implantações manualmente. Uma implantação manual típica pode incluir algumas etapas:
Alguém cuida de todo o processo de implantação antes que uma versão seja lançada. Essa pessoa é encarregada de intervir quando e se houver sinais de problemas. As equipes mantêm uma pessoa de plantão que gerencia suas implantações e lida com problemas quando eles surgem.
Algumas equipes têm uma equipe dedicada de engenharia de lançamento, o que garante que os lançamentos ocorram sem problemas. Como isso significa um alto grau de especialização, o processo de implantação pode ser mais eficiente e confiável.
Algumas empresas mantêm uma planilha para validar quaisquer alterações feitas. Isso permite que as empresas revisem e aprovem sistematicamente essas alterações, garantindo que elas atendam aos padrões de qualidade predefinidos.
Além das planilhas, o QA manual é outra camada que as empresas adicionam. O QA manual testa novos lançamentos em ambientes de preparação antes de implementá-los na produção. No entanto, um ambiente de teste não é infalível, então alguns cenários da vida real não serão contabilizados.
Muitas coisas podem dar errado para qualquer equipe de desenvolvimento de software que dependa apenas de implantações manuais:
Isso pode criar gargalos, que levam a atrasos de liberação e erro humano em alguns casos. Além disso, uma equipe pode ter problemas quando essa pessoa específica sai ou não consegue entregar as tarefas necessárias.
Não há estratégia para dar continuidade a um incidente de produção desfavorável. Quando um incidente acontece, a equipe de lançamento tem que lutar para encontrar os stakeholders relevantes para ajudar a resolver e tomar decisões.
Erros tipográficos em comandos ou scripts, ou esquecimento de executar as etapas de pré-implantação ou pós-implantação.
Como as implantações exigem babá do processo, isso se torna um esforço demorado. Também faz com que a frequência das implantações caia significativamente. Por exemplo, se for necessária uma hora para monitorar toda a implantação, a equipe de lançamento pode decidir pular as implantações nos dias com pequenas alterações para economizar esse tempo.
Não está claro para as equipes de produtos o estado dos lançamentos e quando suas alterações entrarão em produção.
Olhando para esses desafios, é fácil entender por que os engenheiros temem implantações. O risco de falhas de implantação, os altos riscos e a pressão para manter o tempo de inatividade baixo também contribuem para esse medo.
Essas falhas podem ser minimizadas aumentando a automação de testes. Ainda assim, como esses testes são realizados em um ambiente de teste, você não deve esperar que um teste automatizado capture todos os erros possíveis. Falhas são esperadas, mas em uma taxa reduzida.
Simplesmente configurar implantações contínuas? Mais fácil falar do que fazer. Apesar das desvantagens, implantações manuais ainda são aceitáveis se bem gerenciadas. As metas devem ser:
As estratégias Canary e Rollback podem ajudar a reduzir o impacto de uma interrupção e, em muitos casos, evitar a crise automaticamente.
Um lançamento canário expõe seu novo lançamento a uma pequena porção do tráfego do ambiente de produção. Isso dá às equipes insights sobre problemas que podem não ter surgido durante os testes.
Por outro lado, uma estratégia de rollback ajuda os engenheiros a reverter uma versão para seu estado de versão estável anterior. Ela é feita quando novos problemas surgem após implantações no ambiente de produção.
Defina metodologias de implantação padrão que resultem em eficiência, consistência, confiabilidade e alta qualidade de software. Em seu relatório de estado do DevOps , a DORA mostra que a confiabilidade prevê melhor desempenho operacional. Além disso, ter um processo padronizado permite repetibilidade em processos de lançamento, que podem ser automatizados. Automatizar esse processo ajuda uma equipe a manter os custos de produção mais baixos.
Democratizar o processo de implantação remove a dependência de indivíduos específicos. Se dermos poder a qualquer engenheiro de software para implantar, isso reduz lentamente o medo. “Se “qualquer um pode implantar, não deve ser tão difícil.” Compartilhe seus legos!
Para reduzir a ansiedade de implantação, precisamos implantar com mais frequência, não menos. O relatório DORA também destaca que implantações em lote menores têm menos probabilidade de causar problemas e ajudam a diminuir a barreira psicológica para desenvolvedores.
Esclarecer o que está sendo implantado aprimora a experiência do desenvolvedor. Facilite para os desenvolvedores saberem quando as implantações ocorrem e quais alterações estão incluídas. Essa transparência ajuda os desenvolvedores a rastrear quando suas alterações entram em vigor e simplifica as investigações de incidentes.
Deve haver etapas definidas a serem seguidas para rollbacks e hotfixes, pois isso ajuda a eliminar qualquer indecisão com incidentes de produção. Por exemplo, deve haver etapas separadas de build e deploy para as equipes seguirem para rollbacks fáceis.
Da mesma forma, padronizar a forma de lidar com correções e escolhas seletivas pode simplificar a operação quando os riscos são altos.
Os sinalizadores de recurso são como kill-switches que podem desligar um novo recurso que causou um incidente na produção. Isso pode permitir que os engenheiros resolvam incidentes de produção rapidamente.
As equipes de software devem tratar a engenharia de lançamento como uma prioridade desde o início do desenvolvimento do produto para evitar erros dispendiosos. E não devemos deixar que incidentes como a interrupção do Crowdstrike prejudiquem nossas práticas de desenvolvimento. Lidar com o medo da implantação e prevenir incidentes de produção envolve várias estratégias-chave:
Na Aviator, estamos construindo ferramentas de produtividade para desenvolvedores desde os primeiros princípios para capacitar os desenvolvedores a construir mais rápido e melhor. Para uma maneira moderna de gerenciar implantações, confira Aviator Releases .