Come si suol dire, per ogni lavoro serve l’attrezzo adatto. E, nel caso dei database destinati a gestire le moderne applicazioni digitali, questo principio sembra calzare quanto mai a pennello: il tema fondamentale dei database specializzati è stato richiamato da Marco Argenti, Vice President Technology di AWS, al recente AWS Summit di Milano, per sottolineare che oggi in questo campo non esiste più un unico approccio, valido per tutti i casi d’uso, e ricordare anche l’ampiezza dell’offerta di soluzioni dispiegabile dal grande cloud provider. L’argomento è stato poi messo a fuoco più chiaramente in una sessione di approfondimento da Antonio D’Ortenzio, Solutions Architect di AWS: “Una delle domande più frequenti che i nostri clienti ci rivolgono è quali consigli possiamo dare per la pianificazione degli investimenti in ambito database, da ora in avanti. Finora, infatti, le organizzazioni sono state abituate a fare scelte di piattaforma, ma adesso esistono decine di database tra cui scegliere. Per cui, oggi il tema è come continuare ad affrontare la problematica della selezione dei database, assicurandosi di stare utilizzando sempre lo strumento giusto per il giusto obiettivo”.
App moderne e nuovi requisiti per i database cloud based
Per far comprendere quanto sia mutato lo scenario database, D’Ortenzio fa un breve excursus sull’evoluzione dell’offerta di questa tecnologia nel corso degli ultimi decenni: “Negli anni ’70 i database relazionali si sono diffusi a livello commerciale; più tardi, negli anni ’90, a questi database si sono aggiunte le versioni open source della tecnologia RDBMS, come MySQL e PostgreSQL. Dal 2005 in poi abbiamo assistito al fiorire di una serie di database specializzati, che si discostano dal modello relazionale”. E non è casuale che questa fioritura abbia coinciso proprio con il decollo del cloud: “Nello stesso tempo, molti nostri clienti iniziavano a sviluppare applicazioni ‘Internet-scale’, che sempre più avevano la necessità di non scendere a compromessi, su requisiti come semplicità, convenienza, performance, disponibilità, scalabilità”.
In effetti, continua D’Ortenzio, le applicazioni digitali di ultima generazione sono distribuite a livello globale, possono gestire milioni di utenti ed enormi moli di dati; in termini di prestazioni devono fornire tempi di risposta dell’ordine dei millisecondi e, talvolta, dei microsecondi; inoltre, i sistemi sottostanti che le supportano devono poter scalare, verso l’alto o verso il basso, in maniera rapida, elastica e automatica. “I requisiti tecnici sono oggi così differenti, da essere difficilmente supportabili attraverso un’unica tecnologia database. Va poi aggiunto che, nel definire la strategia database, e nel tentativo di liberarsi dei tradizionali database commerciali, che ritengono costosi, molti nostri clienti riportano che il modello open source on-premise si rende difficilmente scalabile e performante: e questo è uno dei motivi principali per cui abbiamo sviluppato Amazon Aurora” (figura 1).
Semplificare la gestione database con i servizi AWS
Aurora fa parte dell’offerta di motori database di Amazon Relational Database Service (RDS) (figura 2), il sistema ideato da AWS per semplificare l’impostazione, il funzionamento e il dimensionamento di database relazionali nel cloud. Compatibile con MySQL e PostgreSQL, e completamente gestito da Amazon RDS, Aurora è un database creato per il cloud, ed è in grado di combinare le prestazioni e la disponibilità dei database commerciali enterprise con la semplicità e la convenienza dei database open source: Aurora, sostiene AWS, è cinque volte più veloce dei database MySQL standard e tre volte più veloce dei database PostgreSQL standard. Come accennato, Amazon RDS controlla in toto Aurora, automatizzandone l’amministrazione: dal provisioning dell’hardware, alla configurazione dei database, all’applicazione delle patch, all’esecuzione dei backup.
Differenti database ‘purpose-built’
Oggi, i database relazionali non sono comunque sufficienti a soddisfare tutti i casi applicativi: ecco perché, chiarisce D’Ortenzio, un’organizzazione deve distinguere quali sono i propri workload, le categorie di dati comuni e gli use case, e poi andare a identificare la tecnologia corretta per il caso d’uso specifico (figura 3).
Ad esempio, alle grandi imprese che hanno l’esigenza di supportare transazioni ACID (atomicity, consistency, isolation, and durability) e costruire applicazioni business-critical sul larga scala, AWS consiglia Amazon DynamoDB, un database di tipo non relazionale (NoSQL) in grado di gestire i modelli di dati di tipo documento e di tipo chiave-valore, fornendo performance dell’ordine dei millisecondi. Quando, invece, i casi d’uso riguardano la gestione di contenuti e cataloghi, archivi digitali, la creazione di applicazioni per web e dispositivi mobili, o la migrazione di workload MongoDB locali nel cloud, la soluzione indicata da AWS è Amazon DocumentDB, un servizio di database di documenti, compatibile con MongoDB e caratterizzato da velocità, scalabilità ed elevata disponibilità (figura 4).
L’offerta AWS si estende attraverso Amazon ElastiCache, un servizio datastore e cache in memoria completamente gestito, compatibile con datastore ‘in-memory’ come Redis o Memcached: ElastiCache è adatto ad applicazioni a intenso utilizzo di dati, che gestiscono, per esempio, le transazioni real-time nei servizi finanziari, o nell’assistenza sanitaria. In un altro ambito particolare si collocano i database a grafo, come Amazon Neptune, alternativi a quelli relazionali, e progettati in modo specifico per i casi d’uso in cui è necessario creare relazioni tra dati ed eseguire con rapidità query sulle stesse. Ancora, Amazon Timestream è un servizio di database di serie temporali, anch’esso completamente gestito, e ideato per archiviare ed elaborare in modo efficiente, ad esempio, dati di log di attività DevOps, dati raccolti da sensori in applicazioni IoT, o dati di telemetria industriale, usati per il monitoraggio e la manutenzione di macchinari e apparecchiature. L’offerta AWS, conclude D’Ortenzio, comprende anche Amazon Quantum Ledger Database (QLDB), un database di libro mastro completamente gestito, che risponde all’esigenza di tracciare e verificare la storia di tutti i cambiamenti apportati ai dati di un’applicazione; un caso d’uso può essere la registrazione, in maniera completa, affidabile e verificabile, dello storico di tutta l’attività economica e finanziaria di un banca, o di qualsiasi altra organizzazione.