Close

DevOps

DevOps allinea lo sviluppo e le operazioni per ottimizzare la qualità e i rilasci.

Cos'è DevOps?


DevOps è un insieme di pratiche, strumenti e una filosofia culturale che automatizza e integra i processi tra i team di sviluppo software e i team IT. Pone l'accento sull'empowerment, sulla comunicazione e la collaborazione tra team e sull'automazione tecnologica.

Il movimento DevOps è nato intorno al 2007, quando le community di sviluppo software e delle operazioni IT hanno manifestato perplessità sul modello di sviluppo di software tradizionale, in cui gli sviluppatori che scrivevano il codice lavoravano separatamente dal team delle operazioni che si occupava della sua distribuzione e del supporto. Il termine DevOps, una combinazione delle parole "Development" (sviluppo) e "Operations" (operazioni), riflette il percorso di integrazione di queste discipline in un unico processo continuo.

Come funziona DevOps?


Il team DevOps include sviluppatori e addetti alle operazioni IT che collaborano durante l'intero ciclo di vita del prodotto, al fine di aumentare la velocità e la qualità della distribuzione del software. È un nuovo modo di lavorare, un cambiamento culturale, che ha implicazioni significative per i team e le organizzazioni.

Nell'ambito del modello DevOps, i team di sviluppo e delle operazioni non sono più "isolati". A volte, questi due team si uniscono in un unico team in cui gli ingegneri lavorano lungo l'intero ciclo di vita dell'applicazione, dallo sviluppo e test fino alla distribuzione e alle operazioni, e dispongono di un'ampia gamma di competenze multidisciplinari.

I team DevOps utilizzano strumenti per automatizzare e accelerare i processi, il che contribuisce ad aumentare l'affidabilità. La toolchain DevOps aiuta i team ad affrontare gli importanti principi fondamentali di DevOps, tra cui continuous integration, continuous delivery, automazione e collaborazione.

I valori DevOps vengono talvolta applicati a team diversi da quelli di sviluppo. Quando i team di sicurezza adottano l'approccio DevOps, la sicurezza diventa parte attiva e integrata del processo di sviluppo. Questo approccio è denominato DevSecOps.

Il ciclo di vita DevOps


A causa della natura continua di DevOps, i professionisti utilizzano il simbolo dell'infinito per mostrare come le fasi del ciclo di vita DevOps si relazionano tra loro. Nonostante suggerisca l'idea di un flusso continuo, tale simbolo indica la necessità di una collaborazione costante e di un miglioramento iterativo durante l'intero ciclo di vita.

Simbolo dell'infinito di DevOps

Il ciclo di vita DevOps è costituito da otto fasi che rappresentano i processi, le funzionalità e gli strumenti necessari per lo sviluppo (sul lato sinistro) e per le operazioni (sul lato destro). Nel corso di ogni fase, i team collaborano e comunicano per mantenere allineamento, velocity e qualità.

Icona della lente di ingrandimento

Scopri

Creare software è uno sport di squadra. In vista dello sprint successivo, i team devono organizzare workshop per esplorare, organizzare e assegnare la giusta priorità alle idee. Queste ultime, oltre ad allinearsi agli obiettivi strategici, devono avere un impatto sui clienti. Agile può aiutare a guidare i team DevOps.

Pianifica

I team DevOps devono adottare le pratiche Agile per migliorare la velocità e la qualità. Agile è un approccio iterativo alla gestione dei progetti e allo sviluppo del software che aiuta i team a suddividere il lavoro in parti più piccole per offrire valore incrementale.

Compila

Git è un sistema di controllo delle versioni gratuito e open source. Offre eccellente supporto per la creazione di branch, il merge e la riscrittura della cronologia dei repository, il che ha portato a numerosi flussi di lavoro e strumenti potenti e innovativi per il processo di sviluppo.

Icona della checklist

Testa

La continuous integration (CI) consente a più sviluppatori di contribuire a un unico repository condiviso. Eseguito il merge delle modifiche apportate al codice, vengono utilizzati test automatizzati per garantire la correttezza del codice prima dell'integrazione. Eseguendo merge e test del codice, i team di sviluppo acquisiscono fiducia nella qualità e prevedibilità del codice dopo la distribuzione.

