paint-brush
Implantações: O medo irracional delaspor@aviator
Novo histórico

Implantações: O medo irracional delas

por Aviator7m2024/09/30
Read on Terminal Reader

Muito longo; Para ler

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.
featured image - Implantações: O medo irracional delas
Aviator HackerNoon profile picture



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:


  • 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:


  • Implantações consistentes e repetíveis: padronizar os processos de lançamento reduz o risco de implantações ruins na produção.


  • Redução de interrupções de serviço : 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.


  • Monitore e otimize o desempenho: procure melhorias de desempenho para implantações mais rápidas e confiáveis.


  • Colabore com a engenharia: 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.

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:


  • Mesclagens rápidas de código: a mesclagem rápida permite que eles validem seu trabalho e passem para novas tarefas ou desbloqueiem tarefas dependentes.


  • Incidentes de produção : 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.


  • Cronograma de implantaçã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.

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:


  • Metodologia de implantação : 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.


  • Efeito de outras alterações : A menos que as coisas deem errado, não nos preocupamos com alterações não relacionadas de outros desenvolvedores.


  • Gerenciamento de implantação : 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.

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 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.

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 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

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 .