Close

Come tenere sotto controllo la proliferazione del software

Tre segnali che indicano la presenza di proliferazione del software e cosa puoi fare al riguardo

Primo piano di Andrew Boyagi
Andrew Boyagi

Senior Evangelist


Il monolito sta scomparendo rapidamente. Innumerevoli aziende in tutto il mondo ora adottano un'architettura flessibile per lo sviluppo software. I team distribuiti e autonomi suddividono le applicazioni monolitiche in raccolte di componenti come i microservizi.

Questo perché un'architettura flessibile semplifica la scalabilità del software in termini di prestazioni e resilienza, riducendo al tempo stesso i rischi e il lead time per la distribuzione di nuove funzioni delle applicazioni. I vantaggi non si limitano al software. Un'architettura flessibile consente ai team di agire in modo indipendente e di rilasciare modifiche frequenti a vantaggio degli utenti. I team autonomi che creano software in un'architettura debolmente accoppiata sono più soddisfatti, coinvolti e produttivi.

Tuttavia, i nuovi modi di lavorare comportano nuove sfide. La creazione di un ambiente dinamico e scalabile in cui i singoli componenti sono progettati in modo reciprocamente indipendente determina un aumento della complessità, facendo emergere un nuovo tipo di sfida: la proliferazione del software.

Logo di Compass.

Prova Compass gratis

Migliora la tua esperienza di sviluppatore, cataloga tutti i servizi e aumenta l'integrità del software.

illustrazione con blocchi

Cos'è la proliferazione di software?


La proliferazione di software si verifica quando il numero di applicazioni o di componenti software all'interno di un ambiente cresce e cambia rapidamente, aumentando significativamente la complessità e causando errori nei metodi tradizionali di gestione del software. Questo scenario si verifica in genere in concomitanza con l'aumentare della velocità nelle architetture software distribuite.

La modernizzazione anche di una singola applicazione monolitica può portare a centinaia di microservizi gestiti da più team che rilasciano nuove funzioni frequentemente e in modo indipendente nell'ambiente di produzione. L'estensione di questa modernizzazione a un portfolio di applicazioni implica una potenziale introduzione di migliaia di microservizi in più team di sviluppo. Non sorprende che sia improbabile che i metodi tradizionali di gestione anche di un piccolo portfolio di applicazioni portino a un successo a lungo termine. Durante il percorso di Atlassian verso le migliaia di microservizi che oggi sono alla base dei nostri prodotti, abbiamo scoperto che controllare la proliferazione di software era fondamentale per sfruttare la potenza di un'architettura debolmente accoppiata e dei team autonomi.

icona dell'archivio di codice
materiale correlato

Microservizi e architettura monolitica a confronto

icona di tre anelli
Scopri la soluzione

Migliora l'esperienza di sviluppo con Compass

All'inizio i sintomi della diffusione incontrollata del software possono essere difficili da riconoscere. A volte iniziano come piccoli intoppi che vengono messi da parte per dare priorità ad aspetti più cruciali. Tuttavia, se non gestita, la diffusione incontrollata del software può paralizzare i team di sviluppo con un livello di elaborazione più elevato, ridurre il coinvolgimento dei team e annullare i vantaggi associati a un'architettura in cui i servizi sono piuttosto indipendenti tra loro. Come si dice nel proverbio, "Il momento migliore per piantare un albero era 20 anni fa. Il secondo momento migliore è adesso". Il successo nel futuro dipende dalla capacità di gestire al meglio la proliferazione del software prima che diventi un problema.

Di seguito sono riportati tre segnali della proliferazione di software e viene spiegato cosa si può fare per dominare il caos creando al contempo un ambiente innovativo e dinamico che accresca il potenziale di ogni team.

Le revisioni post-imprevisto identificano le modifiche upstream come causa principale


