O que é a implementação de software?

Concluído

De acordo com a Wikipédia, "implantação de software" é composto por todas as atividades que tornam um sistema de software disponível para uso. O processo geral de implantação consiste em várias atividades inter-relacionadas, com possíveis transições entre elas. Cada sistema de software é único. Por isso, a "implementação" deve ser interpretada como um processo geral que tem de ser personalizado de acordo com características ou requisitos específicos.

Alguns usam os termos "implantação" e "instalação" de forma intercambiável, mas a instalação do software é apenas uma parte do processo de implantação. A implementação envolve muito mais. As atividades de implementação podem incluir:

  • "Empilhamento e empilhamento" de um servidor.
  • Implantar um software atualizado nesse servidor.
  • Usando coisas como scripts e infraestrutura como código.
  • Mesmo andando por um escritório com uma unidade USB, instalando manualmente o software em computadores.

A implementação manual de software é um processo trabalhoso e não dimensiona bem. A automação torna mais fácil e econômico garantir a consistência ao implantar novo software ou atualizar o software existente em uma organização.

Nosso foco como parte desse caminho de aprendizado é a melhor forma de implantar software para confiabilidade. Este módulo aborda não apenas a implantação de software, mas também a implantação de infraestrutura em nuvem. As referências à implementação de um serviço ou solução podem significar a implementação de software, infraestrutura de cloud, configuração e todas as atividades necessárias para disponibilizar de forma fiável um sistema de software para utilização.

Cenário: A implantação épica

A palavra épico significa "grandioso, monumental ou vasto", mas, no contexto desta discussão, não é uma coisa boa. O termo "épico" foi criado por Jez Humble em seu livro Continuous Delivery: Reliable Software Releases through Build, Test, and Deployment Automation porque representa um empreendimento massivo (e massivamente disruptivo). Eis um exemplo de como acontece normalmente:

  • Uma organização desenvolve uma aplicação relacionada com vendas. Esta aplicação é atualizada exatamente duas vezes por ano.
  • Durante essas atualizações, todos os novos recursos, correções de bugs (grandes e pequenos) e atualizações de dependência são implantados.
  • A primeira implementação do ano está agendada para ocorrer durante o fim de semana do Dia do Trabalhador e a segunda terá lugar no fim de semana após o Dia de Ação de Graças.
  • Cada atualização é uma situação que requer a participação de todos os departamentos. A equipa de aplicação, equipa de suporte, equipa de infraestrutura, gestão; Todos estão envolvidos na implantação.
  • Os serviços ficam temporariamente offline durante a implementação.
  • O histórico mostrou que a implantação está sempre repleta de problemas, engenharia sob demanda, solução de problemas e alterações no gerenciamento de configuração.
  • Raramente corre bem e, quando está concluída, existe normalmente o sentimento de consistir em várias correções associadas de forma impossível de reproduzir.

Esta não é uma boa situação de implementação. O método de implementação épica é uma tarefa manual intensa que apresenta inúmeros problemas:

  • É complexo.
  • É estressante.
  • É arriscado.
  • É lento.
  • Não é reproduzível por causa de todas as etapas complexas.
  • Muitas vezes, a implementação só pode ser concluída por vários peritos individuais.

Como este processo é demorado e árduo, tem de ser agendado para os momentos em que causará o menor impacto na produtividade do utilizador, o que significa momentos que serão provavelmente inconvenientes para a equipa de implementação, como fins de semana e feriados.

Os membros da equipe podem se sentir apressados para concluir a operação gigantesca dentro do prazo, fazendo com que cometam erros de configuração. Além disso, longos períodos entre implantações podem fazer com que você esqueça exatamente como as coisas funcionam.

O dilema da implementação

A implantação de software é uma tarefa complexa, e quando você "salva" várias alterações importantes, correções e adições de recursos para implantar tudo de uma só vez, você aumenta a complexidade e, assim, aumenta a probabilidade de algo dar errado. Quando as coisas correm mal, esta complexidade dificulta a identificação exata do que causou o problema.

A complexidade também pode criar problemas para os usuários finais, pois eles podem ter que lidar com o aprendizado de muitos novos recursos e mudanças de uma só vez, sem mencionar quaisquer bugs que são introduzidos pela complexidade da implantação épica.

Deveria haver um caminho melhor, e há. A boa notícia é que a estratégia tradicional de implementação épica não é a única opção. Aprenderemos uma maneira melhor de fazer esse processo na próxima unidade.