icona di un'astronave

Distribuisci

La continuous deployment (CD) consente ai team di rilasciare in produzione funzioni in modo automatico e di frequente. I team hanno anche la possibilità di aggiungere flag delle funzioni, rilasciando nuovo codice agli utenti in modo costante e metodico anziché tutto insieme in una volta. Questo approccio migliora la velocity, la produttività e la sostenibilità dei team di sviluppo software.

Icona ingranaggi

Esegui operazioni

Gestisci il rilascio end-to-end dei servizi IT ai clienti. Ciò include le pratiche coinvolte nelle attività di progettazione, implementazione, configurazione, distribuzione e manutenzione dell'intera l'infrastruttura IT alla base dei servizi dell'organizzazione.

Icona dell'occhio

Osserva

Identifica e risolvi rapidamente i ticket che incidono su tempi di attività, velocità e funzionalità del prodotto. Informa automaticamente il team di modifiche, azioni ad alto rischio o errori, in modo da poter mantenere i servizi attivi.

Feedback DevOps

Feedback continuo

I team DevOps devono valutare ogni rilascio e creare report per migliorare i rilasci futuri. Raccogliendo feedback continui, i team possono migliorare i processi e incorporare i feedback dei clienti per migliorare i rilasci successivi.

Strumenti DevOps


Simbolo dell'infinito di DevOps

Gli strumenti DevOps consentono di gestire le fasi chiave del ciclo di vita DevOps. Potenziano le pratiche DevOps contribuendo a migliorare la collaborazione, ridurre il cambio di contesto, introdurre l'automazione e agevolare l'osservabilità e il monitoraggio.

Le toolchain DevOps sono in genere di due tipi: all-in-one o aperta. La toolchain all-in-one rappresenta una soluzione completa che di solito non si integra con altri strumenti di terze parti, mentre la toolchain aperta consente la personalizzazione con diversi strumenti. Entrambi gli approcci presentano pro e contro.

Un esempio di toolchain DevOps aperta è la soluzione Open DevOps di Atlassian, che include Jira come base e si integra con gli strumenti dei fornitori leader e con le principali app del Marketplace.

Quali sono i vantaggi di DevOps?


Secondo la 2020 DevOps Trends Survey di Atlassian, il 99% degli intervistati ha affermato che DevOps ha avuto un impatto positivo sulla propria organizzazione. I vantaggi di DevOps includono rilasci più rapidi e semplici, efficienza del team, maggiore sicurezza, prodotti di qualità superiore e, di conseguenza, team e clienti più soddisfatti.

Tachimetro

Velocità

I team che utilizzano DevOps effettuano rilasci più frequenti, con qualità e stabilità superiori. In effetti, il report 2019 State of DevOps di DORA ha rilevato che i team eccellenti eseguono distribuzioni 208 volte più frequentemente e 106 volte più rapidamente dei team a basso rendimento. La continuous delivery consente ai team di creare, testare e distribuire software avvalendosi di strumenti automatizzati.

Videochiamata

Collaborazione migliorata

Il fondamento di DevOps è una cultura di collaborazione tra i team di sviluppatori e quelli delle operazioni, che condividono le responsabilità e collaborano tra di loro. Ciò li rende più efficienti e consente di risparmiare tempo per quanto riguarda gli handoff del lavoro e la creazione di codice progettato per l'ambiente in cui viene eseguito.

Razzo del rilascio di codice

Distribuzione rapida

Aumentando la frequenza e la velocity dei rilasci, i team DevOps migliorano rapidamente i prodotti. I rilasci rapidi di nuove funzioni e le tempestive correzioni dei bug consentono di ottenere un vantaggio competitivo.

Pipeline del codice

Qualità e affidabilità

Le pratiche come continuous integration e continuous delivery assicurano che le modifiche siano funzionali e sicure, con conseguente miglioramento della qualità dei prodotti software. Il monitoraggio aiuta i team a restare informati sulle prestazioni in tempo reale.

