Distinzione tra consegna continua e distribuzione continua in produzione

6

Secondo Jez Humble, Continuous Delivery implica "garantire che il nostro codice sia sempre in uno stato distribuibile" [1], e secondo il collega di Humble Thoughtworks Martin Fowler "il test chiave è che uno sponsor aziendale potrebbe richiedere l'attuale versione di sviluppo del software può essere distribuito in produzione in un momento preciso - e nessuno potrebbe battere ciglio, per non parlare di panico ". [2]

La mia domanda riguarda cosa può essere spiegato. Se significa semplicemente "in grado di essere implementato", un processo senza test è CD. Se significa "buono da implementare", perché non si presuppone che lo sponsor commerciale richieda che tutte le versioni vengano distribuite alla produzione alla prima opportuna opportunità?

Se lo sponsor commerciale non richiede la distribuzione in produzione perché la versione corrente include una modifica che non sono ancora pronti per il rilascio è una discontinuità di consegna?

Se è così allora presumibilmente fare un CD qualsiasi modifica al software rilasciato che non è pre-approvato per il rilascio non appena pronto dovrebbe essere nascosto dietro commutatori di funzionalità o simili finché non è stato approvato dallo sponsor.

[1] link
[2] link

    
posta bdsl 23.11.2017 - 00:59
fonte

2 risposte

3

My question is about what deployable means. If it means simply 'able to be deployed', then a process with no testing is CD.

Distribuibile implica che tutto il processo di pre-distribuzione è stato completato. Il processo definirà cosa significa "dispiegabile". Se il processo dice che il test non è necessario, allora il software può essere distribuito senza test. La maggior parte dei processi include l'esecuzione di una sorta di piano di test.

If it means 'good to deploy', then why wouldn't the business sponser be assumed to be requesting that all versions are deployed to production at the first convenient opportunity?

Nel caso più semplice possono benissimo consentire al team di sviluppo di implementare la produzione alla prima opportunità conveniente, ma molte attività commerciali sono troppo complesse o non sufficientemente automatizzate per farlo. Esistono altre attività commerciali (esterne al team di sviluppo) che potrebbero dover essere eseguite prima della distribuzione. Ad esempio:

  • Potrebbe essere necessario completare una fase beta prima di passare alla produzione
  • Le vendite / il supporto potrebbero dover informare i clienti esistenti di un'imminente modifica
  • L'azienda potrebbe aver bisogno di trovare un produttore per produrre compact disc con il software su di esso
  • L'azienda potrebbe voler impedire la distribuzione per far sì che siano disponibili altre funzionalità

If the business sponsor doesn't request deployment to production because the current version includes a change which they are not yet ready to release is that a discontinuity of delivery?

Io non la penso così Quando parliamo di consegna continua nel senso del software, la consegna è al business, non necessariamente all'utente finale. Se vuoi parlare di consegna continua all'utente finale, potrebbe implicare l'automatizzazione dei processi aziendali al di fuori del team di sviluppo che altrimenti bloccheranno la distribuzione.

If so then presumably to do CD any changes to released software which are not pre-approved for release as soon as ready would need to be hidden behind feature toggles or similar until approved by the sponsor.

Le funzioni di attivazione / disattivazione possono essere utilizzate per nascondere nuove funzionalità prima che l'azienda sia pronta per loro. In genere penso che sarebbero utilizzati solo se l'azienda desidera implementare determinate modifiche (ad esempio correzioni di bug, modifiche minori) senza implementare una nuova funzionalità e il software si trova in un punto in cui sarebbe difficile o più difficile estrarre la funzionalità dal prodotto. Continuo a pensare che nella maggior parte delle aziende l'azienda abbia l'ultima parola su ciò che viene distribuito. Anche se una nuova funzionalità è nascosta dietro un interruttore di funzionalità, la distribuzione potrebbe comunque avere conseguenze che l'azienda vuole controllare.

    
risposta data 23.11.2017 - 03:07
fonte
0

My question is about what deployable means. If it means simply 'able to be deployed', then a process with no testing is CD.

Supponendo di avere una sorta di processo di test prima della distribuzione, il software che non è ancora stato sottoposto a tale processo non è "pronto per la distribuzione" - in alcune aziende il test potrebbe richiedere diversi giorni e anche se il test è veloce succede se scopri i difetti?

If it means 'good to deploy', then why wouldn't the business sponser be assumed to be requesting that all versions are deployed to production at the first convenient opportunity?

Se le implementazioni sono economiche (e la fiducia nella squadra di sviluppo è elevata), spero che sia così. Nella mia azienda le implementazioni devono essere effettuate in serata e nei fine settimana, il che significa che è richiesto lo straordinario e quindi l'implementazione è un'attività costosa.

If the business sponsor doesn't request deployment to production because the current version includes a change which they are not yet ready to release is that a discontinuity of delivery?

Non importa se è lo sponsor aziendale o il software che non è ancora "pronto" - in entrambi i casi il software non è in uno stato adatto alla produzione. Immagina se fosse richiesta un'altra modifica non correlata, che dovrebbe essere disponibile prima della funzione "bloccata", ora è necessario un ulteriore lavoro per ripristinare o contrassegnare le modifiche.

If so then presumably to do CD any changes to released software which are not pre-approved for release as soon as ready would need to be hidden behind feature toggles or similar until approved by the sponsor.

Sì.

    
risposta data 23.12.2017 - 11:12
fonte

Leggi altre domande sui tag