La pipeline CI/CD è una procedura che mira ad ottimizzare l’erogazione software, con l’obiettivo di velocizzare il ritmo di progettazione e rilascio continui di applicazioni e servizi digitali.

Oggi, lo sviluppo continuo è infatti centrale in qualsiasi azienda che voglia confrontarsi con tempi e costi certi nello sviluppo di applicazioni di qualsiasi dimensione. La “continuità” alla quale si fa riferimento riguarda l’intero ciclo di sviluppo, ovvero integration, delivery, deployment e monitoring. Per sua caratteristica, questo approccio richiede una precisa taratura delle sue componenti fondamentali su ciascun tipo di azienda e spesso sullo specifico progetto.

Inoltre, la pipeline CI/CD ingloba elementi sempre nuovi, come possono essere sicurezza ed intelligenza artificiale: ad ogni nuova integrazione, c’è bisogno di modificare qualcosa rispetto alla precedente situazione di equilibrio.

Infine, bisogna fare una distinzione tra sviluppo che parte direttamente in CI/CD e sviluppo partito in altro modo e che deve passare alla pipeline CI/CD. Si tratta di due situazioni diverse, per le quali valgono comunque regole molto simili.

Sicurezza, dimensioni e attitudine

La pipeline CI/CD è così ricca e coesa da rendere difficile isolare alcuni elementi dagli altri. L’obiettivo di questo articolo è però di identificare quelli importanti, che possano servire come punti di partenza.

Pensando al processo complessivo, però, tre elementi sembrano richiedere una maggiore attenzione rispetto agli altri:

  1. la sicurezza,
  2. il dimensionamento dei sottoprogetti,
  3. l’attitudine.

Guardiamoli rapidamente, uno per uno.

Pipeline CI/CD: la sicurezza al centro dello sviluppo

La sicurezza si sta affermando come componente di partenza in tutti i progetti software. Sempre più spesso si parla infatti di security by design. Anche se con l’approccio tipico dei DevOps, e quindi con l’infrastruttura gestita via software, affrontare le applicazioni dal punto di vista dello sviluppo puro per poi verificare la sicurezza dell’applicazione introduce dei forti rischi. La sicurezza deve essere inserita nei cicli continui di test e rilascio.

Può essere interessante parlare di due diversi controlli di sicurezza, lo xAST testing e la SCA.

Con il generico acronimo xAST si indica una famiglia di approcci di Application Security Testing che comprende varie possibilità: analisi statica, analisi dinamica ed analisi interattiva, rispettivamente note come SAST, DAST e IAST. Ovviamente agiscono sul software sviluppato in proprio.

Ad esse si aggiunge la SCA, Software Composition Analysis, che fa una scansione di software non sviluppato in proprio (open source o di terze parti) alla ricerca di problemi.

Il corretto dimensionamento dei sottoprogetti

Spesso i CxO aziendali affrontano il problema della produzione di software da un punto di vista squisitamente teorico. La modellazione, però, è solo la prima fase che porta ad una corretta implementazione. Un elemento chiave che consente di passare efficacemente dalla teoria alla pratica è la corretta suddivisione dei progetti in sottoprogetti.

Gli ambienti DevOps comprendono un elevato numero di tool, ciascuno dei quali è compatibile con la toolchain, ma può introdurre alcune lievi asimmetrie rispetto ad altri. Inoltre, le risorse infrastrutturali per il test possono essere limitate, con il conseguente problema della sub-ottimizzazione dei singoli deploy. Infine, le stesse risorse possono essere condivise tra molteplici team di sviluppo, creando problemi di affollamento nei momenti in cui contemporaneamente vengano effettuati parecchi test o manutenzioni di codice. In quest’ottica è necessaria l’esperienza dei membri del team con più esperienza (senior), che sappiano suddividere i nuovi progetti in sottoprogetti né troppo grandi, né troppo piccoli, che siano inoltre compatibili con il resto dell’attività standard.

La pipeline CI/CD è un cambio di mentalità

A ben vedere, le due attenzioni finora affrontate, ovvero l’introduzione della sicurezza nel ciclo CI/CD e la corretta suddivisione in sottoprogetti, rientrano – insieme a molte altre conoscenze – in un’unica macrocategoria: il cambio di attitudine.

L’approccio agile o similare, la metodologia DevOps o DevSecOps o AIOps o qualsiasi altra, richiedono dati diversi rispetto al passato dello sviluppo software e soprattutto una diversa capacità di valutazione. In tal senso, diventa fondamentale la scelta del partner giusto che accompagni l’azienda nei processi di cambiamento.

Non si tratta di migliorare qui e là un approccio già noto, ma di cambiare completamente punto di vista e disponibilità mentale. È per questo che la corretta implementazione di una pipeline CI/CD passa per una esplicita formazione continua (difficile da ottenere), ma soprattutto per la continua osmosi tra team diversi e anche simili. La parte più importante del codice da ottimizzare si trova nella mente dei singoli developer, che con questo approccio hanno la possibilità di passare ad un livello superiore di considerazione nello sviluppo di applicazioni.