Il CLOUD a tutto PaaS!

20/05/2020

GIOVANNI NOVELLA
Principal Management Consultant

L’obiettivo di questo articolo è descrivere le caratteristiche di uno dei modelli di applicazione del cloud, raccontandone i vantaggi che lo contraddistinguono e uno scenario di applicazione reale per evidenziarne i pregi.

 

Negli ultimi anni come Centro di Competenza Microsoft di Aubay ci siamo sempre di più specializzati nel supportare i Clienti nell’adozione di soluzioni cloud nella sua accezione più vantaggiosa: le soluzioni PaaS (Platform as a Service) previste all’interno della piattaforma Microsoft Azure.

Per questa ragione, in fase di studio delle soluzioni richieste dai Clienti la nostra filosofia è sempre stata quella di cercare di utilizzare in tutte le circostanze in cui fosse possibile, i servizi messi a disposizione dal Cloud provider nella modalità PaaS.

 

Una soluzione PaaS è progettata per supportare il ciclo di vita completo delle applicazioni: creazione, test, distribuzione, gestione e aggiornamento. Le soluzioni PaaS includono pertanto anche l’infrastruttura (server, archiviazione e rete), le componenti di middleware, gli strumenti di sviluppo, i servizi di business intelligence (BI), i sistemi di gestione dei database e molto altro.

Inoltre, il modello PaaS consente di evitare la complessità legata all’acquisto e alla gestione di licenze software, middleware, agenti di orchestrazione o strumenti di sviluppo. Si gestiscono le applicazioni ed i servizi sviluppati ed il provider cloud gestisce “tutto il resto”.

 

Vantaggi del modello PaaS

  • Riduzione del tempo per la scrittura di codice. Questo è possibile grazie alla presenza di componenti pre-codificati integrati nella piattaforma, come flusso di lavoro, servizi directory, funzionalità di sicurezza, ricerca e così via.
  • Semplicità di sviluppo per più piattaforme. Microsoft Azure offre opzioni di sviluppo per più piattaforme, come computer, dispositivi mobili e browser, rendendo più rapido e semplice lo sviluppo di app multipiattaforma.
  • Supporto di team di sviluppo distribuiti a livello geografico. Poiché l’accesso all’ambiente di sviluppo avviene tramite Internet, i team di sviluppo possono collaborare ai progetti anche quando i loro membri si trovano in posizioni remote.
  • Gestione completo del ciclo di vita delle applicazioni. Il modello PaaS offre tutte le funzionalità che servono per supportare il ciclo di vita completo delle applicazioni Web: creazione, test, distribuzione, gestione e aggiornamento, all’interno dello stesso ambiente integrato.

 

Scenario di applicazione

Un interessante scenario di applicazione del Cloud PaaS è la soluzione disegnata per un nostro Cliente che ha manifestato l’esigenza di realizzare in tempi strettissimi un portale Web “ad alto traffico”.

Il portale ha avuto tra i principali requisiti quello di permettere a circa 500.000 utenti di sottomettere le richieste di rimborso attraverso un processo guidato che tenesse conto delle direttive del decreto ministeriale e il rispetto dei vincoli procedurali dati degli istituti bancari.

A completare l’applicazione, un backend che consentisse al Cliente di gestire il ciclo di vita della richiesta di rimborso.

A seguito dell’analisi preliminare si è deciso di utilizzare la piattaforma Cloud Microsoft Azure, per ottenere le massime prestazioni con flessibilità, sicurezza e scalabilità della soluzione.

L’architettura disegnata prevedeva, come rappresentato nello schema, una soluzione PaaS totalmente a servizi configurati in alta affidabilità e con la possibilità di adeguamento automatico delle prestazioni, in caso di alto carico di lavoro.

 

I servizi cloud Azure che sono stati implementati per soddisfare le necessità del cliente sono così riassunti:

 

Azure App Service

Per l’“hosting” del portale è stato utilizzato il servizio Azure App Service.

Il servizio Azure App Service permette di creare e ospitare applicazioni Web, back-end per app mobili e altri servizi (API Rest per esempio) nel linguaggio che più si preferisce senza dover gestire l’infrastruttura.

Offre servizi di scalabilità, alta affidabilità, backup e distribuzioni automatiche da GitHub, Azure DevOps o altri repository.

 

Azure SQL Managed Instance

