L’automazione del rilascio è un’area che si è sviluppata per aiutare le aziende a soddisfare queste esigenze e sta diventando sempre più necessaria.
La crescente adozione
Secondo John Kodumal, CTO e co-fondatore della piattaforma di gestione delle funzionalità LaunchDarkly, l’adozione di strumenti di gestione dei rilasci è aumentata costantemente negli ultimi anni.
“Abbiamo realizzato un rapporto intitolato ‘The State of Feature Management’ e ha mostrato che il 70% degli intervistati considerava la gestione delle funzionalità come mission-critical per loro, e abbiamo anche scoperto che il 77% dei team che danno priorità alla gestione delle funzionalità come iniziativa sono classificati come ad alte prestazioni “, ha affermato Komudal.
Jim Mercer, vicepresidente della ricerca di DevOps e DevSecOps presso IDC, ha spiegato che la domanda di accelerazione e l’aumento della frequenza delle versioni del software sono stati i fattori trainanti di questo aumento dell’adozione.
“Man mano che i team DevOps maturano e migliorano la loro frequenza di rilascio, l’automazione del rilascio è essenziale affinché il rilascio garantisca la gestione e il monitoraggio di tutti i diversi rilasci”, ha affermato Mercer. “Inoltre, potrebbe essere necessario rilasciare il software on-premise o su più ambienti cloud. Quindi, è ampiamente utilizzato.
Il mercato è in evoluzione
Komudal ha spiegato che una tendenza attuale nel mercato è una maggiore connessione con l’idea della sperimentazione guidata dal prodotto. Questo tipo di sperimentazione si basa sull’idea che ogni rilascio dovrebbe essere misurato rispetto a cose come l’impatto operativo, oltre ai test standard.
La sperimentazione guidata dal prodotto sta rapidamente diventando lo standard per gli strumenti di gestione delle funzionalità, ha affermato Komudal.
Shawn Ahmed, CPO presso la piattaforma di distribuzione di software aziendale CloudBees, ha spiegato che il passaggio al cloud-native ha avuto anche un impatto piuttosto ampio sulle soluzioni di automazione del rilascio e sul modo in cui operano all’interno di una pipeline DevOps.
“Gli strumenti sono cambiati completamente, dalla prospettiva CI/CD fino al modo in cui si rilascia il software”, ha affermato. “Era un mondo molto diverso quando tutti erano in un unico data center… nel cloud vediamo un controllo molto più programmatico dell’infrastruttura.”
Ha spiegato che questo cambiamento nella metodologia ha permesso ai team di riunirsi e pensare a come rilasciare il software, promuovendo un livello elevato di integrazione e collaborazione tra diversi team, gli strumenti che stanno utilizzando e l’infrastruttura che viene rilasciata.
Inoltre, Komudal ha affermato che i fornitori di funzionalità di gestione hanno lavorato per garantire che i loro strumenti tengano conto dell’esperienza dello sviluppatore al fine di limitare le potenziali complessità.
“Ci sono altri concetti più moderni che vengono introdotti nel ciclo di vita dello sviluppo del software”, ha spiegato Komudal, “cose come ambienti effimeri, la capacità di creare un ambiente su richiesta… quindi va tutto dallo sviluppo locale , attraverso ambienti di test e produzione e oltre.”
Dare la priorità alle integrazioni con gli strumenti di osservabilità è un altro aspetto dell’automazione del rilascio che ha acquisito importanza solo con le esigenze dei moderni team di software.
“Con l’automazione del rilascio, non credo che le persone pensino all’osservabilità e alla telemetria come qualcosa che è post-rilascio… quindi ora, le persone stanno costruendo applicazioni con molta sperimentazione sulla telemetria e cicli di iper-feedback perché puoi semplicemente rendere l’infrastruttura attiva e funzionante così in fretta”, ha detto Ahmed.
Inoltre, questa accelerazione nell’esecuzione dell’infrastruttura ha consentito una riduzione dell’overhead, che offre ai team di sviluppo la possibilità di vedere le prestazioni di un’applicazione prima ancora che arrivi all’ambiente di produzione.
Allo stesso modo, Komudal ha spiegato che questa accresciuta domanda di cicli di iper-feedback si ricollega all’idea che i team si stiano sforzando di essere più quantitativi sulla loro capacità di fornire software e sul modo in cui misurano l’impatto del software che hanno effettivamente spedito.
Gli strumenti di automazione del rilascio possono aiutare le organizzazioni a migliorare in entrambe queste aree. “La gestione delle funzionalità è interessante in quanto è una delle tecniche che può avere un impatto positivo su tutte e quattro le metriche DORA”, ha spiegato Komudal. “Quindi, in termini di creazione di un ciclo di feedback, i team stanno cercando di ottimizzare queste quattro metriche e di utilizzare la gestione delle funzionalità come fase del loro ciclo di vita dello sviluppo del software per guidare queste cose nella giusta direzione”.
Gli strumenti di automazione del rilascio e di gestione delle funzionalità possono anche aiutare a migliorare i cicli di feedback quando si tratta di sperimentazione. Questo perché questa tecnologia consente di eseguire facilmente e rapidamente il rollback degli esperimenti senza implementare modifiche se non stanno andando come previsto.
La distribuzione progressiva è un altro aspetto dell’automazione dei rilasci che sta rapidamente crescendo in popolarità. Mercer ha spiegato che con questo, i team possono utilizzare determinate tecniche per adottare un approccio più incrementale alle versioni del software.
Ciò consente alle organizzazioni di ottenere feedback da un gruppo più ristretto di utenti prima che il prodotto venga distribuito a una base di utenti più ampia, consentendo agli sviluppatori di avere fiducia nel prodotto che alla fine forniscono.
Con questo, è aumentata anche la domanda di flag di funzionalità. Ciò consente di attivare o disattivare le funzionalità senza la necessità di distribuire codice nuovo o esistente, offrendo alle organizzazioni un maggiore controllo sulla visibilità di determinate funzionalità.
“Quindi, questo porta il rilascio del software a un livello più granulare in modo tale da poter rilasciare gli aggiornamenti software più grandi che possono contenere una raccolta di funzionalità e attivarli o disattivarli senza la necessità di distribuire il codice esistente”, ha affermato Mercer.
Mettere in pratica gli strumenti
Gli strumenti di automazione del rilascio possono offrire numerosi vantaggi agli utenti, tra cui una maggiore velocità, tempi di correzione più rapidi e un ciclo di feedback migliorato con i clienti.
Secondo Vinay Hiremath, co-fondatore e CTO della società di software di comunicazione video Loom e utente di LaunchDarkly, i flag di funzionalità possono anche essere incredibilmente utili quando si tratta di disaccoppiare le distribuzioni di codice dalle implementazioni di codice.
“Man mano che il tuo team di ingegneri cresce, questo è un enorme superpotere perché se tutti i rollout del codice vengono eseguiti contemporaneamente, ci sono molti effetti collaterali non intenzionali”, ha affermato Hiremath. “Non tutti sono pronti a far uscire il proprio codice nello stesso momento, e ci consente anche di visualizzare in anteprima le funzionalità in produzione all’interno del nostro team prima di distribuirlo ad altri membri e al pubblico in produzione”.
Ha continuato dicendo che i flag di funzionalità hanno concesso al team di Loom un controllo più dettagliato sul rilascio di funzionalità che potrebbero essere più difficili da ripristinare, come l’applicazione desktop dell’azienda.
Nonostante i loro vantaggi, tuttavia, Hiremath ha anche spiegato che questi strumenti non sono privi di svantaggi. Ha affermato che una difficoltà chiave che potrebbe emergere è un aumento involontario della complessità dello stato. Ciò si verifica quando le aziende scelgono di testare i prodotti con gli utenti in produzione.
“Un esempio di ciò potrebbe essere che la nostra pagina di condivisione video di Loom è di gran lunga la nostra pagina più trafficata… Quindi, ai nostri team di prodotto e di crescita piace sperimentare su questa pagina e capire se le nuove funzionalità sono o meno qualcosa che le persone vogliono usare», disse. “Il problema con questo, però, è che ci sono molti team che distribuiscono molte funzionalità su questa pagina ed è in realtà abbastanza difficile ragionare su quale combinazione di flag di funzionalità otterrai, quindi abbiamo riscontrato alcuni problemi .”
Hiremath ha approfondito questo aspetto, affermando che ciò potrebbe far sì che gli utenti vedano contemporaneamente più funzionalità diverse testate per lo stesso scopo.
Una conseguenza positiva di ciò, tuttavia, è che questo ha fatto sì che il team di prodotto e crescita di Loom collaborasse di più e guardasse davvero al numero di funzionalità mostrate agli utenti in modo che possano essere frenate quando necessario.
Rilasciare il ruolo dell’orchestrazione nello spostamento della sicurezza a sinistra
Inoltre, anche l’orchestrazione del rilascio ha visto una buona crescita. L’orchestrazione porta l’automazione del rilascio a un livello superiore, coordinando le attività, integrando i sistemi, prendendo decisioni basate sull’output e adattandosi alle mutevoli condizioni.
Secondo Ahmed, l’integrazione degli strumenti di orchestrazione del rilascio nelle prime fasi della pipeline DevOps è la chiave per ottenere i maggiori vantaggi.
“L’orchestrazione dovrebbe iniziare dalla prima riga di codice che scrivi, quindi la domanda diventa: come fa quella prima riga di codice a raggiungere un’elevata qualità e ad arrivare davanti al cliente”, ha affermato Ahmed. “Oggi potresti avere molta automazione e molte pipeline distribuite su più strumenti che i team di sviluppo utilizzeranno… Quando pensi di portare l’orchestrazione in queste pipeline DevOps per collegarle insieme, queste barriere vengono rimosse”.
Ha approfondito questo aspetto, affermando che liberando il ciclo di vita dello sviluppo del software dagli handoff che possono esistere quando si lavora con più strumenti e pipeline diversi, migliora la capacità dei team di spostare la sicurezza e la sicurezza a sinistra.
Ciò rende più facile per le organizzazioni vedere completamente il flusso di valore end-to-end fornito ai clienti, fornendo in ultima analisi una migliore esperienza dell’utente finale.
Imparare a fidarsi dell’automazione
Affinché gli utenti possano ottenere i maggiori vantaggi dall’automazione del rilascio e dagli strumenti di gestione delle funzionalità, Komudal ha spiegato che le organizzazioni devono determinare come integrarli nel modo più pulito nel ciclo di vita di sviluppo del software esistente, nonché nelle loro pratiche di governance e gestione del cambiamento.
È inoltre imperativo che i team trovino un modo per riporre la propria fiducia nell’automazione, piuttosto che essere scettici sulle sue capacità. Ha detto che questo è diventato più comune ultimamente, poiché i team di software hanno iniziato a realizzare il valore dell’automazione quando si tratta di semplificare i processi e ridurre l’errore umano.
“Quello che vediamo è che quando i team raggiungono un certo livello di sofisticazione dei processi, le persone sono più interessate ad automatizzare sia la distribuzione che il rilascio delle cose”, ha affermato Komudal. “Ma se un’organizzazione non si sente a proprio agio che una pratica come la gestione delle funzionalità possa funzionare con le pratiche di gestione del cambiamento desiderate o necessarie, non verrà mai adottata”.
Ciò è diventato ancora più diffuso con l’enorme quantità di nuove tecnologie di intelligenza artificiale che sono apparse di recente, sebbene Mercer di IDC abbia affermato che i loro effetti sugli strumenti di automazione del rilascio sono ancora nelle fasi iniziali.
“Ad esempio, forse il software viene rilasciato frequentemente utilizzando un modo di automazione e/o simile a GitOps in modo tale che gli sviluppatori o i product manager possano rilasciare il software più volte al giorno”, ha affermato. “Tuttavia, se il punteggio di rischio associato a una versione del software supera una certa soglia, segue un flusso di lavoro diverso che richiede più controllo e revisori prima del rilascio. L’intelligenza artificiale potrebbe anche essere utilizzata per eseguire il rollback di una versione che ha introdotto instabilità nell’ambiente di produzione”.
Ahmed ha anche affermato che i tentativi iniziali di portare la nuova IA nell’automazione del rilascio hanno prodotto risultati positivi, tuttavia, c’è ancora molta strada da fare.
Con la consegna progressiva e gli strumenti di automazione del rilascio, il potenziale per l’IA è quasi illimitato. Ha spiegato che con l’intelligenza artificiale generativa, questi strumenti un giorno potrebbero essere in grado di valutare il codice, capire qual è lo scopo del codice e trovare un modo per portare con successo quel codice in produzione sulla base di esperienze precedenti.
Inoltre, Ahmed prevede che la tecnologia AI e ML funzionerà per rendere più autonoma l’orchestrazione del rilascio e l’automazione del rilascio in generale se viene introdotta nella sperimentazione di una funzionalità che viene fornita.
“Mettere (AI) dietro una bandiera e lasciare che il sistema decida autonomamente se le prestazioni di tale applicazione o funzionalità rientrano nelle condizioni limite e la consegna progressiva di tale funzionalità in modo autonomo farà risparmiare ai team operativi e agli sviluppatori un’enorme quantità di tempo ,” Egli ha detto.
Ciò potrebbe anche migliorare il ciclo di feedback di un’azienda poiché la speranza sarebbe che l’IA possa riferire al team e spiegare se una funzionalità funziona o meno come previsto e indirizzare lo sviluppatore verso l’area problematica, abbreviando i tempi di risoluzione.