Scudo della sicurezza

Sicurezza

Integrando la sicurezza in una pipeline di continuous integration, continuous delivery e continuous deployment, DevSecOps è parte attiva e integrata del processo di sviluppo. La sicurezza è incorporata nel prodotto tramite l'integrazione di controlli di protezione attivi e test di sicurezza nei flussi di lavoro di sviluppo Agile e DevOps.

Quali sono le sfide dell'adozione di DevOps?


È difficile rompere le abitudini. I team trincerati in modalità di lavoro in silos possono lottare, o addirittura opporre resistenza, contro gli sforzi di modernizzazione della loro struttura volti all'adozione delle pratiche DevOps. Alcuni team potrebbero erroneamente credere che i nuovi strumenti siano sufficienti per l'implementazione di DevOps. Dimenticano però che DevOps è una combinazione di persone, strumenti e cultura. Tutti i membri di un team DevOps devono conoscere l'intero flusso di valore, dall'ideazione, allo sviluppo, fino all'esperienza dell'utente finale. Tutto ciò richiede l'abbattimento dei silos per favorire la collaborazione durante l'intero ciclo di vita del prodotto.

Punto interrogativo

DevOps non è il lavoro di una singola persona. È il lavoro di tutti.

Robert Krohn

Head of Engineering, DevOps di Atlassian

Il passaggio da un'infrastruttura legacy all'utilizzo di Infrastructure as Code (IaC) e dei microservizi può garantire sviluppo e innovazione più rapidi, ma implicare al contempo un aumento del carico di lavoro operativo che può essere difficile da gestire. È consigliabile gettare invece solide basi di automazione e gestione della configurazione e implementare pratiche di continuous delivery per alleggerire il carico di lavoro.

Fare un eccessivo affidamento sugli strumenti può distrarre i team dai principi fondamentali di DevOps, ovvero il team e la struttura organizzativa. Una volta stabilita una struttura, vengono i processi e il team, seguiti dagli strumenti.

Come adottare DevOps


L'adozione di DevOps richiede innanzitutto l'impegno a valutare ed eventualmente modificare o rimuovere team, strumenti o processi attualmente in uso nell'organizzazione. Ciò significa creare l'infrastruttura necessaria per dare ai team l'autonomia di cui hanno bisogno per compilare, distribuire e gestire i loro prodotti senza dover fare troppo affidamento sui team esterni.

Cultura DevOps

Nell'ambito della cultura DevOps i team adottano nuove modalità di lavoro che implicano collaborazione e comunicazione maggiori. È un allineamento di persone, processi e strumenti verso un focus più unificato in direzione del cliente. I team multidisciplinari si assumono la responsabilità dell'intero ciclo di vita dei prodotti.

Apprendimento continuo

Nelle organizzazioni che implementano correttamente DevOps, vengono incoraggiate la sperimentazione e l'assunzione di rischi. In questo tipo di organizzazioni, pensare fuori dagli schemi è la norma e i fallimenti sono visti come un aspetto naturale dell'apprendimento e del miglioramento.

Agile

Le metodologie Agile sono molto popolari nel settore del software poiché consentono ai team di essere intrinsecamente flessibili, ben organizzati e in grado di rispondere ai cambiamenti. DevOps è un cambiamento culturale che favorisce la collaborazione tra gli addetti alla compilazione e al mantenimento del software. Se utilizzate insieme, le metodologie Agile e DevOps si traducono in efficienza e affidabilità elevate.

Pratiche DevOps


Continuous integration

La continuous integration è una pratica che prevede l'automatizzazione dell'integrazione delle modifiche del codice all'interno di un progetto software. Consente agli sviluppatori di eseguire frequentemente il merge delle modifiche al codice in un repository centrale in cui vengono eseguiti build e test. Ciò consente ai team DevOps di risolvere i bug più rapidamente, migliorare la qualità del software e ridurre il tempo necessario per convalidare e rilasciare nuovi aggiornamenti software.

