Superando o medo das Implantações: Estratégias para Equipes de Software

Superando o medo das Implantações: Estratégias para Equipes de Software

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. Várias 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

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 (e com o que não 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.

Por outro lado, há coisas 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.

O impacto das Implantações Contínuas (CD)

Estudos comprovaram vários benefícios da Implantação Contínua (CD) e, sem surpresa, muitos deles são de natureza psicológica. 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 apenas 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, me sinto mais confortável fazendo alterações em um processo de CD do que se me pedissem 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.

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

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

Related Content

Back to blog

Leave a comment

Please note, comments need to be approved before they are published.