Domanda

Al momento, la nostra organizzazione non pratica Continuous Integration.

Al fine per noi per ottenere un server fino CI e funzionante, ho bisogno di produrre un documento che dimostri il ritorno dell'investimento.

Oltre a risparmi sui costi trovando e correggere i bug presto, io sono curioso di altri benefici / risparmio che ho potuto attaccare in questo documento.

È stato utile?

Soluzione

Il motivo # 1 per i gusti di C'è che aiuta a prevenire gli sviluppatori dal check-in codice di rotta che a volte può mettere in ginocchio un intero team. Immaginate se faccio una significativa del check-in che coinvolge alcune modifiche dello schema db destra prima di partire per le vacanze. Certo, tutto funziona bene sulla mia macchina dev, ma ho dimenticato di check-in db schema changescript che può o non può essere banale. Bene, ora ci sono cambiamenti complessi che si riferiscono a nuovi / campi modificati nel database, ma nessuno che è in ufficio il giorno dopo in realtà ha quel nuovo schema, così ora tutta la squadra è giù mentre qualcuno guarda in che riproduce il lavoro che già fatto e solo dimenticato di check-in.

E sì, ho usato un particolare brutto esempio con i cambiamenti db, ma potrebbe essere qualsiasi cosa, davvero. Forse un check-in parziale con un codice via email che provoca poi tutti i tuoi sviluppatori di spam utenti finali effettivi? È il nome ...

Quindi, a mio parere, evitando una sola di queste situazioni farà il ROI di un tale sforzo pagare molto rapidamente.

Altri suggerimenti

Se stai parlando ad un gestore di programma standard, possono trovare integrazione continua ad essere un po 'difficile da capire, in termini di ROI semplice: non è immediatamente evidente che cosa fisica prodotto che si otterrà in cambio di un dato dollaro investimenti.

Ecco come ho imparato a spiegarlo: "Continuous Integration elimina intere classi di rischio dal progetto"

La gestione del rischio è un problema reale per i responsabili di programma che è al di fuori del normale ken di tipi di ingegneria del software che trascorrono più tempo a scrivere codice che preoccuparsi di come i dollari vengono spesi. Parte di lavorare con questo tipo di persone effettivamente sta imparando ad esprimere ciò che sappiamo di essere una buona cosa in termini che possano capire.

Ecco alcuni dei rischi che tirar fuori nelle conversazioni come queste. Si noti, con i responsabili dei programmi sensibili, ho già vinto l'argomento dopo il primo punto:

  1. rischio Integrazione: in un sistema di compilazione di integrazione basata su continua, problemi di integrazione come "si è dimenticato di check-in di un file prima di andare a casa per un lungo weekend" sono molto meno probabilità di causare un intero team di sviluppo di perdere un intero Venerdì di vale la pena di lavoro. Risparmi per il progetto evitando uno di questi incidenti = numero di persone del team (meno uno a causa del cattivo che ha dimenticato di check-in) * 8 ore al giorno di lavoro * tariffa oraria per ogni ingegnere. Da queste parti, che ammonta a migliaia di dollari che non saranno a carico del progetto. ROI Win!
  2. Rischio di regressione: una suite di test unit test / automatico che viene eseguito dopo ogni costruire, si riduce il rischio che una modifica al codice rompe qualcosa che utilizzano per lavorare. Questo è molto più vago e meno sicura. Tuttavia, vi sono almeno fornire un quadro in cui alcuni dei più noioso e richiede tempo (vale a dire, costoso) la sperimentazione umana è sostituito con l'automazione.
  3. rischio Tecnologia: integrazione continua ti dà anche l'opportunità di provare nuove componenti tecnologici. Per esempio, abbiamo recentemente scoperto che Java 1.6 update 18 stava crollando nell'algoritmo di garbage collection durante una distribuzione a un sito remoto. A causa di integrazione continua, avevamo elevata sicurezza che marcia indietro per aggiornare 17 aveva una elevata probabilità di lavoro dove aggiornamento 18 no. Questo genere di cose è molto più difficile da frase in termini di un valore in denaro, ma è comunque possibile utilizzare l'argomento del rischio: un sicuro fallimento del progetto = male. downgrade Graceful = molto meglio.

CI assiste con la scoperta problema. Misurare la quantità di tempo al momento che ci vuole per scoprire la rotta costruisce o grandi errori nel codice. Moltiplica per il costo per l'azienda per ogni sviluppatore che utilizza quel codice durante quel lasso di tempo. Moltiplica per il numero di volte in cui si verificano rotture durante l'anno.

Ecco il tuo numero.

Ogni accumulo di successo è una release candidate - in modo da poter fornire aggiornamenti e correzioni di bug molto più veloce

.

Se una parte del processo di generazione genera un programma di installazione, questo permette un ciclo di distribuzione veloce pure.

