Ma in pratica, in cosa consiste l'approccio DevOps?
Il termine "DevOps" è una combinazione di "Development" (sviluppo) e "Operations" (operazioni), ma si riferisce a un insieme di concetti e procedure che vanno ben oltre il significato di questi due termini. DevOps include sicurezza, modalità di lavoro collaborative, analisi dei dati e molti altri aspetti. Ma che cos'è concretamente?
DevOps descrive gli approcci da adottare per accelerare i processi che consentono a un'idea (come una nuova caratteristica software, una richiesta di miglioramento o un bug fix) di passare dallo sviluppo al deployment in un ambiente di produzione, dove può fornire valore all'utente. Tali approcci richiedono una comunicazione frequente fra i team operativi e di sviluppo. Inoltre, all'interno di ciascun team il lavoro deve essere incentrato sull'empatia fra i colleghi. Sono necessari anche scalabilità e modalità di provisioning flessibili. Con DevOps è possibile ottenere più efficienza quando necessario, attraverso il self service e l'automazione. Gli sviluppatori, che solitamente creano codici in un ambiente di sviluppo standard, lavorano a stretto contatto con il personale IT operativo per velocizzare le fasi di creazione, collaudo e rilascio dei software, senza rinunciare all'affidabilità.
Naturalmente, tutto questo impone modifiche più frequenti al codice e un utilizzo più dinamico dell'infrastruttura. Queste esigenze non possono essere tuttavia soddisfatte utilizzando le strategie di gestione tradizionali e, per ottenere un vantaggio concreto, è necessario introdurre alcuni cambiamenti.
La relazione tra i container e DevOps
I container semplificano il trasferimento delle applicazioni tra gli ambienti di sviluppo, test e produzione. Utilizzando i container, gli sviluppatori hanno la possibilità di isolare le app e raggrupparle in pacchetti che contengono tutto il necessario per l'esecuzione, inclusi file applicativi, ambienti di runtime, librerie dipendenti e configurazioni.
DevOps rende più veloce il passaggio dalla fase di sviluppo a quella di deployment di un'idea. In sostanza, DevOps fa affidamento sulle attività di routine automatizzate e sugli ambienti standardizzati del ciclo di vita delle applicazioni. I container possono offrire ambienti standardizzati, ma per gestirli occorre una piattaforma capace di fornire anche automazioni integrate e supporto per qualunque infrastruttura. Red Hat OpenShift è una piattaforma enterprise ready basata su Kubernetes e progettata per supportare le iniziative DevOps.
Cultura DevOps
DevOps si basa su una cultura di collaborazione in linea con i principi open source, che si avvale di metodologie di lavoro trasparenti e agili. Partecipando alla nostra master class di cinque giorni, DevOps Culture and Practice Enablement (DO500), potrai scoprire cosa lega DevOps ai valori di agilità.
La cultura dei progetti software open source può fornire un modello di base per la costruzione di una cultura DevOps. La libera condivisione delle informazioni costituisce l'approccio standard alla collaborazione nelle community open source, poiché contribuisce a introdurre cambiamenti culturali come la promozione della trasparenza nel processo decisionale, l'invito alla sperimentazione, eliminando la paura di sbagliare, o l'introduzione di un approccio meritocratico che promuove fiducia e collaborazione. Molte organizzazioni sono alla ricerca di servizi di consulenza per la trasformazione digitale che favoriscano le iniziative di questo tipo.
Con una leadership e programmi di incentivazione adeguati, i team operativi e di sviluppo possono promuovere un approccio open source. Ma DevOps è ancora più efficace quando questa cultura viene diffusa in tutta l'organizzazione. Anche se il nome "DevOps" fa riferimento in modo specifico allo sviluppo e alle attività operative, in realtà questa metodologia è rivolta a tutti.
Red Hat adotta una cultura completamente incentrata su apertura e trasparenza, che le garantisce ottimi risultati da più di 25 anni. Red Hat possiede tutta l'esperienza necessaria per aiutare i clienti a adottare un approccio aperto, trasformando la metodologia DevOps in realtà.
Stagione 1, episodio 4: DevOps_Tear Down That Wall
Ascolta il dibattito di Saron Yitbarek, Scott Hanselman e Gordon Haff su cultura, processi, piattaforme e strumenti DevOps in questo video tratto dal podcast Command Line Heroes
Processi DevOps
Per sviluppare applicazioni moderne occorrono processi diversi da quelli del passato. Per i team che adottano approcci agili allo sviluppo software, la decisione di applicare la metodologia DevOps non viene presa in un secondo tempo. Anzi, il primo dei 12 principi del Manifesto Agile è: "soddisfare il cliente rilasciando software di valore, fin da subito e in maniera continua". Questo è proprio il motivo per cui l'integrazione e il deployment continui (CI/CD) sono così importanti per i team DevOps.
Tuttavia, non basta cambiare i processi operativi e di sviluppo, ma occorre applicare il pensiero sistemico in modo da ottimizzare concretamente le modalità di distribuzione del software. La metodologia DevOps è pertanto destinata a promuovere il cambiamento nelle unità aziendali che richiedono attività di sviluppo e nei team che forniscono supporto agli utenti finali. A tale scopo, è fondamentale creare un ciclo di feedback continuo tra gli utenti finali e l'azienda.
Il cambiamento dei processi non si limita alla MODALITÀ di svolgimento del lavoro, ma determina inevitabilmente anche il cambiamento del TIPO di lavoro da svolgere. Oltre ad accelerare la creazione delle solite, vecchie applicazioni monolitiche, la metodologia DevOps si prefigge anche di creare nuove tipologie di software, che rispondono più efficacemente alle esigenze della distribuzione continua.
Proprio per questo, i team DevOps realizzano spesso software basati su un'architettura di microservizi, che vengono collegati fra loro attraverso le API. Le prestazioni dei team migliorano se ci si dedica alla creazione di porzioni di funzionalità più piccole. Pertanto, dovrai concentrarti su come sono gestiti i servizi e le API e adottare una strategia, come l'integrazione agile, per orchestrare tutti questi componenti.
Introdurre questo tipo di cambiamento richiede un impegno notevole, ma con la tecnologia appropriata puoi cominciare immediatamente. L'automazione può aiutarti ad accelerare i processi e anche a trasferire i carichi di lavoro DevOps nel cloud. L'automazione consente a un'infrastruttura di reggere le constanti modifiche al codice legate all'approccio DevOps e garantisce una scalabilità semplice e continua degli ambienti. L'automazione permette ai professionisti IT di dedicarsi alle attività importanti, evitando di sprecare tempo con mansioni banali e ripetitive.
Un'evoluzione più recente del processo DevOps è stata l'introduzione dell'ingegneria della piattaforma. Ponendo l'accento sull'empatia e sul percorso dell'utente, l'ingegneria della piattaforma sfrutta la metodologia DevOps trovando modi più efficaci per automatizzare la distribuzione delle applicazioni, migliorare la collaborazione e la comunicazione, ridurre gli errori, ottimizzare la sicurezza e la conformità, aumentare l'efficienza e, soprattutto, reindirizzare le potenzialità degli sviluppatori laddove necessario.
Generalmente, si dice che DevOps sia in conflitto con un approccio ITIL per la gestione dei servizi IT (ITSM), ma questo binarismo tralascia diversi aspetti.
Piattaforme e strumenti DevOps
Per garantire il successo di un approccio DevOps, è fondamentale scegliere strumenti che supportino i tuoi processi. Se le attività operative devono tenere il passo con cicli di sviluppo rapidi, sono necessarie piattaforme altamente flessibili, in grado di trattare l'infrastruttura come i team di sviluppo trattano il codice. Le attività di deployment manuali sono lente e ad alto rischio di errore.
Il provisioning e il deployment delle piattaforme possono essere semplificati attraverso l'automazione. Il site reliability engineering (SRE) gestisce queste attività manuali avvalendosi di software e automazione. Un approccio SRE può fornire un supporto aggiuntivo per gli obiettivi di un team DevOps.
Red Hat OpenShift è in grado di fornire ai team DevOps, agli ingegneri della piattaforma e agli SRE le caratteristiche e funzionalità che garantiscono CI/CD, protezioni di sicurezza, un'architettura con modello di sicurezza zero trust e requisiti di conformità aziendali. La combinazione di OpenShift e Red Hat Developer Hub offre ai team di ingegneria della piattaforma gli strumenti essenziali per realizzare e gestire efficacemente una Internal Developer Platform (IDP) e sviluppare modelli, documentazione e flussi di lavoro dei progetti per la creazione di modelli predefiniti.
DevOps e Kubernetes
L'approccio DevOps va di pari passo con i container Linux®, che forniscono al tuo team le basi tecnologiche per uno stile di sviluppo cloud native. I container supportano un ambiente unico per lo sviluppo, l'erogazione, l'integrazione e l'automazione.
Kubernetes offre una strategia moderna per automatizzare le operazioni dei container Linux, consentendo di gestire in modo semplice ed efficace i cluster che eseguono i container Linux su cloud privati, pubblici o ibridi.
La scelta di piattaforme affidabili come Red Hat® Enterprise Linux e Red Hat OpenShift®, sia all'interno che all'esterno dei container, garantisce scalabilità e automazione quando sono più necessarie. Con le piattaforme giuste, puoi trarre il massimo vantaggio dai cambiamenti che hai apportato ai processi e alla cultura aziendali.
Ottieni maggiore scalabilità grazie al deployment continuo con DevOps
Uno dei vantaggi principali dell'implementazione di DevOps è costituito dalla pipeline di integrazione e deployment continui (CI/CD), che consente di aumentare la frequenza di distribuzione delle applicazioni ai clienti e la convalida della qualità del software, riducendo al minimo gli interventi manuali.
Nello specifico, la pipeline CI/CD introduce l'automazione e il monitoraggio continui per tutto il ciclo di vita delle applicazioni, dalle fasi di integrazione e test a quelle di distribuzione e deployment, consentendo di identificare e risolvere problemi e difetti in maniera tempestiva. Tali processi interconnessi, che insieme formano la "pipeline CI/CD", sono supportati da team operativi e di sviluppo che collaborano nel contesto delle procedure agile.
Usiamo soprattutto Red Hat Enterprise Linux per l'automazione. Ci aiuta, ad esempio, con il deployment delle applicazioni. Intendiamo anche passare al deployment e alla distribuzione continui, e per questo approccio utilizzeremo questo prodotto.
Il tuo team è pronto per l'innovazione?
Per competere sul mercato di oggi, la tecnologia non basta. Misura il livello di maturità della cultura, dei processi e delle piattaforme della tua azienda e scopri i passi da compiere per continuare il tuo percorso di trasformazione digitale.
DevOps e sicurezza
Come abbiamo visto, la metodologia DevOps non riguarda solo i team operativi e di sviluppo. Per ottenere il massimo dall'approccio DevOps, l'azienda deve tenere conto anche del ruolo svolto dalla sicurezza nel ciclo di vita delle sue app. Questa mentalità ha portato a coniare il termine DevSecOps, che sottolinea la necessità di pensare alla sicurezza fin dalla fase di pianificazione iniziale.
Adottando principi di sicurezza shift left and shift right, i team sono in grado di valutare e garantire la qualità e le prestazioni di prodotti e funzionalità durante l'intero processo DevOps, grazie a metodi di test continui. In genere, questi metodi sono automatizzati per fornire protezioni a misura di sviluppatori che riducono gli errori degli utenti in fase di sviluppo e distribuzione e proteggono i carichi di lavoro al momento del runtime.