A empresa em que trabalho ainda não implementa a entrega contínua. Ainda implantamos o projeto manualmente no servidor, arquivo por arquivo. Qual é a melhor prática: implantar manualmente um artefato de projeto para cada implantação ou continuar fazendo a implantação arquivo por arquivo?
deployment
server
devops
Jake Muller
fonte
fonte
Respostas:
Nem.
A melhor prática é automatizar sua implantação, completa e exclusivamente. Isso significa que ninguém consegue colocar nada em um servidor manualmente.
"Para resumir o resumo do resumo: As pessoas são um problema." (Douglas Adams)
Pessoas cometem erros. Se um dos arquivos que você esquecer de copiar for uma "biblioteca" compartilhada que foi extensivamente alterada, você poderá derrubar todo o site de produção.
fonte
As etapas manuais exigem muito esforço e são arriscadas: você pode esquecer um arquivo necessário. Talvez nem todos na sua equipe saibam quais arquivos precisam ser copiados. Todos esses problemas tornam as implantações grandes, assustadoras e raras - completamente desnecessárias. A automação resolve esses problemas.
Mesmo a etapa mais simples de automação pode trazer grandes benefícios, porque as implantações se tornam triviais. Um script que copia os arquivos ou artefatos via (S) FTP ou Rsync ou outra tecnologia é um ótimo primeiro passo. Posteriormente, você pode expandir esse script para executar etapas de pré-implantação e pós-implantação no servidor automaticamente, como reiniciar os serviços.
fonte
A melhor prática seria implementar algum tipo de processo automatizado.
Tenha cuidado para verificar se não há um motivo especial para a abordagem 'arquivo por arquivo' que você deveria levar em consideração.
fonte
Com a Entrega contínua (ou implantação, na verdade) e movendo cada arquivo manualmente, você está observando os dois extremos. É perfeitamente compreensível que você não possa / não queira criar um pipeline totalmente automatizado (ainda). No entanto, considere automatizar partes do processo.
Mover cada arquivo manualmente é bastante arriscado, e você pode atenuar esse risco, por exemplo, etiquetando seu repositório de código, verificando essa tag no seu computador, construindo seus artefatos e enviando-os para o servidor. Cada uma dessas etapas pode ser automatizada para que seja executada com apenas alguns cliques do mouse, o que reduzirá bastante o risco de esquecer um arquivo ou pressionar acidentalmente para produzir alguns arquivos extras.
Automatize o que puder, uma vez passo por vez. O fato de você não poder pagar um pipeline de CD totalmente automatizado não deve desencorajá-lo a automatizar algumas peças.
fonte
A melhor prática seria fazer uma análise de custo / benefício para sua implantação específica para sua empresa específica.
A resposta geral é "não faça as coisas manualmente, automatize". Geralmente, essa é a resposta certa para tipos gerais de empresas. A uniformidade das respostas que você está recebendo deve ser uma indicação de quão fortemente a comunidade considera as melhores práticas. Se sua empresa considera que a automação não é a ferramenta certa, eles devem entender o que os torna únicos. Essa singularidade deve ser levada em consideração em seu processo de tomada de decisão. Não há "práticas recomendadas" quando o conjunto de amostras é 1.
Perguntas como "quantos arquivos" e "quantas vezes as coisas são atualizadas" e "quais são as consequências de quebrar as coisas" e "com que rapidez você pode reverter uma mudança ruim" são questões importantes a serem respondidas. Se você automatizar, muitas dessas perguntas se tornam sem importância, mas são essenciais para atribuir adequadamente os custos e benefícios de um processo de atualização manual.
fonte
Existem muitos tons de cinza entre a cópia manual de arquivo por arquivo e a entrega contínua.
Comece reduzindo a complexidade do processo de implantação, por exemplo, usando um arquivo zip, um pacote no estilo rpm, uma infraestrutura como ferramenta de gerenciamento de código (como fantoche ou chef) ou mesmo apenas um script simples que copia os arquivos para você de um área de teste no servidor ftp.
Os processos de implantação com mais etapas manuais têm mais chances de ter erros (e, portanto, falham) - como outros disseram, eliminam o elemento humano.
Você não precisa implementar a entrega contínua completa (que é cara e exige esforço / investimento / inovação ao longo do tempo) - comece de maneira simples, faça funcionar, demonstre os benefícios - e siga em frente.
fonte
Depende da tecnologia de software (ou pilha) que você está usando (linguagem interpretada, linguagem compilada, aplicativo de desktop, celular etc.), suave. dev. políticas de departamento, se você tiver as ferramentas para automatizá-lo, qual é a importância do seu aplicativo e uma coisa importante a considerar é a arquitetura do software (como o aplicativo foi projetado). É por isso que você tem aqui respostas diferentes. Como regra geral, a melhor abordagem será reduzir a possível intervenção humana nas tarefas de implantação, para evitar erros. Uma boa prática será testar tudo em um servidor de controle de qualidade (considere usar um servidor virtual se o orçamento for um problema) antes da implantação e ter procedimentos reversos para restaurar a versão anterior em caso de desastre ( SEMPRE tenha um backup).
fonte