Uno dei primi sintomi della proliferazione di software sono le molteplici recensioni post-imprevisto (PIR) che indicano le modifiche upstream come causa principale degli imprevisti. Un numero crescente di microservizi e un volume maggiore di modifiche all'interno di un ambiente possono mettere a dura prova le norme esistenti in materia di collaborazione tra sviluppatori e coordinamento delle modifiche. Anche un leggero aumento (da mensile a settimanale) della frequenza delle modifiche apportate a un'applicazione modernizzata può comportare un aumento per 100 volte dei rilasci mensili. Non sorprende che sia necessario per gli sviluppatori adattare le modalità di collaborazione. È più probabile che si verifichino imprevisti nell'ambiente di produzione quando le norme di collaborazione tra gli sviluppatori non riescono ad adeguarsi a un ambiente caratterizzato da ritmi frenetici.

Creare un modo non intrusivo per fare in modo che gli sviluppatori siano al corrente delle modifiche upstream e downstream è un'ottima soluzione per arginare l'impatto della proliferazione di software. In Atlassian, utilizziamo Compass, un portale per sviluppatori che aiuta i team a spostarsi nelle architetture distribuite, per inviare notifiche in-app ai team di sviluppo sulle modifiche che causano interruzioni ai servizi upstream e downstream. Prendendo atto di queste notifiche, si segnala al promotore della modifica che i team responsabili dei servizi dipendenti ne sono a conoscenza. Ciò offre l'opportunità di collaborare alla modifica se si prevedono problemi, riducendo la probabilità di conseguenze negative involontarie sulla produzione. Poiché gli imprevisti sono destinati a verificarsi negli ambienti dinamici, la collaborazione tra sviluppatori durante un imprevisto è fondamentale per ripristinare rapidamente i servizi.

Nelle revisioni post-imprevisto in cui le modifiche upstream sono la causa principale, è comune che il tempo di ripristino dei servizi dipenda dal tempo impiegato per identificare la modifica upstream che ha causato il problema, insieme al team o alla persona responsabile del servizio. Logicamente, la riduzione del tempo necessario per identificare la modifica upstream incriminata comporta la riduzione del tempo medio di ripristino (MTTR) nel corso del tempo. Ciò è reso più difficile in un'architettura debolmente accoppiata, in cui i servizi presentano una gerarchia di dipendenze complessa e la causa principale di un imprevisto potrebbe risiedere ovunque nello stack. Tradizionalmente, gli addetti agli imprevisti esaminano i log o i record delle modifiche per identificare la modifica che potrebbe aver causato l'imprevisto. Nel caso degli ambienti dinamici, è come distruggere un formicaio per trovare la formica che ci ha morso.

In Atlassian utilizziamo il feed attività di Compass per ridurre l'MTTR. Questo feed mostra tutti gli eventi relativi ai sistemi upstream insieme ai dettagli del team responsabile. Questo riduce significativamente i tempi di valutazione supportando la collaborazione tra sviluppatori durante gli imprevisti. Gli imprevisti si verificheranno, ma identificare tempestivamente una modifica upstream come causa principale di un imprevisto è fondamentale per assicurarsi che l'impatto sia ridotto al minimo e che i servizi vengano ripristinati rapidamente.

Proliferazione di software

Il feed attività di Compass mostra tutti gli eventi relativi ai sistemi upstream, riducendo i tempi di valutazione durante gli imprevisti.

Il rendimento del team è elevato, ma non si vedono i risultati


Il passaggio a un'architettura debolmente accoppiata è uno degli ingredienti chiave per raggiungere la produttività e la soddisfazione del team: la possibilità di muoversi in modo indipendente con alti livelli di autonomia. Se non controllata, la proliferazione di software può annullare alcuni di questi vantaggi, impegnando molto il team, ma trasformandolo in un team improduttivo e insoddisfatto. Una lamentela comune che emerge quando si parla con i team di sviluppo è che i problemi sorgono quando arriva il momento di interagire con un altro team. E questo concetto si amplifica quando la proliferazione di software diventa un problema. In un ambiente caratterizzato da espansione e cambiamento rapidi, la capacità degli sviluppatori di tenere traccia delle persone da contattare per le dipendenze upstream o downstream è ridotta, con conseguenti rallentamenti e un aumento della frustrazione dei team che cercano di tenere il passo con il ritmo delle distribuzioni.

