agileday2013 pratiche agili applicate all'infrastruttura

55
Pratiche Agili applicate all'Infrastruttura Marco Trincardi - @trink0 Giuseppe Leone - @joebew42

Upload: xpeppers

Post on 08-May-2015

464 views

Category:

Technology


3 download

DESCRIPTION

Gestire l’infrastruttura come se fosse codice, ha degli indubbi vantaggi, soprattutto in un team agile che ha più esperienze Dev piuttosto che Ops. In questa sessione vi racconteremo la nostra esperienza, problemi, vantaggi e cosa abbiamo imparato. Lo unified tooling è l’area di interesse DevOps che fonde pratiche di software development a quelle di system administration, con lo scopo di semplificare il processo di deployment di ambienti complessi. In questo talk vengono esposte le esperienze di un team di dev che è riuscito a gestire e replicare ambienti complessi, ricorrendo a strumenti e pratiche delle metodologie agili. Saranno evidenziati i vantaggi ottenuti e le problematiche riscontrate.

TRANSCRIPT

Page 1: Agileday2013 pratiche agili applicate all'infrastruttura

Pratiche Agili applicate all'Infrastruttura

Marco Trincardi - @trink0Giuseppe Leone - @joebew42

Page 2: Agileday2013 pratiche agili applicate all'infrastruttura

La nostra esperienza ...

• L'adozione di pratiche DevOps nasce dalla necessità di poter creare, gestire, condividere e replicare configurazioni di ambienti complessi

• Circa nove mesi di esperienza su progetti con diversi gradi di complessità

Page 3: Agileday2013 pratiche agili applicate all'infrastruttura

Di cosa parliamo

• Vi raccontiamo una nostra esperienza

• Casi reali

• DevOps: Unified Tooling

• Come ci siamo arrivati

• Conoscenza acquisita sul campo

• Un esempio pratico :)

Page 4: Agileday2013 pratiche agili applicate all'infrastruttura

Il nostro primo progetto

• Infrastruttura particolarmente complessa

• Necessità di simulare una rete privata con due server

Page 5: Agileday2013 pratiche agili applicate all'infrastruttura

Le componenti in gioco?

• Esigenza:

• Creare ambiente per lo sviluppo

• Replicare questo ambiente dal cliente

Page 6: Agileday2013 pratiche agili applicate all'infrastruttura

Grafo delle dipendenze dell'Infrastruttura

Page 7: Agileday2013 pratiche agili applicate all'infrastruttura

Problemi comuni

• Gestire tutte le dipendenze

• Perdersi in configurazioni complesse

• Sporcare l'ambiente con componenti non più necessarie

• Non riuscire più a riprodurre fedelmente l'ambiente

• Figuriamoci per un Dev...

Page 8: Agileday2013 pratiche agili applicate all'infrastruttura

Problemi comuni

Page 9: Agileday2013 pratiche agili applicate all'infrastruttura

Virtualizziamo?

• Virtualizzare è stata la prima scelta

• Non vogliamo sporcare il nostro computer

Page 10: Agileday2013 pratiche agili applicate all'infrastruttura

Virtualizzare non basta

• Condividiamo le VM tra sviluppatori?

• Mantengo snapshot di VM stabili e poi continuo a provare nuove configurazioni?

• E se poi vogliamo fare il deploy?

• Troppo meccanico

• Troppo costoso

• Non funziona!

Page 11: Agileday2013 pratiche agili applicate all'infrastruttura

Parliamone … !!

Vediamo un po' se esistono metodi e tool che possono tornarci utili!

Page 12: Agileday2013 pratiche agili applicate all'infrastruttura

DevOpsUnified tooling

• Replicabilità, distribuzione e manutenibilità di ambienti complessi

• Gestione di più ambienti di deploy

• Codice per Documentazione

• Sviluppo incrementale

• Dev e Ops finalmente riescono a capirsi!

Page 13: Agileday2013 pratiche agili applicate all'infrastruttura

Quali tool utilizzabili?

• Software Configuration Management

• Git, SVN, Mercurial, etc ...

• Deeply Modeled-System

• Puppet, Chef, Salt Stack, etc ...

• Automation of repetitive tasks

• Vagrant

• Capistrano, Fabric, ...

• Maven

Page 14: Agileday2013 pratiche agili applicate all'infrastruttura

Vagrant

http://www.vagrantup.com

È una interfaccia per diversi provider di Virtual Machine: VirtualBox, Amazon EC2, digitalOcean e altri.

