O que é a implementação de software?
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.