Supponiamo, ipoteticamente, che la squadra Alpha e la squadra Beta abbiano un numero identico di ticket e che gli Story Point vengano spostati nello stato "Completato" in Jira ogni settimana. La squadra Alpha dedica il 90 percento del lavoro al rilascio di nuove funzioni nell'ambiente di produzione, mentre la squadra Beta dedica il 30 percento del lavoro a nuove funzioni e il 70 percento a capire come interagire con i numerosi servizi upstream da cui dipende. Entrambe le squadre hanno lo stesso livello di rendimento, ma è probabile che solo la squadra Alpha sia considerata produttiva. La proliferazione di software amplifica la necessità di collaborazione tra i team. Individuare modi intelligenti per consentire ai team autonomi di interagire quando serve è fondamentale per sfruttare la potenza di un ambiente debolmente accoppiato.

In un ambiente dinamico e in rapida crescita, la capacità di gestire le informazioni in modo autonomo è importante per la produttività e la soddisfazione del team. Un modo per raggiungere questo obiettivo è implementare un catalogo centralizzato di componenti software con gestione decentralizzata; si tratta di un catalogo centralizzato in cui ogni team è responsabile della creazione e dell'aggiornamento dei servizi di cui è responsabile. Gli ambienti tradizionali dispongono in genere di un catalogo centralizzato gestito da un team o da una funzione specifici. Tuttavia, questo approccio non può tenere il passo con la velocità delle modifiche negli ambienti distribuiti, con il risultato che i team creano wiki poco chiari sulle persone con cui interagire e sulle modalità di interazione. In Atlassian, abbiamo scoperto che un approccio decentralizzato riduce il lavoro invisibile e non necessario tra i team, migliora le funzionalità self-service e crea un ambiente di coinvolgimento su richiesta. Controllare la proliferazione di software rendendo disponibili informazioni self-service sulle dipendenze upstream e downstream è un ottimo modo per migliorare la produttività del team con effetti complementari sulla loro soddisfazione e sul loro coinvolgimento.

Screenshot del servizio utente di Compass.

Compass fornisce una posizione centrale per le informazioni specifiche degli sviluppatori sui componenti software di cui sono responsabili e da cui dipendono.

La gestione delle modifiche diventa il collo di bottiglia


Un altro sintomo chiave della proliferazione di software è quando le funzioni di governance, come la gestione delle modifiche e la sicurezza informatica, diventano sempre più un collo di bottiglia per la distribuzione delle modifiche nei sistemi di produzione. Queste funzioni svolgono un ruolo fondamentale nel garantire che gli standard e le aspettative dell'organizzazione siano rispettate prima della distribuzione delle modifiche nell'ambiente di produzione. Tuttavia, diventano meno efficaci man mano che la proliferazione di software prende piede. Negli ambienti caratterizzati dalla proliferazione di software, le funzioni di governance vengono gradualmente sovraccaricate con l'aumentare del ritmo delle modifiche creando così un backlog di modifiche e richieste da rivedere che ritarda le distribuzioni nell'ambiente di produzione. Dal report 2022 State of DevOps (Stato di DevOps nel 2022) è emerso che, secondo il 56 percento degli intervistati, i processi di sicurezza software della propria organizzazione rallentano il processo di sviluppo.

Idealmente, le pratiche di sicurezza sono integrate nei processi di sviluppo, ma nella realtà, in molte organizzazioni sono le persone a occuparsi della revisione delle modifiche prima della distribuzione nell'ambiente di produzione. Questo processo non è efficace ai livelli richiesti negli ambienti distribuiti. Oltre a rallentare la capacità dell'organizzazione di distribuire le modifiche, può causare attriti tra i team di sviluppo e quelli responsabili della verifica della conformità agli standard organizzativi.

