L’architettura, sia essa applicata all’informatica o agli edifici, è il punto di incontro fra aspirazioni e tecnologia, entrambe in continua evoluzione. Internet ed il Cloud Computing hanno innescato un cambiamento radicale della nostra civiltà, sia sul fronte delle relazioni personali che nel modo di fare impresa, per cui è inevitabile passare a nuove architetture IT.

Una delle principali differenze tra i tradizionali software applicativi monolitici e quelli progettati espressamente per il Cloud è la decomposizione in servizi lascamente accoppiati (loosely coupled). Un servizio è un insieme autonomo e coeso di funzionalità esposte mediante API (Application Programming Interfaces) che coopera mediante messaggi asincroni (come l’email) con altri servizi e con gli utenti, anche di aziende diverse, secondo il principio di massima condivisione di hardware e software denominato “multi-tenancy”. Questa nuova architettura assicura la massima scalabilità ed efficienza perché ogni singolo servizio può utilizzare in ogni momento il numero di macchine necessarie per assicurare il livello di servizio (SLA) ottimale, senza sprechi di risorse ed energia. Inoltre l’accoppiamento elastico tramite code di messaggi consente ad ogni servizio di lavorare alla massima capacità senza intralci dall’esterno, compensando allo stesso tempo picchi e valli nel numero di richieste generate dagli utenti.

Un’altra caratteristica delle architetture Cloud più moderne è l’elaborazione distribuita, applicabile a vari livelli. Slogan come “Intelligent Cloud + Intelligent Edge” e “Edge Computing” ne rappresentano l’implementazione al livello più alto. Per fare un esempio, nel caso di un sistema per il Retail come aKite, il Punto Cassa è una App in grado di funzionare senza interruzioni sia connessa che sconnessa da Internet. La potenza di un qualunque Tablet o PC è sufficiente per gestire localmente le normali attività di vendita e collaborare mediante messaggi con servizi più complessi residenti nel cloud, come la gestione del magazzino o le previsioni di vendita. Questa architettura, sebbene più complessa rispetto ad un sistema centralizzato su un unico db, oltre alla migliore reattività verso gli utenti e qualità del servizio, ha anche il vantaggio della maggiore efficienza e scalabilità, dato che l’elaborazione locale sgrava il Cloud il quale, a parità di risorse, può gestire un numero superiore di utenti. Questi sono alcuni dei motivi del successo delle App in mobilità che cominciano addirittura ad inglobare complesse funzionalità basate sull’Intelligenza Artificiale, ad esempio per il riconoscimento vocale e facciale. Passiamo ora ad illustrare i vantaggi dell’architettura distribuita a più basso livello, tra i servizi all’interno del Cloud.

 

Orchestrazione dei Servizi

Inizialmente i Servizi Cloud erano gestiti ognuno da speciali Macchine Virtuali aggiornate, attivate/disattivate da software detti di “orchestrazione”. Negli ultimi anni la ricerca di maggiore efficienza ha portato ai Containers e ai Microservizi. La parola Containers vuole proprio ricordare quelli fisici che tanti vantaggi hanno portato al trasporto delle merci. La standardizzazione delle dimensioni esterne facilita la gestione automatizzata e l’assenza di trazione e ruote diminuisce i costi ed aumenta la densità dei beni nel trasporto su lunga distanza. Analogamente i container software espongono interfacce standard ed hanno un’infrastruttura più leggera rispetto alle Macchine Virtuali, mentre i Microservizi sono ancora più efficienti, riducendo ulteriormente il peso dell’infrastruttura.

Il più diffuso software di orchestrazione per Containers è Kubernetes sviluppato da Google ed ora disponibile su tutte le piattaforme Cloud. L’analogo Azure Service Fabric di Microsoft è progettato per orchestrare sia Containers che Microservizi senza un unico Master, sostituito da un’intelligenza distribuita nei diversi nodi, ognuno dei quali può ospitare tipicamente decine di Containers o centinaia di Microservizi. Ogni nodo si sincronizza continuamente con gli altri e ne rileva eventuali malfunzionamenti o saturazioni allo scopo di aumentare sia la resilienza (la capacità di sopportare guasti o situazioni anomale) che la scalabilità (la possibilità di usare da 1 a migliaia di macchine in parallelo, a secondo del carico di lavoro).

Azure Service Fabric è utilizzabile sia con Linux che con Windows, in qualunque Cloud e anche localmente.

Altri vantaggi delle architetture native Cloud

La specializzazione ed autonomia dei servizi software presentano forti vantaggi anche dal punto di vista dello sviluppo, messa in produzione e manutenzione (in sintesi DevOps) in quanto possono essere gestite da piccoli gruppi di persone operanti in relativa autonomia. Questo consente un’evoluzione a piccoli passi, semplice e continua perché ogni servizio può venire aggiornato e rilasciato indipendentemente dagli altri. L’aggiunta di API che espongono nuove funzionalità non dovrà mai influire negativamente sulle precedenti API in modo che gli altri gruppi possano decidere autonomamente se e quando utilizzare quelle nuove. L’aggiunta di un servizio completamente nuovo è altrettanto agevole.

Al contrario, per far evolvere i tradizionali sistemi monolitici è richiesto un grande lavoro di coordinamento tra responsabili di prodotto, programmatori e operativi, tanto da parlare di “big-bang” per il rilascio di nuove versioni dove un piccolo errore può portare al blocco dell’intera applicazione.

Con le architetture native Cloud il passaggio verso uno sviluppo e una gestione del software più agili, economici ed affidabili non potrebbe essere più deciso. Al solito lo scoglio è il cambio di cultura.

 

L’esperienza di aKite

aKite è “nativo Cloud” fin dal suo primo rilascio nel 2009 e quindi basato su una federazione di servizi cooperanti fra loro nel Cloud e con le App nei negozi, ognuno dei quali richiedeva inizialmente almeno una macchina virtuale, naturalmente condivisa tra tutti gli utenti secondo il principio della multi-tenancy. Recentemente questi Servizi sono stati trasformati piuttosto facilmente in MicroServizi orchestrati dall’Azure Service Fabric. Il vantaggio della maggiore efficienza e densità si vede, ad esempio, di notte quando l’attività è ridotta e sono necessarie meno macchine attive, mentre la scalabilità è maggiore e più facilmente automatizzabile perché la tecnologia è la stessa che Microsoft utilizza da anni per gestire servizi software (SaaS) anche con milioni di utenti.

 

Prossimi passi

Alcune funzioni utilizzate sporadicamente saranno rese “serverless”. Per eseguirle non occorre alcuna attivazione preventiva, da cui la denominazione “senza server” per la verità un po’ forzata perché alcuni server, anche se gestiti dalla piattaforma e condivisi, sono comunque necessari. Si paga solo in base ai secondi necessari per ogni esecuzione. Oltre alla riduzione dei costi per la mancanza di server dedicati che rimarrebbero parzialmente inutilizzati, il serverless computing assicura anche la massima scalabilità in quanto non esiste praticamente limite al numero di funzioni attivabili contemporaneamente.

I notevoli investimenti nella riprogettazione di aKite sui nuovi paradigmi del Cloud, avvenuta quasi dieci anni fa, confermano il vecchio detto “Chi ben inizia è già a metà dell’opera”.

Via del Progresso 2/a
35010 Vigonza (PD)
P.IVA/C.F: 02110950264
REA 458897 C.S. 50.000,00 €

Il software

akite

Funzionalità

Integrazioni

Blog

© Copyright 2023 aKite srl – Privacy policy | Cookie policy