DevOps è una filosofia e un framework in evoluzione che promuove uno sviluppo applicativo migliore e più efficace e una release più rapida di prodotti o funzionalità software, nuovi o aggiornati, ai clienti.
Le pratiche di DevOps favoriscono comunicazioni, collaborazioni, integrazione, visibilità e trasparenza continue e più semplici tra i team di sviluppo delle applicazioni (Dev) e le controparti del team operativo IT (Ops).
Questa stretta relazione tra "Dev" e "Ops" permea ogni fase del ciclo di vita DevOps: dalla pianificazione iniziale del software alle fasi di codifica, creazione, test e release, fino all'implementazione, alle operazioni e al monitoraggio continuo. Inoltre, genera un ciclo continuo di attività di miglioramento, sviluppo, test e implementazione basato sul feedback dei clienti. Uno dei risultati di tali pratiche può essere la release continua e più rapida delle modifiche o delle integrazioni delle funzionalità necessarie.
Alcuni suddividono gli obiettivi di DevOps in quattro categorie, Cultura, Automazione, Misurazione e Condivisione (CAMS), ovvero tutte aree nelle quali l'utilizzo dei tool di DevOps può essere vantaggioso. Questi strumenti possono rendere i flussi di lavoro delle operazioni e dello sviluppo più semplici e collaborativi, automatizzando le attività manuali o statiche, che in precedenza richiedevano molto tempo, collegate alle fasi di integrazione, sviluppo, test, implementazione o monitoraggio.
La metodologia DevOps è fondamentale non solo perché si pone l'obiettivo di abbattere le barriere alla comunicazione e alla collaborazione tra team di sviluppo e team operativi IT, ma anche ai fini di una maggiore soddisfazione dei clienti e rapidità nell'offerta di valore. DevOps è inoltre progettato per promuovere l'innovazione del business e favorire il miglioramento continuo dei processi.
Le pratiche di DevOps incoraggiano un'offerta di valore di business più rapida, migliore e sicura ai clienti finali di un'organizzazione. Questo valore può esprimersi sotto forma di release, funzionalità o aggiornamenti dei prodotti più frequenti. Può riguardare la rapidità con cui la release di un prodotto o di una nuova funzionalità diventa accessibile ai clienti, senza tuttavia compromettere i corretti livelli di qualità e sicurezza. Oppure, può concentrarsi sulla rapidità con cui viene identificato e risolto un problema o un bug prima di una nuova release.
L'infrastruttura sottostante supporta le pratiche di DevOps anche con performance, disponibilità e affidabilità del software ottimali, grazie ai processi di sviluppo e test che precedono l'invio del software all'ambiente di produzione.
Esistono alcuni metodi DevOps di uso comune che le organizzazioni possono adottare per accelerare e migliorare lo sviluppo e le release dei prodotti. Si tratta di metodologie e pratiche di sviluppo software. Tra le più popolari sono incluse Scrum, Kanban e Agile:
I seguaci delle pratiche DevOps spesso utilizzano alcuni tool compatibili con DevOps come parte della loro "toolchain" DevOps. L'obiettivo di questi strumenti è quello di ottimizzare, ridurre e automatizzare ulteriormente le varie fasi del flusso di lavoro di delivery del software (o "pipeline"). Molti di questi tool promuovono anche i principi DevOps fondamentali di automazione, collaborazione e integrazione tra team di sviluppo e operativi. Di seguito sono indicati alcuni tool di esempio utilizzati nelle varie fasi del ciclo di vita DevOps.
Le pratiche DevOps riflettono l'idea di un miglioramento e un'automazione continui. Molte pratiche si concentrano su una o più fasi del ciclo di sviluppo. Queste includono:
I sostenitori di DevOps ne descrivono diversi vantaggi tecnici e aziendali, molti dei quali contribuiscono a migliorare la soddisfazione dei clienti. Alcuni di questi vantaggi chiave includono:
Molti metodi DevOps per semplificare lo sviluppo e l'implementazione del software affondano le loro radici nello sviluppo agile del software e nella programmazione snella. Tuttavia, originariamente DevOps nasce come evoluzione di diversi movimenti di base allo scopo di armonizzare le attività degli sviluppatori e delle loro controparti nei team operativi.
I primi anni 2000 hanno visto la necessità di garantire la disponibilità di siti Web popolari come Google e Flickr, che riscuotevano un enorme successo. Questa esigenza ha reso necessario rivolgersi ai Software Reliability Engineer (SRE), ovvero personale operativo che lavora a stretto contatto con gli sviluppatori per garantire il funzionamento ininterrotto dei siti dopo la release in produzione del loro codice.
Nel 2009 gli ingegneri di Flickr, John Allspaw e Paul Hammond, hanno presentato la propria metodologia DevOps in una conferenza. Il titolo della loro presentazione era "10+ Deploys per Day: Dev and Ops Cooperation at Flickr". Lo stesso anno, Patrick Debois ha organizzato il primo "DevOps Day" in Belgio. Anche l'hashtag #DevOps, creato in questa occasione, ha ottenuto un enorme slancio man mano che altri DevOps Day venivano organizzati in tutto il mondo.
Negli anni successivi, sono stati sviluppati e proposti framework e tool open-source e di settore per promuovere gli obiettivi di DevOps.
NetApp aiuta a promuovere risultati di business migliori grazie alla metodologia DevOps: i team operativi offrono un'infrastruttura automatizzata con meno processi di engineering e gli sviluppatori creano in ambienti affidabili e prevedibili con meno ostacoli. Grazie alla tecnologia NetApp®, puoi offrire in tutta sicurezza i servizi e le funzionalità di cui la tua organizzazione ha bisogno per massimizzare la produttività degli sviluppatori in ambienti sia on-premise che nel cloud.
NetApp permette a sviluppatori e team operativi o addetti alle procedure di test e QA di utilizzare le risorse dell'infrastruttura, ad esempio i volumi di storage persistenti, come codice direttamente dai tool familiari della pipeline DevOps. Un esempio sono le API di storage NetApp e le integrazioni IAC con tool come Puppet, Ansible, Docker, Kubernetes e OpenShift.
Tuttavia, NetApp non si limita solo a semplificare l'utilizzo dello storage come codice da parte degli sviluppatori. La tecnologia NetApp supporta anche operazioni che consentono di fornire risorse al personale responsabile delle procedure di sviluppo e test, in sicurezza. In questo modo, sviluppatori e tester possono accelerare i cicli di codifica e test mediante il provisioning automatico di funzionalità di storage rapide ed efficienti, come snapshot o cloni. Grazie a queste funzionalità, è possibile eseguire in pochi secondi o minuti il provisioning come codice di copie di dati di produzione o set di codici in tempo reale, per accelerare il flusso di lavoro di sviluppo e QA.
L'impegno di NetApp nei confronti della community si estende a thePub, una community di sviluppatori che favorisce la collaborazione, condivide suggerimenti e trucchi ed esamina idee sulle pratiche e i protocolli DevOps più recenti.