I dati dell’applicazione sono stati archiviati su SQL Server ed in particolare sul servizio Azure SQL Managed Instance che offre un database relazionale gestito come servizio, rendendo disponibile la versione più recente del motore SQL senza doversi preoccupare dell’infrastruttura sottostante. Per il portale in oggetto, è stato utilizzato il modello di servizio Business Critical, basato su un cluster a 4 nodi in modo da garantire l’alta affidabilità del servizio. Questo modello di architettura, basata sulla tecnologia Failover Cluster, fa sì che sia sempre disponibile un quorum di nodi di motore database in modo da non avere impatti sulle prestazioni anche quando sono presenti attività di manutenzione (update, patching).

Ogni nodo quindi gestisce tanto la potenza di calcolo che lo storage (SSD) agganciato al nodo localmente: l’alta affidabilità viene ottenuta tramite la replica dello storage e potenza di calcolo tramite la tecnologia AlwaysOn di SQL Server. Il cluster così configurato ha sempre un nodo attivo identificato come primario e 3 nodi che sono sempre allineati col primario: uno dei nodi secondari viene utilizzato in modalità “sola lettura” per l’esecuzione di query (creazione report) senza incidere sulle prestazioni del nodo primario.

Lo storage con tecnologia SSD ci permette di avere risposte a bassa latenza, nell’ordine di 1-2 ms.

 

Azure Application Gateway

L’accesso al portale è stato mediato dall’utilizzo del servizio Azure Application Gateway con funzionalità di Web Application Firewall. L’application gateway è un servizio di bilanciamento del carico del traffico Web che consente di gestire il traffico verso le applicazioni Web. Offre il redirect automatico da http a https, routing sulla base dell’url, offload SSL, multihosting e funzionalità di Web Application Firewall sulla base del set di regole definite dal consorzio OWASP (Open Web Application Security Project). Sono istanziate due istanze di Application Gateway di tipo Medium per offrire l’alta affidabilità del servizio ed abilitata la feature di Firewall per bloccare eventuali attacchi (SQL injection attacks, cross site scripting attacks, xss attacks,etc). Anche per il servizio in oggetto sono presenti automatismi che permettono la scalabilità in orizzontale del servizio in caso di alto traffico.

 

Azure Storage Account

Lo storage account Azure è il repository su cui vengono conservati i documenti uploadati dagli utenti. Viene utilizzato uno storage account BLOB, con modello di servizio Standard, che permette l’archiviazione di oggetti non strutturati come BLOB in blocchi. È configurato in modalità GRS (Geo-Redundant Storage) per offrire il 99,99999999999999% (16 9) di disponibilità del dato eseguendo la replica delle informazioni in un’area secondaria distante geograficamente dalla primaria.

 

Azure VPN Gateway

Il gateway VPN di Azure consente di instaurare connessioni crittografate tra la rete virtuale Azure dove sono presenti le risorse del portale e una (o più) sede on-premise. Tramite il tunnel crittografato il Cliente può accedere alle risorse come se queste fossero nella propria rete, senza quindi utilizzare la rete Internet pubblica.

 

Il cliente sta utilizzando l’ambiente da oltre 6 mesi riuscendo a gestire le richieste degli utenti nelle modalità e tempi desiderati.

Durante questo periodo abbiamo potuto constatare che le richieste complessive sono state circa 500.000 con dei picchi di circa 200.000 in archi temporali compresi in due-tre giorni.

Abbiamo inoltre monitorato i parametri chiave dell’infrastruttura che hanno evidenziato un utilizzo intensivo dei servizi nei momenti in cui gli utenti sottoponevano le richieste, ma senza creare problematiche di performance al portale grazie ad un reattivo adeguamento automatico delle risorse secondo delle logiche preconfigurate.

La soddisfazione manifestata dal Cliente è la miglior garanzia di aver progettato un’architettura Cloud che ha risposto appieno alle sue esigenze: uno dei fattori di successo è stata la possibilità di gestire i maggiori carichi di lavoro in modo autonomo attraverso le regole di “up scale” e “down scale” che aumentano e diminuiscono le risorse dei servizi in funzione delle necessità. Il tutto senza aver acquistato HW o licenze software ma tramite la flessibilità e potenzialità dei servizi PaaS presenti sulla piattaforma Microsoft Azure.