continuous deployment - agile day 2010

17
Continuous Deployment CheckIn2Production Andrea Chiarini Claudio Pattarello

Upload: migratore

Post on 20-Nov-2014

770 views

Category:

Technology


2 download

DESCRIPTION

Presentazione del talk "Continuous Deployment" tenuto all'Agile Day 2010 a Genova.

TRANSCRIPT

Page 1: Continuous Deployment - Agile Day 2010

Continuous DeploymentCheckIn2Production

Andrea Chiarini Claudio Pattarello

Page 2: Continuous Deployment - Agile Day 2010

Continuous Deployment

Il rilascio

Page 3: Continuous Deployment - Agile Day 2010

Continuous Deployment

• La checklist (“eh… ma questo non era nella checklist…”)

• Costruttivo dialogo con i sistemisti (“non va un… #@”£%$!!!!!”)

• Configurazioni ambienti (“mah… sulla mia macchina andava…”)

• L’attività (giornata) di rilascio (“dai, facciamo fare il rilascio a quello nuovo?”)

• L’esperto non è in sede (“dai, è solo mezzanotte, chi ha il cellulare di Franco?”)

• La nuova release è in produzione (“porca… come si fa rollback???”)

• Il rollback è in produzione (“porca… ma cos’abbiamo cambiato???”)

• Fix delle release in produzione (“allora, fai così, apri il DB e cancella quella riga, poi…”)

Si può proseguire per tutta l’ora….

Page 4: Continuous Deployment - Agile Day 2010

Continuous Deployment

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.

Martin Fowler

The high level of our process is dead simple: Continuously integrate (commit early and often). On commit automatically run all tests. If the tests pass deploy to the cluster. If the deploy succeeds, repeat.

Timothy Fitz

Continous Deployment is the practice of releasing every good version of your software, often multiple times a day.

Jez Humble

Page 5: Continuous Deployment - Agile Day 2010

Continuous Deployment

Commit stageBuild

Unit TestPackaging

Functional Acceptance

Testing

NonfunctionalAcceptance

Testing

Manual TestingExploratory tests

DemoRelease

Page 6: Continuous Deployment - Agile Day 2010

Continuous Deployment

Release

Page 7: Continuous Deployment - Agile Day 2010

Continuous Deployment

Release Candidate

Release in production

Production Data

Application Configuration

Environment Configuration

Page 8: Continuous Deployment - Agile Day 2010

Continuous Deployment

Come è composto un sistema di Continuous Deployment?

Page 9: Continuous Deployment - Agile Day 2010

Continuous Deployment

• Sistema Continuous Integration•Sistema reattivo ad ogni check-in•Scheduler in grado di gestire una coda di task•Compilazione e testing su macchine diverse da quelle di sviluppo•Sistema di feedback sullo stato di ogni step del processo di integrazione

• Configuration management•Gestire le configurazioni collegate ad ogni versione dell’applicazione per un particolare environment•Conoscere e versionare tutte le configurazioni che caratterizzano l’ambiente di esecuzione per ogni versione dell’applicazione

Page 10: Continuous Deployment - Agile Day 2010

Continuous Deployment

• Script automatici di deploy/rollback• il deploy di un’applicazione è demandato ad un singolo grosso bottone rosso• il rollback di un’applicazione è demandato ad un singolo bottone rosso più grosso di quello precedente

• Ambienti di test• Possibilità di creare e distruggere rapidamente ambienti di test• Possibilità di configurare automaticamente questi ambienti come la produzione

• Versioning• Mantenimento nel repository di tutte le configurazioni, applicative e di environment• Mantenimento nel repository di tutti gli script che costitiuiscono il sistema di continuous deploy

Page 11: Continuous Deployment - Agile Day 2010

Continuous Deployment

Vantaggi• riduzione del tempo di deploy di una feature / bug fix

• eliminazione degli errori commessi in fase di deploy

• eliminazione delle sorprese in fase di deploy

• aumento frequenza di rilascio, con modifiche più incrementali portate in produzione

• è un sistema modulare, posso implementarlo un passo alla volta

(continua)

Page 12: Continuous Deployment - Agile Day 2010

Continuous Deployment

Vantaggi (continua)•Il sistema è autocontrollato, qualsiasi difetto nel processo si evidenzia subito e non quando ne ho bisogno

• Accorciamento ciclo di apprendimento

• New entry nel team con curva di apprendimento molto bassa

• Sviluppatori concentrati sulle feature e non sui rilasci

• Rafforza collaborazione con gli altri stakeholder del progetto

Page 13: Continuous Deployment - Agile Day 2010

Continuous Deployment

Svantaggi

• sistema costoso da creare (costi hardware e tempo di messa in opera)• sistema costoso da manutenere• richiede forte disciplina da parte del team• più l’ambiente è complicato più lo sarà il sistema di C.D.• richiede l’accordo e la partecipazione di tutti gli stakeholder (management, utenti, sistemisti)

Page 14: Continuous Deployment - Agile Day 2010

Continuous Deployment

“Ma si mette su tutto insieme o posso farlo un pezzo alla volta?”

“Ma può funzionare in un team di grosse dimensioni?”

“Ok, ma mi serve veramente?”

“Quanto mi viene a costare una roba simile?”

“Io non ne ho bisogno.”

“E’ impossibile catturare tutte le configurazioni del mio ambiente!”

“Quindi dovrei fermare i server per un rilascio tutte le volte che faccio check-in???”

“Io ho già un sistema di Continuous Integration ed è sempre rosso…”

“Come faccio a capire quanto tempo perdo ogni volta per rilasciare?”

“Riesco a farlo su un progetto già in corso o devo per forza metterlo su fin dall’inizio?”

“Bello, ma il mio manager non l’accetterebbe mai…”

“Non ci riuscirò mai in un ambiente legacy…”

“Ma ci sono anche delle aziende vere che lo fanno???”

“Come posso fare per un applicazione desktop?”

Page 15: Continuous Deployment - Agile Day 2010

Continuous Deployment

Continuous Delivery: Reliable Software Releases through Build, Test, and Deployment Automation by David Farley and Jez Humble

ThoughtWorks C.I. Feature Matrix http://confluence.public.thoughtworks.org/display/CC/CI+Feature+Matrix

GrokAndRoll Sporadic delivery of thoughts on continous deliveryhttp://grokandroll.com/

Case Study: Continuous deployment makes releases non-events http://www.startuplessonslearned.com/2010/01/case-study-continuous-deployment-makes.html

Page 16: Continuous Deployment - Agile Day 2010

Continuous Deployment

[email protected]@energee3.com

[email protected]

www.energee3.com

Page 17: Continuous Deployment - Agile Day 2010