Wikipedia :

  • quando test falliscano o un bug emerge, gli sviluppatori potrebbero ripristinare la base di codice a uno stato privo di bug, senza perdere tempo il debug
  • sviluppatori di rilevare e problemi di integrazione fix continuamente - evitare all'ultimo minuto caos date di rilascio, (quando ognuno cerca di check-in loro un po 'incompatibile le versioni).
  • di allarme precoce di rotture codice / incompatibile
  • di allarme precoce di modifiche in conflitto
  • immediato test delle unità di tutte le modifiche
  • costante disponibilità di una "corrente" costruire per il test, demo, o rilasciare scopi
  • un feedback immediato per gli sviluppatori sulla qualità, la funzionalità, o livello di sistema impatto di codice che stanno scrivendo
  • frequente codice di check-in spinge agli sviluppatori di creare modulare, meno codice complesso
  • metriche generate da test automatici e CI (ad esempio le metriche di copertura del codice, codice complessità, e le caratteristiche complete) si concentrano sullo sviluppo di sviluppatori, codice di qualità funzionale, e contribuire a sviluppare lo slancio in un team
  • ben sviluppato test-suite di richiesta per la migliore utility

Usiamo CI (Two costruisce un giorno) e ci fa risparmiare un sacco di tempo mantenendo il codice disponibile a lavorare per il test e il rilascio.

Da un punto di vista degli sviluppatori CI può essere intimidatorio quando dei risultati Corporatura automatico, inviato per posta elettronica a tutto il mondo (sviluppatori, responsabili di progetto, ecc ecc), dice:   "Errore nel caricamento DLL Costruisci della 'XYZ.dll' non riuscita." e vi sono il signor XYZ e sanno chi sei :)!

Ecco il mio esempio dalla mia esperienza ...

Il nostro sistema dispone di più piattaforme e configurazioni con più di 70 ingegneri che lavorano sulla stessa base di codice. Abbiamo sofferto dal successo costruire da qualche parte intorno al 60% per le configurazioni meno comunemente utilizzati e l'85% per il più comunemente usato. C'è stato un diluvio costante di e-mail su base giornaliera su errori di compilazione o di altri guasti.

Ho fatto alcuni calcoli approssimativi e la stima che abbiamo perso una media di un'ora al giorno per programmatore di male costruisce, che ammonta a quasi 10 giorni-uomo di lavoro ogni giorno. Ciò non tiene conto dei costi che si verificano nel tempo di iterazione quando i programmatori si rifiutano di sincronizzare il codice più recente, perché non so se è stabile, che ci costa ancora di più.

Dopo la distribuzione di un rack di server di generazione gestiti da team Città vediamo ora un tasso medio di successo del 98% su tutte le configurazioni, l'errore medio di compilazione rimane nel sistema per i minuti anziché ore e la maggior parte dei nostri ingegneri sono ora confortevole presso l'ultima revisione del codice.

In generale direi che una stima conservativa sulle nostre risparmio complessivo è stato di circa 6 mesi di tempo l'uomo negli ultimi tre mesi del progetto rispetto ai tre mesi precedenti alla distribuzione CI. Questo argomento ha aiutato a garantire le risorse per ampliare i nostri server di build e concentrarsi di più tempo tecnico sul test automatici supplementari.

La nostra più grande guadagno, è di avere sempre una nightly build per QA. Sotto il nostro vecchio sistema ciascun prodotto, almeno una volta alla settimana, avrebbe scoperto in 02:00 che qualcuno aveva controllato nel codice cattivo. Questo non ha causato nightly build per QA per testare con, il rimedio è stato quello di inviare una e-mail Release Engineering. Avrebbero diagnosticare il problema e contattare un dev. A volte ci sono voluti più a lungo prima di mezzogiorno QA in realtà aveva qualcosa su cui lavorare. Ora, oltre ad avere un installatore ogni singola notte, abbiamo effettivamente installarlo su VM di tutte le diverse configurazioni supportate ogni sera. Così ora quando QA entra, si può iniziare il test in pochi minuti. Ora, quando si pensa alla vecchia maniera, QA è venuto in afferrato il programma di installazione, accese tutte le macchine virtuali, installato, poi ha iniziato il test. Risparmiamo QA probabilmente 15 minuti per la configurazione per testare su, per persona QA.

Ci sono i server CI libero disponibile, e strumenti di compilazione liberi come Nant. È possibile implementarlo sulla propria macchina dev per scoprire i benefici.

Se si utilizza il controllo di origine, e di un sistema di bug-tracking, immagino che costantemente essere stato il primo a segnalare i bug (in pochi minuti dopo ogni check-in) sarà piuttosto interessante. A questo si aggiunge la diminuzione del proprio bug-rate, e probabilmente avrete una vendita.

Il ROI è davvero la capacità di fornire ciò che il cliente desidera. Questo è ovviamente molto soggettiva, ma quando implementata con il coinvolgimento del cliente finale, si vedrebbe che i clienti inizia apprezzare quello che stanno ottenendo e quindi si tendono a vedere meno problemi durante l'accettazione degli utenti.

  • Sarebbe risparmiare sui costi? Non può essere,
  • sarebbe il progetto non riuscire durante SVS? sicuramente NO,
  • sarebbe il progetto chiuso nel mezzo? - elevata possibilità, quando i clienti trovano che questo non sarebbe consegnare il Risultato atteso.
  • vorresti ottenere in tempo reale e dati reali sul progetto - YES

Quindi, aiuta a non aver più veloce, che aiuta a mitigare i rischi in precedenza.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top