In un ambiente caratterizzato dalla proliferazione di software, è fondamentale abilitare l'high velocity raggiungendo al contempo gli standard organizzativi desiderati su larga scala. Le scorecard automatizzate, o semi-automatizzate, sono un ottimo modo per comunicare gli standard dell'organizzazione e rappresentano un modo non intrusivo per controllare la conformità in tutto l'ambiente. In Atlassian, utilizziamo Compass per stabilire gli standard e le aspettative di qualità dell'organizzazione: le scorecard relative a ogni componente software forniscono all'organizzazione trasparenza sulla conformità. I team e i responsabili tecnici possono aggiungere standard specifici di prodotto alle scorecard per offrire una panoramica completa delle aspettative e degli status di qualità dell'organizzazione che tutti i membri dell'organizzazione possono visualizzare. Si tratta di un passaggio significativo dai controlli di governance e conformità, eseguiti alla fine del ciclo di distribuzione, alla definizione anticipata delle aspettative e alla possibilità per i team di soddisfarle durante l'intero processo di sviluppo. I team di governance possono stabilire le aspettative in un ambiente dinamico, mentre i team di distribuzione hanno l'opportunità di comprendere e soddisfare i requisiti durante il ciclo di rilascio. Poiché l'impatto della proliferazione di software può essere dannoso sia per i team di distribuzione del software che per i team di governance, le scorecard offrono l'opportunità di controllare tale proliferazione.

immagine della sicurezza dei dati

La scorecard Compass viene utilizzata per comprendere l'integrità del componente software rispetto a una serie di aspettative definite.

In conclusione...


Non esiste una soluzione ottimale per controllare la proliferazione di software. Tuttavia, il successo a lungo termine si basa sull'identificazione e sulla risoluzione tempestive delle conseguenze della proliferazione di software. Tra i primi indicatori della prolificazione di software rientrano i molteplici imprevisti causati dalle modifiche upstream o downstream, i team oberati di lavoro che non riescono a raggiungere gli obiettivi e i colli di bottiglia della governance. Il modo migliore per identificare la proliferazione di software è parlare con gli sviluppatori e conoscere le sfide che si trovano ad affrontare.

Atlassian ha sviluppato Compass per aiutare a tenere sotto controllo la proliferazione di software gestendo le complessità delle architetture distribuite man mano che si ampliano. Si tratta di una piattaforma di sviluppo estensibile che riunisce i dati separati di tutti i risultati tecnici e della collaborazione tra i team in un'unica posizione centrale e ricercabile.

Scopri di più su Compass

Andrew Boyagi
Andrew Boyagi

Andrew è responsabile del DevOps Evangelism di Atlassian con più di 20 anni di esperienza nella fornitura di software e nella gestione dei servizi nelle organizzazioni aziendali. Fornisce un punto di vista pratico su come team e organizzazioni possono massimizzare i vantaggi di DevOps sulla base di esperienze di vita reale.
Prima di entrare in Atlassian, Andrew è stato Executive Manager presso la Commonwealth Bank of Australia, dove ha creato e sviluppato una funzione di platform engineering che ha supportato il lavoro di 7.000 ingegneri. Andrew ha conseguito un master in Business Administration presso la Southern Cross University.


Condividi l'articolo
Argomento successivo

Letture consigliate

Aggiungi ai preferiti queste risorse per ricevere informazioni sui tipi di team DevOps e aggiornamenti continui su DevOps in Atlassian.

Illustrazione su Devops

Community di Compass

illustrazione del superamento di ostacoli

Tutorial: Creare un componente

Illustrazione di una mappa

Inizia a utilizzare Compass gratuitamente

Iscriviti alla nostra newsletter DevOps

Thank you for signing up