Datastore - Implementazione di microservizi in AWS

Datastore

Un datastore permette storage persistente dei dati necessari per il funzionamento dei microservizi. I datastore più utilizzati per i dati di sessione sono sistemi di caching in memoria quali Memcached o Redis. AWS offre entrambe le tecnologie all'interno del servizio gestito Amazon ElastiCache.

L'utilizzo di una cache tra i server applicativi e il database è un meccanismo comune per ridurre il carico di lettura nel database, che a sua volta libera risorse utilizzabili per supportare un numero maggiore di scritture. I sistemi di cache sono anche in grado di migliorare la latenza.

I database relazionali sono ancora molto utilizzati per memorizzare dati strutturati e oggetti di business. AWS fornisce sei motori di database (Microsoft SQL Server, Oracle, MySQL, MariaDB, PostgreSQL e Amazon Aurora) sotto forma di servizio gestito tramite Amazon Relational Database Service (Amazon RDS).

I database relazionali, tuttavia, non sono progettati per fornire scalabilità illimitata, perciò l'applicazione di tecniche per il supporto di volumi elevati di query può rappresentare un'operazione lunga e complessa.

I database NoSQL sono stati progettati per ottenere scalabilità, prestazioni e disponibilità con la stessa consistenza dei database relazionali. Un fattore da non sottovalutare nei database NoSQL è che in genere non applicano uno schema rigoroso. I dati sono distribuiti su partizioni dotate di scalabilità orizzontale e vengono recuperati tramite chiavi di partizione.

Poiché i singoli microservizi sono progettati per operazioni dedicate, in genere dispongono di modelli di dati semplificati adatti al livello di persistenza dei database NoSQL. È tuttavia importante ricordare che questo tipo di database hanno pattern di accesso differenti rispetto ai database relazionali. Ad esempio, non è possibile unire tabelle. Se questa operazione dovesse rendersi necessaria, è necessario implementare la logica direttamente nell'applicazione. È possibile usare Amazon DynamoDB per creare una tabella di database in grado di memorizzare e recuperare qualsiasi volume di dati e servire qualsiasi livello di traffico. DynamoDB offre prestazioni a livelli di qualche millisecondo, tuttavia alcuni casi d'uso richiedono tempi di risposta nell'ordine dei microsecondi. Amazon DynamoDB Accelerator (DAX) offre funzionalità di memorizzazione nella cache per l'accesso ai dati.

DynamoDB offre anche una funzionalità di auto scaling per regolare dinamicamente la capacità di throughput in risposta al traffico effettivo. Ciononostante, ci sono casi in cui la pianificazione della capacità è difficile o impossibile a causa di picchi di attività di breve durata nell'ambito dell’applicazione. Per tali situazioni, DynamoDB offre un'opzione on demand, che offre una semplice tariffazione per richiesta. DynamoDB on demand è in grado di soddisfare immediatamente migliaia di richieste al secondo senza dover pianificare la capacità a disposizione.