È consigliabile distribuire manualmente un progetto sul file server per file?

26

La società per cui lavoro ora non implementa ancora la consegna continua. Continuiamo a distribuire il progetto manualmente sul server, file per file. Qual è la migliore pratica: distribuire manualmente un artefatto del progetto per ogni distribuzione o continuare a fare la distribuzione file per file?

    
posta Jake Muller 12.10.2017 - 12:08
fonte

7 risposte

102

Which is best practice? to manually deploy one project artifact each deployment or keep doing the file by file deployment?

Nessuno dei due.

La migliore pratica è quella di automatizzare la tua implementazione, completamente ed esclusivamente. Ciò significa che nessuno può mettere qualsiasi su un server manualmente.

"Per riassumere il riepilogo del sommario: le persone sono un problema." (Douglas Adams)

Le persone commettono errori. Se uno dei file che si dimentica di copiare è una "libreria" condivisa che è stata ampiamente modificata, è possibile arrestare l'intero sito di produzione.

    
risposta data 12.10.2017 - 12:46
fonte
13

I passaggi manuali richiedono molto impegno e sono rischiosi: potresti dimenticare un file necessario. Forse non tutti nella tua squadra sanno quali file devono essere copiati. Tutti questi problemi rendono le implementazioni grandi, scoraggianti e rare - completamente inutilmente. L'automazione li indirizza.

Anche la fase di automazione più semplice può avere grandi vantaggi, perché le implementazioni diventano banali. Uno script che copia i file o le risorse tramite (S) FTP o Rsync o un'altra tecnologia è un ottimo primo passo. In seguito puoi espandere lo script per eseguire automaticamente i passaggi di pre-distribuzione e post-distribuzione sul server, come il riavvio dei servizi.

    
risposta data 12.10.2017 - 12:50
fonte
9

La migliore pratica sarebbe quella di implementare un processo automatizzato di qualche tipo.

Fai attenzione a verificare che non ci sia un motivo speciale per l'approccio "file per file" che dovresti prendere in considerazione.

    
risposta data 12.10.2017 - 12:12
fonte
5

Con Consegna continua (o Distribuzione, in effetti) e spostando ogni file a mano, stai osservando i due estremi. È perfettamente comprensibile che non si possa / non si voglia creare una pipeline completamente automatizzata (ancora). Tuttavia, dovresti considerare di automatizzare parti del processo.

Spostare manualmente ogni file è piuttosto rischioso e potresti mitigare tale rischio, ad esempio taggando il tuo repository di codice, controllando quel tag nel tuo computer, costruendo i tuoi artefatti e caricandoli sul tuo server. Ognuno di questi passaggi può essere automatizzato in modo che vengano eseguiti con pochi clic del mouse e questo ridurrà notevolmente il rischio di dimenticare un file o di spingere accidentalmente a creare file aggiuntivi.

Automatizza ciò che puoi, una volta per volta. Il fatto che non ti puoi permettere una pipeline CD completamente automatizzata non dovrebbe scoraggiarti dall'automazione di alcune parti.

    
risposta data 13.10.2017 - 01:52
fonte
1

La migliore pratica sarebbe quella di eseguire un'analisi costi / benefici per la tua specifica implementazione per la tua azienda in particolare.

La risposta generale è "non fare le cose manualmente, automatizzare". Questa è generalmente la risposta giusta per tipi generali di società. L'uniformità delle risposte che ricevi dovrebbe essere un'indicazione di quanto sia strong la comunità che ritiene che queste siano le migliori pratiche. Se la tua azienda ritiene che l'automazione non sia lo strumento giusto, dovrebbero capire che cosa li rende unici. Tale unicità dovrebbe essere presa in considerazione nel processo decisionale. Non ci sono "best practice" quando il set di campionamento è 1.

Domande come "quanti file" e "quante volte vengono aggiornate le cose" e "quali sono le conseguenze di rompere le cose" e "quanto velocemente si può ripristinare un brutto cambiamento" sono domande importanti a cui rispondere. Se si automatizza, molte di queste domande diventano insignificanti, ma sono essenziali per assegnare correttamente i costi e i benefici per un processo di aggiornamento manuale.

    
risposta data 13.10.2017 - 01:53
fonte
0

Dipende dalla tecnologia software (o stack) che si sta utilizzando (linguaggio interpretato, linguaggio compilato, app desktop, mobile, ecc.), soft. dev. politiche del dipartimento, se hai gli strumenti per automatizzarlo, quanto è critica la tua app, e una cosa importante da considerare è la tua architettura software (come è stata progettata la tua app). Questo è il motivo per cui hai qui risposte diverse. Come regola generale, l'approccio migliore sarà ridurre il più possibile l'intervento umano nelle attività di distribuzione, per evitare errori. Una buona pratica testerà tutto in un server QA (considera l'utilizzo di un server virtuale se il budget è un problema) prima della distribuzione e le procedure inverse per ripristinare la versione precedente in caso di disastro ( SEMPRE backup).

    
risposta data 13.10.2017 - 10:19
fonte
0

Ci sono molte sfumature di grigio tra copia manuale file per file e consegna continua.

Inizia riducendo la complessità del processo di distribuzione, ad esempio utilizzando un file zip, un packaging in stile rpm, un'infrastruttura come strumento di gestione del codice (come puppet o chef) o anche solo un semplice script che copia i file per da un'area di gestione sul server ftp.

I processi di distribuzione con più passaggi manuali hanno più probabilità di avere errori (e quindi di fallire) - come altri hanno detto, toglierne l'elemento umano.

Non è necessario implementare la fornitura continua completa (che è costosa e richiede impegno / investimenti / innovazione nel tempo) - iniziare in modo semplice, farlo funzionare, dimostrare i vantaggi - e andare da lì.

    
risposta data 13.10.2017 - 11:26
fonte

Leggi altre domande sui tag