Consigli per evitare la distruzione della migrazione culturale verso DevOps. Vedremo un team con "attori" importanti provare a migrare verso buone pratiche e capiremo quanto è difficile arrivare, ma semplice distruggere tutto.
[Eng] Sql Saturday TorinoExpo - Sql Server 2016 JSON support
Wpc2019 - Distruggere DevOps, la storia di un vero team
1.
2. Basta poco per
distruggere DevOps
Alessandro Alpi
Microsoft MVP Data Platform dal 2008
CTO di Engage IT Services Srl
Staff member di GetLatestVersion.it
www.wpc2019.it 2
GetLatestVersion.it
3. Introduzione
La vita di un team, le scelte e le conseguenze
Q&A
www.wpc2019.it 3
Agenda
5. Il termine nasce nel lontano 2009 (DevOpsDays)
Risponde a esigenze precise (pragmatico)
Aumento qualità
Miglioramento continuo
Aumento frequenza rilascio
“Standard” di ambienti di sviluppo e processi
È supportato da un set di strumenti, non è un set di strumenti
È cultura e persone
È qualcosa che alcuni di noi hanno dentro e facevano da
tempo, senza avere gli strumenti di oggi
www.wpc2019.it 5
Un po’ di
storia
6. Per citare qualcosa…
Sta nelle persone
Sta nella cultura del team
Sta nel distacco e nei compartimenti stagni
Nasce dallo hype e dalle incomprensioni
Risiede nell’incapacità di recepire il cambiamento
Vive di personalizzazioni
Si nutre della mancata formazione
…
www.wpc2019.it 6
La sua
fragilità
10. Il board e il mentore
www.wpc2019.it 10
Gli “attori”
dell’azienda
Assenza di scrupoli Decisionale, esecutivo
Crede nella causa
11. Dall’alto viene la richiesta di cambiare, di diventare DevOps
Strumenti?
Ideali?
Necessità?
PENSARE PRIMA DI TUTTO
AL CAMBIAMENTO CULTURALE
Quale la filosofia?
Cosa si fa e cosa si dovrebbe fare?
Come rendere la trasformazione più
indolore?
www.wpc2019.it 11
La missione
13. Principali conseguenze:
Development e Operations non saranno mai insieme
La crescita di team non esiste
Aumenta la probabilità di divide et impera
Development e Operations non si sentono coinvolti
Si aggiunge burocrazia non utile
www.wpc2019.it 13
Errore n. 1
La vostra strategia DevOps partire dovrebbe dalla
interoperazione tra Dev e Ops, non da nuovi
dipartimenti
14. Non si valutano l’attitudine del personale e il carico di lavoro
www.wpc2019.it 14
Errore n. 2
Si parte! E siccome è un nuovo approccio,
inizieremo fin da subito a lavorare così.
Ha senso? Cosa dobbiamo
fare? E cosa facciamo con i
lavori in essere?
15. Principali conseguenze:
Non si conoscono le priorità di lavoro
Non si sapranno scegliere gli strumenti (a priori, poi)
Probabilmente fallirà tutto in un “noi non possiamo!”
Il nostro gruppo di lavoro, in parte, se ne convincerà
Le persone e il budget saranno fuori controllo
www.wpc2019.it 15
Errore n. 2
Il fallimento di DevOps, in questo caso, dall’incapacità
di dare priorità al lavoro nasce
16. Ci si pongono obbiettivi non realistici
www.wpc2019.it 16
Errore n. 3
Come prima cosa, faremo automatismo di
tutto quello che avevamo, così rilasciamo
prima
Abbiamo una marea di
progetti, servizi e prodotti,
come facciamo?
Su che base?
17. Principali conseguenze:
Si investe tempo per avere potenziale frustrazione
Si riduce la qualità del lavoro e del risultato
Si perde l’impegno delle persone e la loro proattività
Non si relaziona il lavoro con il valore di business
Si rischia di non raggiungere il nobile obbiettivo
www.wpc2019.it 17
Errore n. 3
Fare tanti rilasci tanto per farli, valore aggiunto alcuno
non porta. La qualità del servizio e la soddisfazione del
cliente invece considerati vanno.
18. Ci sono resistenze, si cercano soluzioni ibride
www.wpc2019.it 18
Errore n. 4
Vista la complessità, teniamo separate
Dev e Ops, ma lavoriamo in maniera agile,
con approccio ibrido
{Torniamo a fare il
nostro lavoro
velocemente, senza
fermi e rotture}
x@y :-$ Ci vediamo al
prossimo down che
provocate!_
19. Principali conseguenze:
Si accentuatano gli “storici” scontri
I famosi silo isolati di persone si ripresentano
Si ha l’illusione di lavorare DevOps, ma non è così
La divisione porta ad avere i problemi passati
www.wpc2019.it 19
Errore n. 4
Più un’azienda strutturata è, più pensare alla
“vicinanza” tra Dev e Ops dovrebbe.
20. Resistenza al cambiamento
www.wpc2019.it 20
Errore n. 5
{Ragazzi, a me
spaventa questo
DevOps, lavoriamo
già bene così!}
:-$ concordo,
più strumenti
significa più
da fare
(preme tasti…)
{Invece dovremmo
migliorare la
qualità del
nostro lavoro}
:-$ dai dai,
facciamo, è
un’occasione
:-$ docker run
2 o 3 a favore, non si vuole veramente cambiare
21. Principali conseguenze:
Senza cambiamento non cambiamo la nostra cultura
Ci si accontenta di quello che va, perché va
Non si migliora mai il team
Il blocco del cambiamento giustifica le cattive abitudini
Le buone idee diventano pericolose
www.wpc2019.it 21
Errore n. 5
Il cambiamento mai doloroso è, solo la resistenza al
cambiamento lo è.
22. Nessuna formazione
www.wpc2019.it 22
Errore n. 6
{In effetti…}
{Ragazzi, ci serve
un piano di
formazione per
migliorarci}
{Mi hai fatto fare
solo report per
mesi, Sheldon!}
Non c’è il budget, prima
servono più persone. Siamo
lenti.
23. Principali conseguenze:
Niente “lavagne”, tanto le cancelliamo! (fate foto )
La formazione è un costo, si perde l’occasione di crescita
Le persone perdono stimoli se non hanno tempo di
imparare
www.wpc2019.it 23
Errore n. 6
Una strategia DevOps efficace, sul miglioramento
continuo dovrebbe basarsi
24. Il team è poco in sintonia, iniziano le personalizzazioni estreme
www.wpc2019.it 24
Errore n. 7
{Che confusione,
non so più che
devo fare!}
:-$ problemi
da dev
{Bah, creo la mia
soluzione, che è
vincente}
{Mio dio, non ci
sono regole,
tutto custom!}
:-$ io ho la
mia cartella
di script per
ogni realtà
:-$ docker
update
25. Principali conseguenze:
Si creano toolset ad personam
Si creano N linee di sviluppo
Codebase non comune
Ognuno vive col “suo” lavoro
Source Control, questo sconosciuto
www.wpc2019.it 25
Errore n. 7
Per avere successo con DevOps, standard di
sviluppo, gestione e infrastruttura servonoS
26. Si crea lo spazio per chi ama governare
www.wpc2019.it 26
Errore n. 8
{Ci penso io!}
:-$ decidiamo
noi cosa fare
27. Principali conseguenze:
Decisione dittatoriale, non dal team
Creazione di figure di comando (non ufficializzate)
Ogni processo è modificabile se il “comandante” lo decide
Figure indispensabili per la sopravvivenza
www.wpc2019.it 27
Errore n. 8
Per il miglioramento continuo, condivisione e
consapevolezza necessarie sono
28. Si aprono le possibilità di fare il non previsto
www.wpc2019.it 28
Errore n. 9
{certo, il mio
team lo farà il
prima possibile}
:-$ io non ho
tempo di
rilasciare
Mi serve questo report “da 5 minuti”,
subito!
{Ehm, abbiamo
altro da
terminare!}
29. Principali conseguenze:
Annullare le priorità decise prima
Fare cose che non servono, che non danno valore
Diseducare tutta la filiera
www.wpc2019.it 29
Errore n. 9
La corretta gestione delle priorità, l’unica strada è
30. Si pensa agli strumenti, non alle persone e al rilascio
www.wpc2019.it 30
Errore n. 10
Installiamo GestisciTutto™ e Attracco™, così
finalmente potremmo dire di essere
veramente DevOps.
31. Principali conseguenze:
Abbandonare la strada della migrazione culturale
Non valorizzare le persone
Non responsabilizzare le persone
Non crescere
www.wpc2019.it 31
Errore n. 10
Gli individui e le interazioni più che i processi e gli
strumenti
32. Non si pensa al rilascio, per cui fix in produzione!
www.wpc2019.it 32
Errore n. 11
È tutto fermo!
Ç@#*#@*@[#!!
{Mi connetto in
produzione e
sistemo, non ho
altro modo}
33. Principali conseguenze:
“Drift” di produzione rispetto alle linee di sviluppo
Rischio di sovrascrivere modifiche da tenere
Non ho alcun controllo delle modifiche
Non ho visibilità delle versioni di ogni installazione
Salto sempre la parte di test/preprod/ecc.
Il rilascio, come idea compatta, non esiste proprio
www.wpc2019.it 33
Errore n. 11
Una pipeline solida e di cui ci si può dimenticare
serve
34. Reinventare la ruota
www.wpc2019.it 34
Errore n. 12
{Ho scritto un framework
di generazione dei
comandi SQL in sole 3
settimane!}
{Ah beh, un ORM?
Hai perso tempo.}
{Entity
Framework?
NHibernate?}
35. Principali conseguenze:
Atteggiamento di diffidenza sugli altri framework
“Proprietà” del codice, intoccabile da altri
Manutenzione continua e debug
Evoluzione continua col resto dei framework
Tipicamente non Open Source
www.wpc2019.it 35
Errore n. 12
Per il valore aggiunto, consapevolezza di
strumenti e selezione del software necessari sono
36. Anarchia e isolamento
www.wpc2019.it 36
Errore n. 13
{Come la chiamo
questo metodo,
facciamo
DoSomething()}
:-$ tanto
faccio sempre
quello che mi
pare
{ma no! si usa
doSomething()}
{io ho scritto
Do(Something
some)}
:-$ il “mio”
metodo è il
migliore
:-$ forse è
meglio
condividere?
37. Principali conseguenze:
Senza Coding Style il codice è illeggibile
Senza Coding Rules il codice è meno standard
Senza Naming Conventions e non si parla la stessa lingua
Senza condivisione del glossario si perde tempo in analisi
Incentivo al lavoro in solitudine (Silo ad personam)
www.wpc2019.it 37
Errore n. 13
Disciplina e regole condivise per un successo di
team servono