Architetture IT per il Retail ai tempi del Cloud.

 

Introduzione

Ancora oggi l’IT per il Retail si dibatte nel dilemma fra architetture Centralizzate, con un unico database (db) a cui tutti i negozi accedono in tempo reale, e architetture Dipartimentali, con un db in ogni negozio replicato periodicamente con il centro.

I pregi dell’architettura centralizzata sono la disponibilità di dati sempre aggiornati e la semplicità tecnica, mentre i difetti sono le vulnerabilità in caso di guasto al sistema centrale o alle linee di comunicazione. L’architettura Dipartimentale offre vantaggi e svantaggi speculari: resilienza ai guasti, a fronte di una maggiore complessità di gestione e mancanza di una “unica verità”.

Per diminuire i difetti delle architetture Centralizzate si affiancano dei sistemi di Back-up da attivare in caso di guasti esterni, ma con un aumento di complessità e costi. Nel caso delle soluzioni Dipartimentali si aumenta la frequenza delle repliche, riducendo l’efficienza, senza comunque raggiungere una visione costantemente aggiornata dell’intera catena.

Per questi motivi si assiste al passaggio da un’architettura tradizionale all’altra. Dopo aver sperimentato le limitazioni di una, si cambia per poi rendersi conto di nuovi e diversi limiti.

 

L’importanza dell’architettura

L’architettura, sia essa applicata all’IT 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. Quelle tradizionali sono rivolte più verso l’interno dell’azienda che verso l’esterno e per questo si possono definire “introverse”, mentre nel nuovo millennio sono necessarie delle architetture “estroverse” che favoriscano la cooperazione con i Fornitori di prodotti/servizi e specialmente con i Clienti, da tempo sul Cloud con i loro Tablet e SmartPhones.

 

L’architettura Distribuita orientata ai Servizi

Le architetture Distribuite ai tempi del Cloud sono basate su servizi attivi sia nei dispositivi in periferia (PC, Tablet, SmartPhone) che nel Cloud, i quali cooperano tra loro per ottenere prestazioni ed efficienza impossibili con le architetture tradizionali.

Con “distribuita” si vuole indicare qualcosa di diverso dal Parallel Computing, come nel Map-Reduce dei Big Data o nel Load Balancing dei siti web, dove il servizio centrale ha il solo scopo di distribuire le attività ai sistemi che lavorano in parallelo e, alla fine, consolidare i risultati. Non si vuole nemmeno indicare l’assenza di un qualunque sistema centrale come avviene per Internet, progettata per non avere alcun “single point of failure” per essere invulnerabile.

Si vuole indicare piuttosto un concetto di cooperazione dove ogni sistema esegue i compiti più appropriati al contesto in cui si trova e scambia messaggi secondo una regia prestabilita. Le App rese popolari dagli SmartPhones sono un perfetto esempio di questa nuova intelligenza distribuita. Secondo questa architettura, i POS (Punti cassa) gestiscono autonomamente la ricerca locale di prezzi, promozioni e clienti per produrre i documenti di vendita alla massima velocità e senza dipendere da guasti esterni, mentre i servizi sul Cloud gestiranno, tra gli altri, il magazzino e i saldi delle Gift Card o dei Buoni d’acquisto.

Con “servizio” si indica un componente software specializzato in una determinata funzionalità, con una propria capacità di elaborazione e gestione dei dati, che coopera con altri servizi per mezzo di messaggi standard ad alto livello (REST o SOAP), in modo da non dipendere da una particolare tecnologia e favorire riutilizzo e integrazione. Inoltre questi messaggi sono asincroni (come le mail) in modo da migliorare la scalabilità. Nei momenti di punta si creano infatti delle code, prontamente smaltite appena la situazione ritorna normale. In altre parole si implementano i dettami della SOA (Service Oriented Architecture) per realizzare il sogno di sistemi IT costruiti su misura dell’azienda mettendo assieme servizi standard, come se fossero dei blocchetti Lego, attraverso le API (Application Programming Interfaces).

Dal punto di vista dell’autonomia gestionale del singolo PdV e della complessità tecnica, l’architettura Distribuita si pone a metà strada tra Centralizzata e Dipartimentale. Ma le nuove idee introdotte dalle moderne piattaforme di Cloud Computing la pongono in una dimensione completamente nuova.

 

Il Service Bus

I singoli servizi o App possono cooperare fra loro direttamente senza bisogno di alcuna infrastruttura oltre a Internet e ai normali protocolli http/https. Un passo avanti per il trasferimento veloce e sicuro di messaggi tra i diversi servizi sono i Service Bus, un servizio che può essere visto come una sorta di autostrada dei messaggi per migliorare prestazioni e sicurezza ed inoltre scaricare i diversi componenti dal compito di assicurare il recapito, anche in caso di guasto della rete o del ricevente.

Un Service Bus non serve solo i sistemi presenti nei negozi, ma anche i sottosistemi che compongono il gruppo di servizi erogati all’interno del Cloud. Un altro cambiamento introdotto dal vero Cloud Computing è la fine dei grandi applicativi monolitici e l’avvento di federazioni di servizi. In questo modo un nuovo servizio centralizzato, ad esempio basato sui Big Data o Machine Learning, può essere aggiunto senza modificare il resto.

 

Vantaggi

I vantaggi dell’architettura Distribuita, reinterpretata secondo le recenti idee alla base delle Service Oriented Architectures (SOA) e delle moderne piattaforme di Cloud Computing sono diversi.

  • Qualità. La cooperazione fra sistemi indipendenti attraverso API standard consente un costante miglioramento di ogni singolo servizio senza dipendere dall’evoluzione degli altri. Un’erogazione in modalità SaaS (Software as a Service) da un servizio Cloud condiviso (multi-tenant) abbatte anche tempi e costi di gestione e di deployment delle versioni continuamente migliorate.

  • Sicurezza e Affidabilità. Le tecnologie attuali assicurano la massima sicurezza delle architetture native Cloud, più di quanto avvenga per quelle tradizionali. I servizi locali in ogni postazione di cassa assicurano le normali operazioni di vendita anche in presenza di guasti non solo nel Cloud, ma anche nel Punto di Vendita.

  • Scalabilità. La cooperazione intelligente tra sottosistemi diversi, oltre a tecniche di elaborazione parallela ed elastica (scale-out) per i servizi centrali, consente una scalabilità praticamente infinita. Anche la catena più grande può gestire tutti i suoi negozi con lo stesso sistema ed avere una visione dell’attività sempre aggiornata.

  • Efficienza. I messaggi asincroni permettono ai singoli servizi di lavorare sempre al massimo delle loro capacità. La condivisione di HW e SW (multi-tenancy) e l’elasticità rapida nel Cloud, riducono le risorse necessarie a garantire buoni tempi di risposta al variare del carico di lavoro. Oltrepassato un punto di pareggio, la suddivisione in servizi distribuiti assicura costi sensibilmente minori.

  • Apertura e Agilità. Un sistema basato su API standard si integra facilmente con altri sistemi in modo da ottimizzare, ad esempio, la catena logistica ed il rapporto con i Clienti. Una IT componibile come un Lego ha il vantaggio di ridurre la dipendenza da un unico fornitore e di sperimentare nuovi servizi in modo rapido ed economico.