Come determinare la frequenza di rilascio ottimale per il massimo rendimento?

3

Lavoro su un grande programma software - 100 sviluppatori in servizi finanziari.

La saggezza comune di Integrazione continua serve per ottenere un feedback in anticipo rispetto alle modifiche.

La saggezza comune di Consegna continua è che riuscendo a sbloccare piccoli pezzi, si riduce il rischio di fallimento, perché puoi eseguire facilmente il rollback e rilasciare piccoli blocchi ti aiuta a raggiungere rapidamente e spesso la produzione.

Un diagramma del valore aziendale in Lean ci consente di vedere il flusso del valore aziendale da sinistra a destra (simile a una linea di produzione) e da questo è possibile identificare dove si stanno bloccando le voci di modifica e dove sono i colli di bottiglia nel processo.

La sfida nello sviluppo del software è identificare esattamente quali sono i widget sulla linea di produzione.

Se leggi The Phoenix Project , le modifiche sono le registrazioni delle modifiche che fluiscono attraverso il sistema (anche se questo è strongmente focalizzata sull'infrastruttura IT). Se parli con uno Scrum master - allora le modifiche fluiscono attraverso il sistema sono storie. Se parli con uno sviluppatore, le modifiche che fluiscono attraverso il sistema vengono commesse dalla GIT. (Che può e dovrebbe allinearsi alle storie).

La semplice realtà è che realizziamo piccole versioni una volta al mese e grandi versioni una volta ogni tre mesi, a causa del costo di transazione del test di regressione. (Il libro di Don Reinersen I principi del flusso di sviluppo del prodotto è sorprendente sui compromessi tra tempi di ciclo e costi di transazione.

Quindi nel tentativo di identificare i vincoli sul sistema - invece di trovare un'area di lavoro in cui gli elementi si accumulano - a me sembra che la dimensione del batch stesso sia un vincolo. Per dimensione del lotto, intendo il numero di risultati finali in una versione. Un rilascio ogni mese con un gran numero di sviluppatori avrebbe un gran numero di storie / commit. Sto cercando di quantificarlo.

Sappiamo che l'economia delle dimensioni del lotto è un problema di ottimizzazione della curva a U e che il costo di transazione di un test di regressione e di un rilascio è notevole.

La mia domanda è: Come posso determinare la frequenza di rilascio ottimale per il massimo throughput?

    
posta hawkeye 28.11.2016 - 11:32
fonte

1 risposta

0

Ho pensato anche a questo e per farlo, penso che prima tu abbia bisogno di un'ipotesi. Ecco dove vorrei iniziare:

Regression Overhead

Sei vincolato al tempo minimo di test di regressione. Devo affermare che non puoi rilasciare più velocemente di così. Penso che una formula di base per questo sarebbe basata sui seguenti componenti:

  • Tempo richiesto per testare tutte le funzioni invariate
  • Tempo richiesto per aggiornare / aggiungere funzionalità
  • Tempo richiesto per testare le funzionalità nuove / modificate

Il tempo di regressione aumenta nel tempo man mano che si aggiungono funzionalità, ma il tasso marginale di aumento diminuirà nel tempo. La tua situazione potrebbe variare, ma penso che possiamo supporre che sia stato corretto. Se sta crescendo in modo significativo, avere rilasci su qualsiasi frequenza fissa non sarà sostenibile.

Difetti e tempo di correzione

Ipotesi 1

Supponiamo che il numero di difetti rilevati in una versione sia proporzionale al numero di funzionalità nella versione. Assumiamo anche che il tempo per correggere e ritestare tali difetti sia proporzionale al numero di difetti.

Ipotesi 2

Anche in questo caso si assume che il numero di difetti rilevati in una versione sia proporzionale al numero di funzionalità nella versione. Ma ora assumiamo che il tempo per correggere e ripetere il test sia una qualche funzione del numero di difetti che non è un multiplo dritto. il ragionamento è che se trovi qualche difetto e lo aggiusti, allora il test di regressione deve essere eseguito di nuovo. Questi difetti impediscono la scoperta di alcuni altri difetti. Questo crea un tempo di attesa per correggere i difetti.

Test delle ipotesi

Per determinare se una di queste realtà corrisponde, è necessario determinare / indovinare il minimo tempo necessario per eseguire il test di regressione. Non puoi andare più veloce di così. Quindi è necessario provare diversi programmi di rilascio. Questo potrebbe richiedere alcuni picchi. Quindi si inizia a provare a scomporre il tempo di regressione per il numero di funzioni. Potresti vedere qualcosa di simile a questo:

Oforseassomigliaaquesto:

Doveilverdeèiltuotempodiriferimentoperlaregressione.Oforsesembraqualcosadicompletamentediverso.Inbaseallamiaesperienzaèpiùsimileaquest'ultimo.

Seèilprimo,suggerirebbediandareconciclidirilascioveramentelunghiperchériducealminimoilsovraccaricodellaregressionedibase.Tuttavia,c'èunaltrofattorechenonhaimenzionato:valoreaziendale.Seunacaratteristicaproducevaloreperl'azienda(eperchélostaifacendosenonlofa)piùtempoènecessariopermetterloinproduzione,minoreèilvaloreaggiunto.Quindi,anchesesitrattadiuncostolineare,ènecessariotenerlopresente.

Unavoltacompresaquestarelazione,pensochemoltoprobabilmentevorraifareinmodocheiltempodisviluppoperunaseriedifunzionicorrispondaaltempodiQAperquellefeautres(considerandoaltreattivitàgeneralicomecorreggereidifetti,aggiornareitest,sharpening the saw , ecc.)

    
risposta data 28.11.2016 - 22:24
fonte

Leggi altre domande sui tag