Cos'è DevOps?
Migliora la tua esperienza di sviluppatore, cataloga tutti i servizi e aumenta l'integrità del software.
Prova Compass gratis
Migliora la tua esperienza di sviluppatore, cataloga tutti i servizi e aumenta l'integrità del software.
Cos'è DevOps?
DevOps è un insieme di pratiche e 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.
Come funziona DevOps?
Un team DevOps include sviluppatori e operatori 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 con implicazioni significative per i team e per le organizzazioni per cui lavorano.
Nell'ambito del modello DevOps, i team di sviluppo e delle operazioni non sono più isolati. A volte, questi due team diventano un unico team in cui gli ingegneri si dedicano a ogni fase dell'intero ciclo di vita dell'applicazione, da sviluppo e test a distribuzione e operazioni, e hanno una serie di competenze multidisciplinari.
I team DevOps utilizzano strumenti per automatizzare e accelerare i processi, il che aiuta ad aumentare l'affidabilità. Una toolchain DevOps aiuta i team ad affrontare importanti aspetti fondamentali di DevOps, tra cui continuous integration, continuous delivery, automazione e collaborazione.
I valori DevOps vengono talvolta applicati a team diversi da quello di sviluppo. Quando i team di sicurezza adottano un approccio DevOps, la sicurezza è una parte attiva e integrata del processo di sviluppo. In questo caso parliamo di 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, il simbolo indica la necessità di una collaborazione costante e di un miglioramento iterativo durante l'intero ciclo di vita.

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à.
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.
Test
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.
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.
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.
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 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

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 aperte. 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 hanno 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 di importanti fornitori e con le principali app Marketplace.
Quali sono i vantaggi di DevOps?
Il 99% degli intervistati che hanno partecipato al 2020 DevOps Trends Survey di Atlassian ha affermato che DevOps ha avuto un impatto positivo sulla sua 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.
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 rispetto ai team a basso rendimento. La continuous delivery consente ai team di compilare, testare e distribuire software avvalendosi di strumenti automatizzati.

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.

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.

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.

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?
Le abitudini sono difficili da sradicare. I team trincerati in modalità di lavoro in silos possono lottare contro gli sforzi di modernizzazione della loro struttura volti all'adozione delle pratiche DevOps o addirittura opporvi resistenza. 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 nell'intero ciclo di vita del prodotto.
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 IaC (Infrastructure as Code) 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 e infine gli 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
metodologie Agile sono molto popolari nel settore del software perché 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
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 svolti 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 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 di compilazione, test e distribuzione che riduce significativamente il tempo necessario per svolgere questi singoli passaggi.
Infrastructure as Code
Automation is one of the most important DevOps practices because it enables teams to move much more quickly through the process of developing and deploying high-quality software. With automation the simple act of pushing code changes to a source code repository can trigger a build, test, and deployment process that significantly reduces the time these steps take.
Microservizi
Automation is one of the most important DevOps practices because it enables teams to move much more quickly through the process of developing and deploying high-quality software. With automation the simple act of pushing code changes to a source code repository can trigger a build, test, and deployment process that significantly reduces the time these steps take.
Monitoraggio
Automation is one of the most important DevOps practices because it enables teams to move much more quickly through the process of developing and deploying high-quality software. With automation the simple act of pushing code changes to a source code repository can trigger a build, test, and deployment process that significantly reduces the time these steps take.
Inizia a usare DevOps
Il modo più semplice per iniziare a utilizzare DevOps è identificare un flusso di lavoro di piccole dimensioni (ad esempio un'app o un servizio di supporto non molto grande) e iniziare a fare esperimenti 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 introdurre i loro 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 funzionalità e continuous delivery.
