I principi delle “Tre Vie” sono stati presentati nel libro The Phoenix Project di Gene Kim, Jez Humble e Patrick Desbois. I principi “Three Ways” rappresentano la filosofia alla base del movimento DevOps e forniscono una guida su come ottimizzare il flusso di lavoro, creare cicli di feedback rapidi e promuovere una cultura di apprendimento continuo e sperimentazione. Quali sono questi principi e come possono aiutare le organizzazioni a migliorare la collaborazione tra sviluppo e operation?
Ecco i tre principi:
The First Way: Flusso e Pensiero Sistemico (Flow & System Thinking)
The Second Way: Ciclo di Feedback (Amplify Feedback Loops)
The Third Way : Apprendimento Continuo e Sperimentazione (Culture of Continual Experimentation & Learning Copyright: PeopleCert
1. First Way: Flusso e Pensiero Sistemico
La prima “via” si concentra sull’ottimizzazione del flusso di lavoro dallo sviluppo, Dev (lato sinistro del processo) alle operation, Ops (lato destro del processo) e infine al cliente. L’obiettivo è creare un flusso veloce ed efficiente, che permetta di consegnare valore più rapidamente, ridurre gli sprechi e limitare i passaggi intermedi.
Concerne principalmente l’accelerazione del flusso di lavoro all’interno di un processo. Che lo si chiami Flusso o Pensiero Sistemico, i principi First Way lavorano verso lo stesso obiettivo: vedere il flusso di lavoro come un sistema continuo (non suddiviso in compartimenti stagni) che può essere costantemente migliorato e ottimizzato.
Business
Customer
Dev
Ops
Principi chiave:
Rendere il lavoro “visibile”: A differenza dei processi di produzione visibili su una linea di montaggio, il flusso del software attraverso il ciclo di sviluppo non è facilmente osservabile. Strumenti come le Kanban board possono rendere visibili le attività dietro le quinte, mostrando il movimento da sinistra a destra, da Dev a Ops, di una user story attraverso le varie fasi di sviluppo.
Massimizzare il flusso di lavoro: Accelerare la consegna di funzionalità, aggiornamenti e correzioni dal team di sviluppo a quello di operazioni, identificando e rimuovendo colli di bottiglia.
Ridurre le dimensioni dei batch: Lavorare in piccoli lotti riduce la complessità e permette una consegna più rapida e un feedback tempestivo.
Limitare il Work in Progress: mantenere il work-in-progress al minimo è un fattore importante per accelerare il flusso di lavoro, perché minimizza il tasking e il cambio contesto
Ottimizzare per l’intero sistema: Pensare al sistema nel suo complesso, piuttosto che ottimizzare solo le singole parti. Se ci sono delle ottimizzazioni o miglioramenti, bisogna sempre valutare l’effetto e le conseguenze che possono avere sul flusso generale. L’approccio deve essere olistico, non focalizzato sulle attività verticali dei dipartimenti coinvolti.
Identificare e rimuovere vincoli e sprechi: L’obiettivo deve essere quello di migliorare il flusso, quindi bisogna identificare e rimuovere i vincoli e i colli di bottiglia. Tutto ciò che non serve e non aggiunge valore deve essere rimosso.
Esempi nelle pratiche DevOps:
Integrazione Continua (CI): Unione frequente del codice nelle branch principali per garantire un flusso di lavoro senza intoppi.
Consegna Continua (CD): Automazione del processo di rilascio per rendere la consegna più veloce, ripetibile e affidabile.
2. Secondo Way: Amplificare i Cicli di Feedback
La seconda “via” riguarda la creazione di cicli di feedback rapidi e continui, in modo che i problemi possano essere identificati e risolti rapidamente. Il suo obiettivo è accorciare e amplificare il ciclo di feedback tra operazioni e sviluppo (da destra a sinistra) per rendere il sistema più resiliente e adattabile.
Principi chiave:
Rilevare e risolvere i problemi rapidamente: Implementare pratiche che permettano di individuare e risolvere i problemi appena si verificano.
Creare cicli di feedback tempestivi: Il feedback dagli ambienti di produzione deve raggiungere rapidamente i team di sviluppo, per risolvere i problemi prima che impattino i clienti.
Integrare la qualità nel processo: Test, monitoraggio e controlli di qualità devono essere integrati lungo tutto il ciclo di sviluppo.
Esempi nelle pratiche DevOps:
Test automatici: Forniscono un feedback immediato agli sviluppatori sulla correttezza del loro codice.
Monitoraggio e allerta: Il monitoraggio in tempo reale dei sistemi in produzione consente l’identificazione rapida di guasti o problemi di prestazioni.
3. Third Way: Apprendimento e Sperimentazione Continui
La terza “via” riguarda la creazione di una cultura di sperimentazione continua, apprendimento e miglioramento. Promuove l’uso di esperimenti per favorire l’innovazione e creare un’organizzazione ad alte prestazioni e adattabile. Questa via allontana l’IT Management da una cultura tradizionale basata sulla colpa e garantisce che venga premiata la capacità di assumersi dei rischi e di tentare strade nuove anche quando potenzialmente rischiose. La third way garantisce che il sistema evolva e che il team cresca professionalmente nel tempo grazie al rischio e alla sperimentazione.
Principi chiave:
Favorire una cultura della sperimentazione: Consentire ai team di provare nuove strategie e accettare il fallimento come opportunità di apprendimento.
Incoraggiare l’apprendimento continuo: Investire nella formazione e nello sviluppo dei team, promuovendo l’apprendimento sia dai successi che dagli errori.
Esempi nelle pratiche DevOps:
A/B testing e sperimentazione: Condurre esperimenti in produzione per testare nuove funzionalità.
Kaizen (Miglioramento Continuo): Valutare regolarmente i flussi di lavoro e i sistemi per individuare aree di miglioramento.
Chaos engineering: Introdurre guasti controllati nei sistemi per capire come reagiscono a stress, per allenarli a gestire i problemi ed essere più resilienti.
Importanza delle Tre Vie in DevOps
Le Tre Vie offrono una guida strategica per implementare DevOps. Forniscono principi per:
Aumentare la collaborazione tra team che tradizionalmente lavoravano in compartimenti separati (come sviluppo e operation).
Ridurre il rischio nei rilasci, rendendoli più veloci, più piccoli e più frequenti.
Promuovere l’innovazione e l’adattabilità incoraggiando la sperimentazione e l’apprendimento continuo.
Conclusioni
In conclusione, le Tre Vie di DevOps forniscono una roadmap chiara per aiutare le organizzazioni a migliorare i loro processi di consegna del software, garantire qualità e creare una cultura di innovazione e miglioramento continuo. Insieme, permettono alle organizzazioni di rispondere meglio alle esigenze dei clienti, adattarsi al cambiamento e mantenere un vantaggio competitivo.