O que é a implementação de software?
- 3 minutos
A implementação de software inclui todas as atividades que tornam um sistema de software disponível para uso. O processo geral de implementaçã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 é um processo geral que tem de ser personalizado para requisitos ou características específicas.
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. O processo de implantação envolve mais. As atividades de implementação podem incluir:
- "Montagem e instalação" 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.
Implementar software manualmente é trabalhoso e não escala 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.
Este percurso de aprendizagem foca-se em como implementar software da melhor forma de garantir a fiabilidade. 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. Jez Humble e David Farley usam o termo no seu livro Continuous Delivery: Reliable Software Releases through Build, Test, and Deployment Automation , porque representa uma tarefa massiva (e extremamente disruptiva). Aqui está um exemplo de como isto normalmente acontece:
- 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 em que todos têm de colaborar ativamente. A equipa de aplicações, a equipa de suporte, a equipa de infraestrutura e a gestão estão todos envolvidos na implementaçã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á completo, geralmente parece montado de forma irreproduzível.
Esta não é uma boa situação de implementação. O método de implementação "Epic" é uma tarefa manual intensa que apresenta inúmeros problemas:
- É complexo.
- É estressante.
- É arriscado.
- É lento.
- Não é reproduzível por causa de todas as etapas complexas.
- É frequentemente necessário que vários especialistas participem na conclusão da implementação.
Como este processo é longo e árduo, tem de ser agendado em horários que causem a menor perturbação da produtividade do utilizador, o que significa momentos que provavelmente serão 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 uma forma melhor, e há. A boa notícia é que a estratégia tradicional de implantação épica não é a única opção. Vais aprender uma forma melhor de abordar este processo na próxima unidade.