Vagrant esegue le VM su diversi provider e fornisce i primi parametri di configurazione.

Page 15: Agileday2013 pratiche agili applicate all'infrastruttura

Puppet

http://www.puppetlabs.com

È un software di automazione che ci consente di descrivere e gestire configurazioni molto dettagliate di infrastrutture.

Page 16: Agileday2013 pratiche agili applicate all'infrastruttura

Le nostre scelte

• Perché questi strumenti?

• Più vicini al nostro mondo Dev:Vagrant e Puppet sono Ruby!

Page 17: Agileday2013 pratiche agili applicate all'infrastruttura

Vagrant in action!

Vagrantfile di esempio

Page 18: Agileday2013 pratiche agili applicate all'infrastruttura

Puppet in action!

Puppet per installare econfigurare Cube

Page 19: Agileday2013 pratiche agili applicate all'infrastruttura

Vagrant & Puppet in action

Le configurazioni Vagrant e Puppet sono codice Ruby!

Page 20: Agileday2013 pratiche agili applicate all'infrastruttura

Vagrant & Puppet in action

Le configurazioni Vagrant e Puppet sono codice Ruby!

Quindi l'Infrastruttura è codice?

Page 21: Agileday2013 pratiche agili applicate all'infrastruttura

Infrastruttura come codice?

• Come sviluppatori siamo abituati a gestire diverse dipendenze tra componenti software (classi, package e librerie)

• Ma anche le infrastrutture hanno delle dipendenze!

• File e Directory

• Utenti

• Software e loro configurazione

Page 22: Agileday2013 pratiche agili applicate all'infrastruttura

Infrastruttura come codice!

Cominciamo a capirci!

Se possiamo descrivere una infrastruttura complessa tramite del

codice, allora ...

Page 23: Agileday2013 pratiche agili applicate all'infrastruttura

Infrastruttura come codice!

Possiamo usare un software per il controllo di versione e sfruttarne tutte le

potenzialità.

Page 24: Agileday2013 pratiche agili applicate all'infrastruttura

Infrastruttura come codice!

Possiamo seguire uno sviluppo incrementale.

Page 25: Agileday2013 pratiche agili applicate all'infrastruttura

Infrastruttura come codice!

Possiamo applicare metodi di sviluppo Agili:Test Driven Development

Page 26: Agileday2013 pratiche agili applicate all'infrastruttura

Testing dell’infrastruttura

Come facciamo il Testing dell'Infrastruttura?

Page 27: Agileday2013 pratiche agili applicate all'infrastruttura

Testing dell’infrastruttura

Trial & Error

Page 28: Agileday2013 pratiche agili applicate all'infrastruttura

Testing dell’infrastruttura

Dry run / No Op

Page 29: Agileday2013 pratiche agili applicate all'infrastruttura

Testing dell’infrastruttura

Test automatici

Page 30: Agileday2013 pratiche agili applicate all'infrastruttura

Testing dell’infrastruttura

Code standard compliant

VS

Page 31: Agileday2013 pratiche agili applicate all'infrastruttura

Ancora poca esperienza

Testing dell'Infrastruttra solo con“Trial & Error” e “Dry run”

• È come fare test manuali del software: funziona ma porta via molto tempo.

• Il test copre l'intero setup della configurazione piuttosto che le singole componenti.

Page 32: Agileday2013 pratiche agili applicate all'infrastruttura

Vantaggi per lo sviluppo

• Possibilità di distruggere e ricreare l'ambiente quando vogliamo

• A seguito di una prova o di un deploy, ho compromesso l'ambiente

• Impiego meno tempo a buttar via tutto e ricaricare da zero l'ambiente, piuttosto che cercare di risolvere manualmente I conflitti

Page 33: Agileday2013 pratiche agili applicate all'infrastruttura

Risultati ottenuti

• Documentazione della configurazione dell'ambiente come codice

• Sviluppo incrementale dell'infrastruttura

• Destroy e Reload dell'infrastruttura a costo zero.

• Alta manutenibilità dell'infrastruttura

• Replicabilità dell'Infrastruttura dal cliente

Page 34: Agileday2013 pratiche agili applicate all'infrastruttura

Ancora ...

Fornire codice e NON costanti aggiornamenti di documentazione.

spesso la documentazione non è fedele e può lasciare spazio a libere

interpretazioni.

Page 35: Agileday2013 pratiche agili applicate all'infrastruttura

Ma il nostro software?

Siamo Agili!

Deploy automatico con Capistrano

• Setup database

• Deploy di applicazioni Rails

