É uma prática recomendada implantar um projeto no arquivo do servidor por arquivo manualmente?

26

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?

Jake Muller
fonte
12
Não existe nem remotamente uma "prática única para todas as situações" para esta tarefa.
Whatsisname
26
Normalmente, eu ligaria para Por que fazer uma pergunta sobre "melhores práticas" é uma coisa ruim? Acho que todos podemos concordar que essa é a pior prática. Ele está um pouco acima de "atear fogo ao servidor".
3
relevante: en.wikipedia.org/wiki/…
Jens Schauder
9
Suspeito que o OP esteja fazendo essa pergunta porque ele já sabe a resposta, e seu local de trabalho é Doing It Wrong (tm), e o OP está tentando reunir evidências para defender a mudança na maneira como fazem as coisas.
user1936
2
Fizemos assim no segundo milênio. Deve ficar bem! ;)
Don Branson

Respostas:

103

Qual é a melhor prática? implantar manualmente um artefato de projeto a cada implantação ou continuar executando o arquivo por implantação de arquivo?

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.

Phill W.
fonte
17
@JohnHamilton Se a compilação de automação é uma tarefa difícil, então isso é algo a ser resolvido a longo prazo. Você não precisa ter ambientes de desenvolvimento, teste e pré-produção completos com implantação totalmente automatizada, mas a criação de um pacote de implantação padrão deve ser uma prática padrão.
Neil
20
Er, o tamanho da empresa não é realmente o problema (até certo ponto). O custo será relacionado na medida em que a implantação for automatizada e também relacionada à complexidade do ambiente de produção. Mas há um gradiente de automação e gradiente de "custo" (tempo / dinheiro), começando por coisas simples, como um script, para copiar a saída da produção para a produção (pequeno investimento com economia de custos tangível imediata) e aumentando a partir daí, e é mais dependente na compra da gerência do que no tamanho da empresa.
BurnsBA
39
@ JohnHamilton: Uma empresa menor, mal administrada, pode se iludir pensando nisso, com certeza. Automatizar a cópia de arquivos não é exatamente uma tarefa difícil, e o custo de qualquer pessoa empregada fazer isso regularmente superará largamente o custo de escrita, mesmo o script mais trivial para fazê-lo.
GManNickG 12/10
8
@ JohnHamilton: O custo da automação deve ser ponderado contra o risco de erros cometidos durante a implantação manual.
Robert Harvey
7
Você nem precisa necessariamente de Jenkins. Apenas um script de check-in com vários comandos scp (ou o que você usar ao fazer o upload manual) seria uma melhoria.
user253751
14

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.

amon
fonte
Se o número total de servidores for 2 ou menos, o manual é menos arriscado que o automático. Automático requer extensa verificação de erros. Nunca vi uma solução automática trivial que fosse trivial.
Joshua
3
@ Josué Não sei se o número de servidores deve ser um fator aqui. A automação também tem valor quando você implanta no mesmo servidor várias vezes. A questão é: em quem você mais confia: o computador para executar fielmente um script que funcionou uma vez ou a sua capacidade de lembrar todas as etapas necessárias a cada vez? Como um humano falível e esquecido, tenho uma forte preferência por não fazer coisas manualmente. Às vezes, até escrevo tarefas pontuais apenas para poder revisar os comandos antes de executá-los. Isso é muito menos arriscado do que fazer coisas aleatórias manualmente até que funcione!
amon
Tenho uma vasta experiência nos dois sentidos. O que eu faço para implantar manualmente é a instalação do xcopy, portanto não há etapas para esquecer algumas delas.
Joshua
9

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.

Ewan
fonte
11
Eu faço essa pergunta porque eu só quero ter certeza de que não é totalmente a melhor prática do mundo. Gostaria de saber se ainda existem empresas / desenvolvedores que ainda implantam seus aplicativos / projetos manualmente, e o que piora é a implantação de arquivos por arquivo a cada iteração do desenvolvimento.
Jake Muller
4
A melhor pergunta a fazer é "por que fazemos dessa maneira?" Eu não posso pensar em uma razão, mas eu sei que algumas empresas gostam de manter uma mão manual sobre o gatilho por assim dizer
Ewan
8
@JakeMuller O que você deve ler nas entrelinhas desta resposta é que as decisões devem ser tomadas argumentando sobre a situação, e não a adesão servil ao que alguém sem conhecimento dela declarou sempre a resposta certa.
Blrfl
O motivo da abordagem arquivo a arquivo pode ser o fato de serem dependências entre os arquivos e, portanto, as atualizações de arquivos são implantadas antes das alterações em outros arquivos que dependem desses arquivos. Atualizar os arquivos na ordem errada pode travar brevemente o sistema.
bdsl
6

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.

Blueriver
fonte
1

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.

Cort Ammon - Restabelecer Monica
fonte
1

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.

vikingsteve
fonte
0

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

Edu Garcia
fonte