È possibile garantire analisi dei dati, sicurezza e modalità di lavoro collaborative usando un’unica metodologia di sviluppo? Come si può rendere agile e standard il ciclo di vita di un progetto end-to-end, includendo interazioni successive e feature di qualità? Esplorando il mondo devOps, le sue caratteristiche, i vantaggi e le opportunità che è in grado di offrire, è possibile trovare una risposta a questi obiettivi, individuando anche un metodo di lavoro efficace per raggiungerli.
devOps, cos’è
Se un’azienda che sviluppa soluzioni innovative vuole diventare leader nel suo settore, oggi non può più limitarsi a realizzare un prodotto. Deve arrivare a confezionare una soluzione su misura, su uno stack tecnologico ben preciso e consolidato, per rispondere ai bisogni specifici del suo cliente/utente. Per poter contare su decine di software as a service in produzione (sia negli ambienti in cloud che in quelli del cliente) l’unica opzione sostenibile è beneficiare di un’elevata combinazione di: standardizzazione, flessibilità e modularità. Questa combinazione è possibile grazie alle metodologie devOps. Di cosa si tratta? Il modello devOps – combinazione di ”Development” (sviluppo) e ”Operations” (operazioni) – è un insieme di procedure che mira a velocizzare la realizzazione di software e a rendere più efficienti i processi, migliorando la collaborazione tra sviluppatori e addetti alle operations.
devOps, come si implementa
Il primo passo per adottare davvero un approccio devOps è soprattutto metodologico e ancor più di cultura aziendale, prima ancora che tecnico. I team coinvolti nelle varie fasi del ciclo di vita del software devono essere estremamente integrati se non addirittura fusi in uno stesso gruppo di lavoro. Gli sviluppatori (full stack) e i data scientist, oltre a lavorare a quattro mani per costruire software di AI performanti (integrando quindi la realizzazione di infrastrutture, applicazioni web e algoritmi) devono essere in prima linea, dalla raccolta dei requisiti fino al monitoraggio in produzione, coordinati da un project manager che stimoli il continuo processo di sviluppo – test – rilascio e raccolta feedback. Un lavoro di squadra con una mission semplice ma molto potente: costruire rapidamente software di qualità, perfettamente in linea con i requisiti attesi. Questo aspetto di collaborazione, fondamentale nel concetto del devOps, deve guidare le scelte organizzative dei team di sviluppo e dei processi delle Operations.
Le scelte tecnologiche
Una piena adozione del devOps passa da scelte tecniche ben precise:
- Infrastructure as Code
Il provisioning delle infrastrutture che ospitano i software, come da prassi devOps, avviene in Cloud e rigorosamente tramite un tool di IaC. Per un software di data science, quindi generalmente legato allo sviluppo in Python, è sicuramente consigliabile CDK, molto vicino al mondo developer in quanto permette di astrarre la composizione di infrastrutture nel linguaggio di programmazione abituale. Ogni architettura alla base dei software è codificata e rilasciata in molteplici ambienti cloud, permettendo agilmente di modificare componenti e scalare in termini di risorse.
Se si prevede di realizzare più infrastrutture cloud simili, allora è buona norma creare delle librerie specifiche di IaC con i costrutti più utilizzati, avendo sempre pronto un componente di riferimento in termini di sicurezza e costi. La standardizzazione delle tipologie di architetture cloud da utilizzare è infatti un volano per la devSecOps, ovvero l’integrazione by design di accorgimenti importanti in termini di sicurezza che, per poter essere davvero solidi, richiedono notevoli sforzi. Averli adottati in un’unica libreria centrale permette la piena adozione senza perdere l’efficienza nella delivery.
- CI/CD (Continuos Integration e Continous Delivery)
La velocità con cui si possono rilasciare continui nuovi prototipi o versioni di applicativi si basa sulle pipeline automatiche di build, test e rilascio in cloud. Anche in questo caso, se un team di sviluppo è alle prese con continue nuove applicazioni da rilasciare, uno standard riutilizzabile per le pipeline è sicuramente un valore aggiunto: data scientist, data engineer e web developers possono continuamente aggiornare la propria parte di codebase (unica per tutto il software, a dimostrazione dell’approccio integrato) per le opportune review seguite da test e rilasci automatici.
- Microservizi o componenti modulari da integrare nei software
Se l’approccio a micro-servizi era lo standard di riferimento fino ad alcuni anni fa, numerose alternative interessanti stanno emergendo in termini di paradigmi di sviluppo. L’approccio più dirompente è sicuramente quello Api-centric con cui centralizzare, ad esempio su un unico cluster di orchestrazione di servizi containerizzati, tutti i servizi di back end di un software, dagli algoritmi di AI alle funzionalità accessorie di un’applicazione, con ovvi vantaggi in termini di sviluppo e manutenzione. - Un altro aspetto cruciale della piena adozione del devOps è prevedere un processo strutturato di monitoraggio di ciò che viene rilasciato. Ogni software in produzione deve avere un sistema di audit integrato che monitora in real time il funzionamento dei servizi, l’accesso agli applicativi e i log di ogni componente, dai processi di elaborazione dati fino alle interazioni con le dashboard web. A questo proposito, è possibile adoperare dei veri e propri “control panel” che monitorino in tempo reale in un unico punto tutti gli applicativi interni ed esterni, così da anticipare al massimo gli interventi del team di Customer Care e manutenzione in caso di malfunzionamenti o vulnerabilità sui dati.
Conclusioni
L’adozione delle metodologie devOps, e quindi dei relativi indirizzi tecnologici e di teamwork, offre dei vantaggi concreti a sviluppatori (dev) e addetti alle operations (Ops). Raggiungere la piena agilità nel rilascio di software di qualità, è possibile grazie a queste metodologie, permettendo di generare valore e di soddisfare i requisiti degli utenti finali. Tuttavia, al di là delle mere procedure, occorre fare un ulteriore passo: rimettere in discussione il proprio modello culturale di lavoro, stimolando una forte collaborazione tra team, in modo trasversale ai livelli organizzativi. Il paradigma devOps potrà sembrare una questione puramente tecnica, ma non lo è, è una rivoluzione metodologica.