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 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. interrupção recente 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: Compreendendo a função da engenharia de liberação. Com o que os engenheiros de software se importam e com o que não se importam. Impacto da entrega contínua (CD). Uma olhada nas implantações manuais. Problemas com implantação manual e a solução para esses problemas. Engenharia de Liberação 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: padronizar os processos de lançamento reduz o risco de implantações ruins na produção. Implantações consistentes e repetíveis: : processos padronizados também garantem que as equipes estejam equipadas para lidar com incidentes prejudiciais no ambiente de produção — por exemplo, uma estratégia de reversão para cenários em que uma versão causa problemas. Redução de interrupções de serviço procure melhorias de desempenho para implantações mais rápidas e confiáveis. Monitore e otimize o desempenho: trabalhe em estreita colaboração com desenvolvedores, equipes de controle de qualidade e DevOps para garantir que todos os serviços novos e existentes tenham um processo de implantação bem definido. Colabore com a engenharia: Com o que os engenheiros de software se importam 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: a mesclagem rápida permite que eles validem seu trabalho e passem para novas tarefas ou desbloqueiem tarefas dependentes. Mesclagens rápidas de código: : embora os engenheiros possam não se importar com todos os incidentes de produção, eles definitivamente se importam com as mudanças no código que causam interrupções na produção. Incidentes de produção : os engenheiros também gostam de monitorar quando suas alterações são publicadas ou já foram publicadas para que possam ter acesso ao feedback em tempo real sobre suas alterações. Cronograma de implantação O que os engenheiros de software não se importam Embora haja coisas com as quais nos importamos, também há aquelas com as quais não nos importamos: : Embora saibamos da necessidade de um processo de implantação eficiente e confiável, eles não se importam com a forma como ele é executado. Metodologia de implantação : A menos que as coisas deem errado, não nos preocupamos com alterações não relacionadas de outros desenvolvedores. Efeito de outras alterações : Um engenheiro é indiferente a quem gerencia a implantação em uma equipe de software. Por exemplo, só nos importaríamos em gerenciar a implantação se tivéssemos a tarefa de fazê-lo. Gerenciamento de implantação Impacto das implantações contínuas (CD) 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 . As implantações contínuas removem o “humano no circuito”, portanto, exigem uma forte confiança na infraestrutura de teste. psicológica Em outras palavras, os testes automatizados não só garantem a confiabilidade da produção, mas também fornecem , à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. segurança psicológica 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. Implantações manuais Apesar das desvantagens, a maioria das equipes gerencia as implantações manualmente. Uma implantação manual típica pode incluir algumas etapas: Supervisão 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. Equipes de lançamento dedicadas 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. Planilhas 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. Controle de qualidade manual 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. Onde as coisas dão errado com implantações manuais? Muitas coisas podem dar errado para qualquer equipe de desenvolvimento de software que dependa apenas de implantações manuais: Dependência de um pequeno grupo 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. Nenhuma estratégia de mitigação de risco 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. Propenso a erros humanos Erros tipográficos em comandos ou scripts, ou esquecimento de executar as etapas de pré-implantação ou pós-implantação. Alto esforç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. Falha de comunicação 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. O que podemos fazer sobre isso? 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: fornecer guarda-corpos para evitar incidentes de produção reduzir erros humanos permitir que qualquer pessoa acione implantações garantir que as implantações aconteçam com frequência Guardrails – Canary e Rollbacks 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. Reduzir Erros Humanos – Padronização Defina metodologias de implantação padrão que resultem em eficiência, consistência, confiabilidade e alta qualidade de software. Em seu , 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. relatório de estado do DevOps a DORA Democratizar o processo de implantação 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! Implantações frequentes 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. Melhore a experiência do desenvolvedor 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. Estratégias de mitigação de riscos definidas 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. Bandeiras de recursos 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. Conclusão 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: Invista na padronização dos processos de implantação. Configure estratégias bem definidas de mitigação de riscos, como lançamentos canários, implementações estratégicas, reversões e hotfixes. Simplifique a experiência do desenvolvedor democratizando as implantações e incentive todos a participar. 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