Per Iniziare
Comincia dalle basi e scopri come utilizzare Mia-Platform a piccoli passi.
Comincia dalle basi e scopri come utilizzare Mia-Platform a piccoli passi.
Inizia ora
Diventa Partner certificato e scopri tutti i benefici del Partner Program.
Scopri il nostro programma
Nel mondo in continua evoluzione dello sviluppo del software, è emerso un nuovo approccio allo sviluppo e al rilascio del software, chiamato shift down, che sfida i metodi convenzionali.
Il concetto di eseguire lo shift down (letteralmente spostamento verso il basso) alla piattaforma invece dello shift left (spostamento a sinistra) allo sviluppatore comporta un cambiamento di paradigma che reimmagina il modo in cui ottimizziamo il processo di rilascio del software. L’articolo di Richard Seroter dal titolo “The Modernization Imperative: Shifting left is for suckers. Shift down instead” è un ottimo articolo che sottolinea la rilevanza e l’urgenza della filosofia dello shift down.
Il Platform Engineering è una disciplina chiave in questa nuova era in cui i team DevOps si spostano verso la piattaforma. Si tratta di progettare e creare flussi di lavoro e strumenti semplificati che facilitino la creazione e la distribuzione delle applicazioni da parte dei team software.
Aderendo a questo nuovo cambiamento, le organizzazioni possono offrire ai loro team di sviluppo gli strumenti per lavorare al fine di garantire che il software venga consegnato con una qualità e una velocità migliori.
Questo articolo esplora gli approcci “shift left” e “right” alla costruzione e al testing del software, i loro limiti e il modo in cui lo shift down aiuta a colmare le lacune e a fornire una strategia più completa per lo sviluppo del software moderno.
Il concetto di “shift left” coniato da Larry Smith nel 2001 ha cambiato l’approccio allo sviluppo del software. Si tratta di spostare la fase di test all’inizio del percorso di sviluppo del software. Questo cambiamento rappresenta un approccio proattivo e strategico in cui l’obiettivo principale è quello di testare il software nelle sue fasi iniziali e ripetere il processo frequentemente.
L’importanza di questo approccio risiede nella sua capacità di rilevare e risolvere i difetti prima che possano contaminare l’intera applicazione.
Sebbene l’enfasi posta da shift left sui test iniziali sia efficace, essa non rispecchia appieno gli scenari d’uso del mondo reale e gli ambienti di produzione. Questo problema evidenzia l’importanza di incorporare i test di shift-right.
Il tradizionale modello a V dello shift left
Lo shift-model è un modello del ciclo di vita dello sviluppo del software (SDLC) in cui l’esecuzione dei processi avviene in modo sequenziale, con una forma a V. È noto anche come modello di verifica e convalida.
Si tratta di un approccio shift left basato sull’associazione di una fase di test a ciascuna fase di sviluppo corrispondente. Il modello a V è un’estensione del modello Waterfall, in quanto la fase successiva inizia solo dopo il completamento della fase precedente.
L’utilizzo del modello a V ha i suoi vantaggi. È un approccio altamente disciplinato, poiché una fase inizia quando la precedente è terminata. È anche facile da usare e da capire. Tuttavia, la somiglianza con il modello Waterfall fa emergere anche alcune limitazioni associate a questo modello:
Con le applicazioni moderne che diventano sempre più complesse, c’è bisogno di tipi più avanzati di approcci di test shift left, come i test incrementali e i test model-based.
L’utilizzo di test incrementali è un processo di sviluppo del software che promuove test precoci e frequenti di singoli componenti o unità durante lo sviluppo. Questo approccio funziona meglio con i sistemi complessi e aiuta a mitigare il rischio che i problemi si trasformino in problemi più complessi durante le fasi successive.
I test model-based aiutano a verificare i requisiti, l’architettura e i modelli di progettazione eseguibili, e sono in grado di ridurre del 45-65% gli errori introdotti in queste prime fasi. L’approccio basato sui modelli è il metodo più recente nel campo dei test shift left e il suo principale vantaggio è che funziona nelle prime fasi del ciclo di sviluppo del progetto.
Il concetto di “shift right” introduce un cambiamento dinamico nel modo in cui si affrontano i test e la QA del software. A differenza dei metodi tradizionali come lo shift left, che si concentrano esclusivamente sui test di pre-produzione, lo “shift right” sostiene l’estensione della fase di test all’ambiente di produzione live. Questo approccio acquisisce l’esperienza reale dell’utente conducendo valutazioni rigorose in condizioni reali.
Lo shift right consiste nell’eseguire il deploy dell’applicazione nel mondo reale e nell’osservare come essa risponde agli utenti, ai dati e all’ambiente. Sottoponendo l’applicazione a carichi di utenti autentici e a scenari di utilizzo reali, shift right permette di ottenere preziose informazioni sul comportamento dell’applicazione, sulla sua reattività e sulla sua capacità di rispondere alle richieste degli utenti.
Ecco alcuni dei vantaggi principali dell’eseguire test secondo l’approccio shift right:
Sebbene sia stato utile nel corso degli anni, concentrarsi esclusivamente sullo shift left può presentare alcuni inconvenienti, in quanto non è in grado di coprire tutte le complessità degli scenari del mondo reale e degli ambienti di produzione. Questa mancanza può mettere alla prova il team di sviluppo e distogliere la sua attenzione da compiti essenziali per risolvere questi problemi nelle fasi successive.
In questa sezione vedremo i potenziali problemi di sicurezza che possono derivare da una eccessiva attenzione alle pratiche shift left. Mostreremo anche l’importanza dei test shift right abbinati ai test shift left per ridurre al minimo i rischi e garantire una solida sicurezza delle applicazioni.
Problemi di sicurezza dovuti alla forte concentrazione sullo shift left
I test di sicurezza eseguiti nello shift left non forniscono l’intero contesto di sicurezza dell’infrastruttura, ma piuttosto un piccolo pezzo del puzzle per approfondire la sicurezza delle applicazioni moderne.
Lo shift left funziona molto bene per i test di sviluppo. Tuttavia, perde efficacia piuttosto rapidamente quando viene applicato ad applicazioni e tecnologie già in uso all’interno di un ambiente, per cui l’approccio di test shift right sarà sempre importante. Un altro esempio dell’inefficienza dei test shift left è il caso delle API. L’approccio shift left potrebbe richiedere una valutazione approfondita delle potenziali vulnerabilità dei meccanismi di autenticazione e autorizzazione delle API, che rendono le API vulnerabili ad accessi non autorizzati, violazioni dei dati e attacchi pericolosi.
Una strategia di test operativo completa che includa le giuste pratiche di shift right è fondamentale per mitigare questi rischi per la sicurezza. L’esclusiva dipendenza dai soli test di shift left fa perdere alcune vulnerabilità di sicurezza che diventano evidenti solo nell’uso reale; shift right, invece, estende il test all’ambiente di produzione.
In sostanza, i test shift left uniscono sviluppo e test, includendo i test di sviluppo nel ciclo di sviluppo del software. D’altro canto, il test shift-right comprende i test operativi. I team di sicurezza possono stabilire un solido framework di sicurezza combinando questi approcci di test.
La modularità e l’interoperabilità dei microservizi consentono il rilascio frequente di applicazioni grandi e complesse. Questo complica l’esecuzione di test nell’ambito shift left per molte ragioni:
L’importanza di incorporare i test di shift right per garantire un monitoraggio e un feedback completi
Nei microservizi, gli approcci di test shift right e shift left sono strumenti fondamentali per un monitoraggio e un feedback completi. Shift right ci permette di valutare l’intero ecosistema di diversi microservizi in condizioni reali, fornendo preziose indicazioni su come questi servizi interagiscono tra loro, scalano e rispondono ai carichi di traffico degli utenti.
L’approccio shift right consente un miglioramento continuo attraverso cicli di feedback iterativi. Questo approccio ripetitivo permette di migliorare l’esperienza del cliente con l’applicazione in base al feedback degli utenti e ai modelli di utilizzo dei dati reali.
L’approccio “shift down” sfrutta le piattaforme esistenti e consente alle figure meno esperte dal punto di vista tecnico di risolvere un maggior numero di problemi nelle prime fasi del processo. Con l’approccio shift down, si riduce il carico cognitivo di chi sviluppa software sfruttando appieno la tecnologia disponibile e spostando più carichi di lavoro sulle piattaforme che già utilizzano.
L’approccio “shift down” nello sviluppo mira a migliorare l’efficienza e a ridurre i costi, liberando le figure più senior per concentrarsi su compiti più complessi e innovativi. Si possono osservare diversi esempi di approcci shift down in vari scenari, tra cui:
Vantaggi della compressione dello stack tecnologico e della riduzione del carico cognitivo degli sviluppatori
La compressione dello stack tecnologico implica la scelta e l’utilizzo strategico di un insieme ridotto di tecnologie, framework e strumenti per lo sviluppo. Questo approccio mira a ridurre la complessità della gestione di molteplici dipendenze e interazioni, semplificando così lo sviluppo per i team di sviluppo. I vantaggi di questo approccio comprendono:
L’approccio “shift down”, che sfrutta le piattaforme sottostanti, contribuisce a promuovere una collaborazione più fluida, una risoluzione più rapida dei problemi e una maggiore efficienza nel rilascio del software.
Il Platform Engineering è una disciplina che condivide l’obiettivo di migliorare l’efficienza nella distribuzione del software. Il Platform Engineering è la progettazione e la costruzione di toolchain e flussi di lavoro che consentono funzionalità self-service e migliorano la Developer Experience. Oltre a consentire funzionalità self-service, vi sono altri vantaggi nell’adottare il Platform Engineering:
Per implementare efficacemente il Platform Engineering, è necessario uno sforzo interfunzionale che richiede collaborazione e comunicazione tra i diversi team. Questa collaborazione assicura che tutti comprendano e lavorino per raggiungere obiettivi condivisi. La comunicazione colma i divari tra i team e incoraggia il feedback costante, le intuizioni condivise e le best practice, favorendo il miglioramento continuo, l’apprendimento e la risoluzione dei problemi.
In questo articolo abbiamo analizzato in dettaglio i motivi per cui lo shift down è la mossa giusta per molte organizzazioni, in quanto aumenta la produttività delle figure meno esperte e sgrava quelle più esperte da molte attività ripetitive e non strettamente legate all’obiettivo finale del progetto. Tuttavia, questo passaggio può essere impegnativo per molti motivi.
In primo luogo, lo shifting down richiede un cambiamento culturale significativo, in quanto i team devono essere disposti a rinunciare a un po’ di controllo in più e a lavorare in modo collaborativo. In secondo luogo, è necessario un investimento significativo in strumenti, infrastrutture e formazione per i membri meno esperti del team.
Per affrontare le sfide dello shift down alla piattaforma, le organizzazioni possono adottare una serie di strategie pratiche. Tra queste troviamo:
I benefici dello shift down verso una piattaforma sono molteplici:
Eseguire lo shift down alla piattaforma offre un approccio trasformativo che ottimizza l’utilizzo delle risorse per accelerare e migliorare il processo di sviluppo del software delle organizzazioni. Le organizzazioni hanno tradizionalmente impiegato la nota strategia shift left nello sviluppo del software, ma i suoi limiti hanno stimolato l’approccio shift down.
Nel mondo del Platform Engineering, le organizzazioni possono sfruttare le piattaforme e gli strumenti esistenti per progettare, costruire e distribuire solide toolchain che offrono processi standardizzati, automazione e implementazioni semplificate per superare le complessità tecniche. L’adozione della filosofia “shift down”, insieme alla Platform Engineering, g arantisce non solo un utilizzo efficiente delle risorse e delle competenze, ma anche un ecosistema in cui fioriscono l’apprendimento continuo, la collaborazione e l’innovazione.
Affidarsi a un platform builder come Mia-Platform consente alle organizzazioni di integrare facilmente il Platform Engineering nei cicli di sviluppo e rilascio del software. Le aziende potranno così evolvere in Platform Company: scarica il white paper gratuito per scoprire tutti i vantaggi di questo paradigma.
Questo articolo è stato scritto da Michel Murabito, Developer Advocate di Mia‑Platform.