• Deploy di servizi e gestione degli stessi (start, stop, restart)

Page 36: Agileday2013 pratiche agili applicate all'infrastruttura

Quali altri progetti?

• Beancounter

• Un grado di complessità più alto

Page 37: Agileday2013 pratiche agili applicate all'infrastruttura

Quali altri progetti?

• Qualcosa in più …

• Provision della VM su provider esterni:

• Amazon EC2 (automatico)

• Azure (manuale)

• Gestione di diversi stage

• Sviluppo

• Integration

• Produzione

Page 38: Agileday2013 pratiche agili applicate all'infrastruttura

Quali altri progetti?

• Hadoop

• Test automatici

• Code standard compliant

Page 39: Agileday2013 pratiche agili applicate all'infrastruttura

Infrastruttura come codice! Quali tool?

• Rspec-Puppet

• Come funziona?

• Perché?

• Multi environment

• Regression test

Page 40: Agileday2013 pratiche agili applicate all'infrastruttura

Infrastruttura come codice! Quali tool?

Ma se ho i test allora posso fare refactoring!

Page 41: Agileday2013 pratiche agili applicate all'infrastruttura

Infrastruttura come codice! Quali tool?

Ma se ho i test allora posso fare refactoring!

Vediamo un esempio...

Page 42: Agileday2013 pratiche agili applicate all'infrastruttura

Refactoring dell'Infrastruttura

Page 43: Agileday2013 pratiche agili applicate all'infrastruttura

Refactoringdell'Infrastruttura

Ok, test “rossi”, facciamoli diventare verdi! Scriviamo codice!

Page 44: Agileday2013 pratiche agili applicate all'infrastruttura

Refactoring dell'Infrastruttura

NODO DI ESEMPIO

Page 45: Agileday2013 pratiche agili applicate all'infrastruttura

Refactoring dell'Infrastruttura

Page 46: Agileday2013 pratiche agili applicate all'infrastruttura

Refactoring dell'Infrastruttura

POSSIAMO ESTRARRE QUESTOCODICE!

Page 47: Agileday2013 pratiche agili applicate all'infrastruttura

Refactoring dell'Infrastruttura

Abbiamo estratto il codice interessato in una risorsa definita coma “User::Complete”.

Test!

Page 48: Agileday2013 pratiche agili applicate all'infrastruttura

Refactoring dell'Infrastruttura

AGGIUNGIAMO UN NUOVO TEST PER IL NODO EXAMPLE.

DICIAMO CHE DEVE CONTENERE UNA RISORSA DI TIPO USER::COMPLETE

TUTTI I VECCHI TEST NON SERVONO PIÙ!BUTTIAMOLI VIA.

Page 49: Agileday2013 pratiche agili applicate all'infrastruttura

Refactoring dell'Infrastruttura

Page 50: Agileday2013 pratiche agili applicate all'infrastruttura

Refactoringdell'Infrastruttura

• I test che avete visto non sono corretti

• Non ha senso testare la presenza di risorse che sono definite in modo espilicito nel puppet

• È utile ricorrere ai test solo se abbiamo delle strutture condizionali all'interno dei puppet

• È utile ricorrere ai test nei casi di regression test: aggiungiamo nuove feature

• I test che avete visto sono solo degli esempi!

Page 51: Agileday2013 pratiche agili applicate all'infrastruttura

Infrastruttura come codice! Quali tool?

• Puppet-lint

• Capire se il nostro codice è conforme agli standard

• Come funziona?

Page 52: Agileday2013 pratiche agili applicate all'infrastruttura

Cosa abbiamo capito?

La nostra esperienza termina qui, per ora!

Ma cosa abbiamo capito da quello che abbiamo fatto?

Siamo riusciti a trattare problematiche del mondo operational con un metodo a noi

familiare.

Dev e Ops non sono poi così distanti! :)

Page 53: Agileday2013 pratiche agili applicate all'infrastruttura

Finisce qui ...

Happy Infrastructure Coding :)

Page 54: Agileday2013 pratiche agili applicate all'infrastruttura

… Extra Time!

Extra Time!

• Replicare un ambiente per piattaforma Diaspora*

• Il progetto completo è su GitHub joebew42

• Demo pratica per chi è interessato!

Page 55: Agileday2013 pratiche agili applicate all'infrastruttura

Grazie...Sì, abbiamo finito!

• Website www.xpeppers.com

• E-Mail [email protected]

• Twitter @xpeppers, @trink0, @joebew42

• Sede Via Oss Mazzurana 45,

• Tel 0461 1823400