Che cosa significa "continuo" in "distribuzione continua", "consegna continua" e "integrazione continua"?

7

Che cosa significa "continuo" in "distribuzione continua", "consegna continua" e "integrazione continua"?

A cosa si oppone?

Il "continuo" rende "distribuzione", "consegna" e "integrazione" fanno più cose che senza "continua"?

    
posta Tim 26.09.2017 - 18:36
fonte

4 risposte

17

Tradizionalmente, prima dell'integrazione continua, della creazione continua, della distribuzione continua, del test continuo, ecc., il sistema era suddiviso in moduli e quei moduli erano sviluppati da team indipendenti che non interagivano molto.

Il termine "integrazione" si riferisce all'evento quando quei moduli sviluppati in modo indipendente sono stati assemblati insieme nel sistema completo. (Questo è anche il luogo da cui deriva il termine "test di integrazione".) Questo di solito era un evento una tantum . Cioè l'intero sistema è stato sviluppato, a volte per anni , in completo isolamento senza mai dopo aver lavorato come sistema completo . Quindi, alla fine, i moduli sono stati messi insieme ("integrati"), costruiti, testati e distribuiti. Ciò significa che praticamente la prima volta mai che l'intero sistema era in esecuzione, era direttamente prima della data di consegna.

Tranne, naturalmente, il più delle volte, non è stato eseguito. E poi dovevi dare la caccia al problema in un sistema complesso con complesse interazioni tra moduli complessi. E poiché l'integrazione è stata un evento così doloroso, è stata vista come qualcosa di doloroso e costoso.

L'idea di Continuous Integration si trasforma in questa cosa: invece di spingere l'integrazione fino alla fine e renderla un enorme evento doloroso di una sola volta, lo fai sempre , ogni volta che si cambia il modulo qualsiasi . In questo modo, puoi farlo meglio (perché invece di farlo solo una volta all'anno, lo fai più volte al giorno, quindi hai molta più pratica) e diventa molto più semplice (perché se ti integri ad ogni cambio, quindi individua presto i problemi di integrazione, e sai che il problema è con quel singolo cambiamento ).

Quindi, è da qui che nasce l'idea di Continuous XYZ: invece di spingere XYZ fino alla fine, quando è troppo tardi per cambiare qualcosa, e lo fai solo una volta, lo fai il prima possibile e il più spesso possibile.

Per facilitare questa continuità, solitamente il processo è automatizzato in larga misura, dando origine all'idea di server di generazione continua, server di integrazione continua, ecc.

Nota che è la stessa idea con Pair Programming (che potresti vedere come "Continuous Code Review"), facendo frequenti piccoli commit, ecc.

    
risposta data 27.09.2017 - 09:18
fonte
6

L'integrazione continua (CI) è la pratica di integrazione frequente delle modifiche con la base di codici principale. Per fare CI, è probabile che un server CI esegua test automatici sulla base di codice con ciascun commit, verificando l'integrazione riuscita. Gli sviluppatori che spingono verso il codebase dovrebbero mantenere i loro commit piccoli, e tirare / spingere i cambiamenti frequentemente.

L'implementazione continua è la capacità per distribuire il software alla produzione in qualsiasi momento, senza alcuno sforzo manuale (a parte la semplice pressione di un pulsante). In genere ciò viene ottenuto mediante pipeline di distribuzione e automazione del test.

Consegna continua è la capacità di fornire software in qualsiasi momento. Se si dispone di un set di funzionalità pronto per essere rilasciato, l'azienda può decidere quali funzionalità rilasciare in quel momento e su base individuale. Richiede il disaccoppiamento di rilascio dalla distribuzione .

La distinzione tra distribuzione e consegna sta nel fatto che il codice sia attivo o meno nella produzione.

Distribuito significa che il codice è arrivato ai server di produzione. Può o non può essere attivo. Ad esempio, è possibile che siano presenti commutatori di funzionalità che controllano la consegna del software dopo che è già stato distribuito.   Se non sai quali sono le opzioni di attivazione, puoi considerarle come if-branches che puoi manipolare / attivare in fase di runtime.

Consegnato significa che il codice non solo è entrato in produzione, ma è anche "attivo", fornendo così un valore aziendale.

In questo contesto, "continuo" si oppone a "discreto". Dove continuo descriverebbe un flusso ininterrotto di eventi (cioè l'acqua che scorre da un rubinetto), discreto descriverebbe una sequenza isolata di eventi (cioè gocce d'acqua che gocciolano da un rubinetto).

In termini di sviluppo del software: al contrario dell'integrazione / distribuzione / distribuzione a intervalli fissi, eventualmente dovuti a limitazioni tecniche, normative o semplicemente mancanza di conoscenza, sei in grado di fare queste cose continuamente, quando è più adatto al tuo scopo o il business ha bisogno.

    
risposta data 28.09.2017 - 22:37
fonte
2

Continuous Integration is a software development practice where members of a team integrate their work frequently, usually each person integrates at least daily - leading to multiple integrations per day

link

Il termine "continuo" indica che si dispone di un processo in cui è possibile eseguire l'integrazione del nuovo codice, della generazione e delle distribuzioni in modo sistematico e frequente (di solito su base giornaliera).

    
risposta data 26.09.2017 - 19:30
fonte
1

A differenza di altri ragazzi qui presenti, direi che queste cose sono non sul tentativo di rendere le pubblicazioni più frequenti ma sul rendere il processo complessivo più fluido. Quando ogni persona o reparto lavora sul suo componente senza riunioni eccessive e distrae gli altri, l'intero sviluppo diventa più veloce. La frequenza di rilascio è più un effetto derivato rispetto a un obiettivo.

E tutti e tre i termini sono praticamente la stessa cosa:

  • L'integrazione continua (CI) riguarda il non aver bisogno di chiedere "hey dude, in quale stato il nostro master è ora? è rotto? posso unire?" - Invece non ti interessa in quali stati di lavoro sono i tuoi amici e quando finisci con il tuo componente lo fai sapere al sistema di CI, ad esempio creando una richiesta di fusione. L'automazione si prenderà cura del resto come avviare test automatici, integrare il tuo componente con gli altri.
    Le filiali si fondono automaticamente o meno, chi e come decide di unire o restituire il biglietto a te per il miglioramento - questa è un'altra domanda.

  • Quando la fase di compilazione del prodotto software si trova nella pipeline CI, viene chiamata Continuous Delivery (CD) .

  • Quando il tuo prodotto è un sito Web o una sorta di applicazione in esecuzione, il CD può essere definito Distribuzione continua .

risposta data 04.10.2017 - 09:05
fonte

Leggi altre domande sui tag