Menu

Cos'è DevOps?

Argomenti

Condivi questa pagina

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.

Perché DevOps è importante

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.

Metodi DevOps

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:

  • Scrum. Scrum definisce il modo in cui i membri di un team devono collaborare per accelerare i progetti di sviluppo e QA. Le pratiche di Scrum includono flussi di lavoro chiave e terminologia specifica (sprint, time box, daily scrum [meeting]), nonché ruoli designati (Scrum Master, Product Owner).
  • Kanban. Kanban è una metodologia nata dalle pratiche efficienti adottate nello stabilimento della Toyota. Kanban prevede che lo stato di un progetto software Work in Progress (WIP) venga monitorato su una lavagna Kanban.
  • Agile. I precedenti metodi di sviluppo software agile continuano a influenzare fortemente le pratiche e gli strumenti DevOps. Molte metodologie DevOps, tra cui Scrum e Kanban, incorporano elementi di programmazione agile. Alcune pratiche agili sono associate a una maggiore reattività alle esigenze e ai requisiti in continua evoluzione, sulla base di pratiche di documentazione dei requisiti specifici degli utenti, relazioni quotidiane e integrazione dei feedback continui dei clienti. Agile inoltre, prevede cicli di vita dello sviluppo software più brevi rispetto ai metodi di sviluppo tradizionali a cascata, che sono lunghi e complessi.

Catena DevOps

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.

  • Pianificazione. Questa fase aiuta a definire valore e requisiti aziendali. Gli strumenti di esempio includono Jira o Git, che consentono di tenere traccia dei problemi noti e di eseguire la gestione dei progetti.
  • Codificazione. Questa fase prevede la progettazione del software e la creazione di codice software. Gli strumenti di esempio includono GitHub, GitLab, Bitbucket o Stash.
  • Crea. In questa fase, si gestiscono build e versioni del software e si utilizzano strumenti automatizzati per aiutare a compilare e creare pacchetti di codice per il rilascio futuro alla produzione. Si utilizzano repository del codice sorgente o repository di pacchetti che includono anche l'infrastruttura di "pacchetto" necessaria per il rilascio del prodotto. Alcuni esempi di strumenti includono Docker, Ansible, Puppet, Chef, Gradle, Maven o JFrog Artifactory.
  • Test. Questa fase prevede test continui (manuali o automatizzati) per garantire una qualità ottimale del codice. Gli strumenti di esempio includono JUnit, Codeception, Selenium, Vagrant, TestNG o BlazeMeter.
  • Implementa. Questa fase può includere strumenti che aiutano a gestire, coordinare, pianificare e automatizzare il rilascio dei prodotti nella produzione. Alcuni strumenti di esempio includono Puppet, Chef, Ansible, Jenkins, Kubernetes, OpenShift, OpenStack, Docker o Jira.
  • Messa in funzione. Questa fase gestisce il software durante la produzione. Alcuni strumenti di esempio includono Ansible, Puppet, PowerShell, Chef, Salt o Otter.
  • Monitoraggio. Questa fase prevede l'identificazione e la raccolta di informazioni sui problemi riscontrati in una specifica release del software nella produzione. Gli strumenti di esempio includono New Relic, Datadog, Grafana, Wireshark, Splunk, Nagios o Slack.

Pratiche 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:

  • Sviluppo continuo. Questa pratica copre le fasi di pianificazione e codifica del ciclo di vita DevOps. Potrebbero essere coinvolti meccanismi di controllo della versione.
  • Test continui. Questa pratica include test del codice automatizzati, programmati e continui, durante la scrittura o l'aggiornamento del codice dell'applicazione. Tali test possono accelerare la consegna del codice alla produzione.
  • Integrazione continua (CI). Questa pratica integra strumenti di gestione della configurazione (CM) con altri strumenti di test e sviluppo per monitorare la percentuale di codice pronto per la produzione. Prevede un rapido ciclo di feedback tra test e sviluppo per identificare e risolvere rapidamente i problemi del codice.
  • Continuous deliveryQuesta pratica automatizza la distribuzione delle modifiche del codice, successive al test, a un ambiente di pre-produzione o di staging. Un membro dello staff potrebbe quindi decidere di promuovere tali modifiche del codice in produzione.
  • Continuous deployment (CD). Simile alla distribuzione continua, questa pratica automatizza il rilascio di codice nuovo o modificato in produzione. Un'azienda che esegue una distribuzione continua potrebbe rilasciare modifiche di codice o di funzionalità diverse volte al giorno. L'utilizzo di tecnologie di container, come Docker e Kubernetes, può consentire un'implementazione continua contribuendo a mantenere la coerenza del codice in ambienti e piattaforme di implementazione diversi.
  • Monitoraggio continuo. Questa pratica prevede il monitoraggio continuo sia del codice operativo che dell'infrastruttura sottostante. Successivamente, un ciclo di feedback che segnala eventuali bug o problemi viene restituito all'ambiente di sviluppo.
  • Infrastructure as a Code. Questo approccio può essere utilizzato durante varie fasi DevOps per automatizzare il provisioning dell'infrastruttura necessaria per il rilascio di software. Gli sviluppatori aggiungono "codice" dell'infrastruttura dai propri strumenti di sviluppo esistenti. Ad esempio, gli sviluppatori possono creare un volume di storage on-demand da Docker, Kubernetes o OpenShift. Questa pratica consente inoltre ai team operativi di monitorare le configurazioni dell'ambiente, tenere traccia delle modifiche e semplificare il rollback delle configurazioni.

Vantaggi di DevOps

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:

  • Consegna dei prodotti più rapida ed efficiente
  • Risoluzione dei problemi più tempestiva e minore complessità
  • Più scalabilità e disponibilità
  • Ambienti operativi più stabili
  • Utilizzo più efficiente delle risorse
  • Più automazione
  • Maggiore visibilità sui risultati del sistema
  • Più innovazione

Storia di DevOps

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.

NetApp e 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.

DEVOPS: GUIDA COMPLETA ALLA CULTURA, ALLA TECNOLOGIA E AGLI STRUMENTI

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.

Drift chat loading