Articoli

Architettura
_
cloud
_
per
_
microservizi,
_
un
_
lavoro
_
di
_
squadra

Trasformazione digitale

Lo sviluppo di applicazioni “cloud” richiede la padronanza delle architetture di microservizi, con un team di programmatori altamente specializzato in armonia con il resto dei reparti dell’azienda.

Ricordo ancora quando sono arrivato nel mio primo reparto IT. Era di una nota azienda di ceramiche. Avevano appena implementato BAAN, se mai quei giganteschi ERP erano stati appena implementati. Lo attesta che il consulente capo è rimasto nello staff dell’azienda, per adeguare il sistema, hanno detto. Quasi 20 anni dopo niente è più lo stesso.
Quelle grandi applicazioni erano monolitiche, progettate per una scalabilità prevedibile, avevano un potente database relazionale, con elaborazione sincronizzata e su rack locali. Ogni tanto venivano aggiornati, potevo passarci un’intera notte perché ogni volta che lo facevano c’era un gran numero di miglioramenti e la gestione era praticamente manuale.

L’arrivo del cloud ha cambiato tutto. Le applicazioni sono suddivise in servizi più piccoli e decentralizzati. Questi servizi comunicano tramite API o tramite l’utilizzo di eventi o messaggistica asincrona. Le applicazioni scalano elasticamente, orizzontalmente, aggiungendo nuove istanze, come richiesto. Diverse tecnologie di archiviazione vengono combinate e l’elaborazione è asincrona. Gli aggiornamenti sono frequenti e la gestione automatizzata.

E questo implica il prendere molte decisioni. Le tre decisioni fondamentali sono legate a:

Il modello di hosting o modello di servizio del processo per le risorse di elaborazione su cui verranno eseguite le applicazioni. Microsoft Azure, Amazon Web Services o Google Cloud sono diventati i punti di riferimento in questo campo, anche se ci sono momenti in cui dobbiamo ricorrere ad altre soluzioni di hosting.

Definire come sarà l’archiviazione dei dati. In questo senso è stata coniata la cosiddetta «persistenza poliglotta», ovvero utilizzando database diversi a seconda del tipo o di come useremo i dati anche se alla fine riportano alla stessa applicazione.

Scegliere un servizio di messaggistica, che genererà comunicazioni asincrone.

Avere un partner strategico con l’esperienza di Cuatroochenta per guidarci in questo campo è un valore aggiunto sia per i reparti di gestione che per quelli IT, poiché determinerà molti aspetti della progettazione delle applicazioni successive.

Un’altra decisione da prendere quando facciamo il salto nel cloud è lo stile di architettura con cui implementeremo la nostra applicazione. E se c’è uno stile che è diventato popolare, è quello dei microservizi. In questa architettura, un’applicazione è composta da molti servizi distribuiti piccoli e indipendenti, ognuno dei quali fornisce una soluzione a una funzionalità specifica. E tutte queste funzionalità autonome sono integrate in modo flessibile tramite un’API.

Tuttavia, ci sono alcune sfide da affrontare perché sebbene sia vero che ogni servizio è molto più semplice e flessibile in termini di sviluppo, tutte devono essere integrate armoniosamente, tenendo conto che questa struttura consente a diversi team di lavorare con linguaggi diversi, database diversi per ogni servizio e filosofie diverse. Ecco perché è conveniente definire degli standard per l’intero progetto senza appesantire la flessibilità fornita da questa struttura.

Senza dubbio, avere una cultura DevOps consolidata aiuterà l’utente finale ad avere un’applicazione efficiente di fronte a sé. Un cattivo sviluppo può generare problemi di integrità dei dati (che possono essere indipendenti in ogni servizio), oppure una latenza troppo alta a causa di un’eccessiva catena di dipendenza del servizio (un servizio ne chiama un altro e così via, in modo che potrebbe verificarsi una certa congestione se il progetto non è ottimale). Si deve anche tenere conto, in termini di dipendenza dai servizi, che l’aggiornamento di uno di essi non dovrebbe influenzare la funzionalità degli altri, quindi il controllo della versione è un aspetto molto importante.

L’agilità che questa struttura consente rende l’amministrazione dei servizi uno dei suoi punti di forza, dall’aggiornamento di un servizio all’aggiunta di nuove funzionalità, con la scalabilità come un altro dei suoi punti di forza. In Cuatroochenta utilizziamo Kubernetes come orchestratore per impacchettare una maggiore densità di servizi per host, aumentando così l’efficienza nell’uso delle risorse.

Con questa filosofia, in Cuatroochenta abbiamo sviluppato applicazioni come Butech Calculator, per l’omonima filiale del Gruppo Porcelanosa, un’app che permette di determinare la quantità di materiali ceramici necessari per lo sviluppo di progetti di architettura. E abbiamo anche partecipato allo sviluppo della trasformazione digitale di una nota impresa di costruzioni di opere civili, per la quale abbiamo sviluppato un’applicazione web attraverso la quale gestire efficacemente tutta la documentazione relativa ai terzisti con cui opera.

Per noi la cosa più importante è che ogni parte dell’azienda svolga il proprio lavoro come se fosse un microservizio al servizio di un tutto:

1. Business Analysis determina con il cliente quale sia la soluzione migliore fissando obiettivi chiari, per personalizzare lo sviluppo con la metodologia più appropriata: Scrum, Agile, Critical Path Method (CPM), Critical Chain Project Management (CCPM).

2. Il design applica la prospettiva omnichannel, sulla base dell’esperienza ottenuta con il feedback dei circa cinque milioni di persone che utilizzano le applicazioni sviluppate da Cuatroochenta.

3. Solo nel caso in cui strumenti nostri o di terze parti non si adattino, sviluppiamo un’applicazione cloud personalizzata, basata su quanto sopra spiegato o su qualsiasi altra struttura di cui il cliente potrebbe aver bisogno.

4. L’applicazione viene messa alla prova da un team di beta testing con stress test, verifica dei percorsi e conformità ai requisiti e progettazione del progetto.

5. Questo è il momento in cui il nostro team di sicurezza informatica sarà responsabile degli audit di sicurezza concordati con il cliente.

Meno di due anni fa questo articolo sarebbe stato diverso, soprattutto perché il mondo della programmazione era un po’ diverso, forse questa è una delle cose che rende Cuatroochenta diversa. La certezza che i nostri clienti hanno di fornire loro sempre le soluzioni più avanzate per evolversi con loro verso la trasformazione digitale.