DevOps è una filosofia e un framework in evoluzione che promuove un migliore sviluppo applicativo e un rilascio più rapido di prodotti o funzionalità software, nuovi o aggiornati, ai clienti.
La pratica di DevOps favorisce comunicazione, collaborazione, integrazione, visibilità e trasparenza più fluide e costanti tra i team di sviluppo applicativo (Dev) e le controparti operative (Ops).
Questo rapporto più stretto tra "Dev" e "Ops" è presente in ogni fase del ciclo di vita DevOps: dalla pianificazione iniziale del software alle fasi di codifica, compilazione, test e rilascio, fino all'implementazione, alle operazioni e al monitoring costante. Questo rapporto dà vita a un loop di feedback costante dei clienti per miglioramenti, sviluppo, test e implementazioni ulteriori. Uno dei risultati di tali pratiche può essere il rilascio continuo e più rapido delle modifiche o delle integrazioni delle funzionalità necessarie.
Gli obiettivi di DevOps vengono da alcuni suddivisi 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 rilasci, funzionalità o aggiornamenti dei prodotti più frequenti. Può riguardare la rapidità con cui il rilascio 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 un nuovo rilascio.
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 il rilascio 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 specifici strumenti compatibili con DevOps come parte della loro "toolchain" DevOps. L'obiettivo di questi strumenti è semplificare, abbreviare e automatizzare ulteriormente le varie fasi del flusso di lavoro (o "pipeline") di distribuzione del software. Molti di questi strumenti inoltre promuovono i principi DevOps chiave dell'automazione, della collaborazione e dell'integrazione tra i team operativi e di sviluppo. Di seguito viene riportato un esempio di strumenti utilizzati in varie fasi del ciclo di vita DevOps.
Le pratiche DevOps si basano sul concetto di miglioramento continuo e automazione. Molte pratiche si concentrano su una o più fasi del ciclo di sviluppo. Queste pratiche includono:
I sostenitori di DevOps sottolineano numerosi vantaggi sia dal punto di vista aziendale che tecnico, che spesso si traducono in clienti più soddisfatti. I vantaggi di DevOps 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 il rilascio del codice nella produzione.
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 del DevOps.
Grazie alle soluzioni NetApp, i team di gestione operativa forniscono un’infrastruttura automatizzata con meno complessità tecniche e gli sviluppatori possono lavorare 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. Scopri perché NetApp è la soluzione ideale per DevOps.
Perché NetApp è la soluzione ideale per DevOps
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.
La cultura DevOps si concentra su team interdisciplinari di piccole dimensioni che possono lavorare in autonomia e sono responsabili congiuntamente dell'esperienza utente fornita da un prodotto software.