Continuous delivery

La continuous delivery parte dalla continuous integration espandendosi tramite la distribuzione automatica delle modifiche del codice nell'ambiente di test/produzione. Segue una pipeline di continuous delivery in cui build, test e distribuzioni automatizzati vengono orchestrati come un unico flusso di lavoro di rilascio.

Consapevolezza della situazione

È fondamentale che ogni membro dell'organizzazione abbia accesso ai dati di cui necessita per svolgere il proprio lavoro nel modo più efficace e rapido possibile. I membri del team devono essere avvisati degli errori, sistemici o dovuti a test non riusciti, che si verificano nella pipeline di distribuzione e ricevere aggiornamenti tempestivi sullo stato e sulle prestazioni delle applicazioni in esecuzione nell'ambiente di produzione. Metriche, registri, tracce, monitoraggio e avvisi sono tutte fonti essenziali di feedback di cui i team hanno bisogno per svolgere il proprio lavoro in modo informato.

Automazione

L'automazione è una delle pratiche DevOps più importanti perché consente ai team di spostarsi molto più rapidamente nel processo di sviluppo e di distribuzione di software di alta qualità. Con l'automazione, la semplice operazione di invio delle modifiche del codice in un repository del codice sorgente può attivare un processo compilazione, test e distribuzione che riduce significativamente il tempo necessario per svolgere questi singoli passaggi.

Infrastructure as Code

Indipendentemente dal fatto che la tua organizzazione disponga di un data center on-premise o si trovi invece interamente nel cloud, avere la possibilità di eseguire il provisioning, la configurazione e la gestione dell'infrastruttura in modo rapido e coerente è fondamentale per l'implementazione corretta dell'approccio DevOps. Infrastructure as Code (IaC) va oltre la semplice configurazione dell'infrastruttura di scripting per trattare le definizioni dell'infrastruttura come codice reale tramite il controllo del codice sorgente, le revisioni del codice, i test ecc.

Microservizi

I microservizi sono una tecnica di architettura in cui un'applicazione viene creata come una raccolta di servizi più piccoli che possono essere distribuiti e gestiti indipendentemente l'uno dall'altro. Ogni servizio ha i propri processi e comunica con gli altri servizi tramite un'interfaccia. Questa separazione dei problemi e la funzione indipendente disaccoppiata consentono pratiche DevOps come la continuous delivery e la continuous integration.

Controllo

Monitoraggio

I team DevOps monitorano l'intero ciclo di vita dello sviluppo, dalle fasi di pianificazione, sviluppo, integrazione e test, fino a quelle di distribuzione e delle operazioni. Ciò consente ai team di rispondere in modo rapido e automatico a qualsiasi degradazione dell'esperienza del cliente. E soprattutto, consente loro di adottare l'approccio "Shift Left" e intervenire quindi già nelle prime fasi dello sviluppo per ridurre al minimo le modifiche che non funzionano nell'ambiente di produzione.

Inizia a usare DevOps

Il modo più semplice per iniziare a utilizzare DevOps è identificare un flusso di valore di piccole dimensioni (ad esempio un'app o un servizio di supporto non molto grandi) e iniziare a sperimentare con alcune pratiche DevOps. Come per lo sviluppo del software, è molto più facile trasformare un singolo flusso con un piccolo gruppo di stakeholder piuttosto che tentare la transizione dell'intera organizzazione verso una nuova modalità di lavoro.

Atlassian offre una soluzione Open DevOps che fornisce processi DevOps end-to-end con gli strumenti Atlassian e altri strumenti di terze parti. Con Jira come base, i team possono utilizzare i prodotti Atlassian o i prodotti preferiti nella toolchain aperta. L'ecosistema Atlassian offre una vasta gamma di integrazioni e add-on che consentono ai team di personalizzare la loro toolchain in base alle esigenze.

Dai un'occhiata ai nostri tutorial su DevOps relativi ad automazione, esecuzione di test, sicurezza, osservabilità, aggiunta di flag delle funzioni e continuous delivery.

Illustrazione dei workshop su DevOps