Quando si accumulano una grande quantità di dati, questi si devono interrogare con alta velocità e bassa latenza ad intervalli regolari. Farlo globalmente è diventata una delle sfide che ci siamo trovati davanti. I dati archiviati su timestream non variano mai una volta archiviati e su questo presupposto abbiamo creato un nostro Gateway che, con tre differenti livelli di cache, permette ai nostri clienti, di convertire le query SQL scritte per Timestream in API RESTful pronte all’uso. Il nostro gateway risiede in ogni region AWS e con un routing intelligente riesce ad aggregare i dati che risiedono su Istanze timestream differenti in un’unica API, permettendo una velocità di implementazione delle soluzioni IoT globali mai vista.
Ora i nostri clienti possono semplicemente scrivere le loro query, confrontarsi con noi su come ottimizzarle e integrarle subito come sorgenti dati RESTful . Il funzionamento è semplice, ad ogni cliente viene assegnato un token/key cosi che possa da subito iniziare a scrivere ed eseguire le query. Ad ogni query verrà assegnato un numero richiamabile via REST globalmente.
Tra le opzioni che il gateway mette a disposizione, la feature HISTORY mantiene e informa i clienti del costo in BYTE e dell’efficenza delle loro query, dando la possibilità di un affinamento e un’osservazione continua dei costi di utilizzo dei loro servizi Timestream che stanno usando in giro per il mondo.
In questo modo permettiamo ai nostri clienti di concentrarsi sulla logica del business e sui dati, senza dover scrivere una riga di codice in più. Questo netto disaccoppiamento tra scritture dei dati, letture, query SQL e logiche di programmazione, crea un layer di astrazione REST che ci permette di essere il fornitore di un software SaaS di serie storiche raggiungibile via API.
La costruzione di un gateway per timestream risolve diverse problematiche che globalmente possono presentarsi quando si lavora in contesti multi-region.
Attraverso l’architettura del nostro gateway, ci è permesso interrogare ed aggregare dati, database e tabelle di Timestream situati in region diverse, il tutto utilizzando un sistema di cache a tre livelli che consente di mettere i risultati sulla CDN di AWS Cloudfront a disposizione dei nostri clienti, con latenze spesso inferiori ai 35 ms. In questo modo possiamo sopperire alle problematiche multi-region e garantire i risultati attesi per le chiamate alle API.
Per la gestione delle query viene messa a disposizione una semplice interfaccia, permettendo ad ogni utilizzatore di invalidare i tre livelli di caching e di collaudare il response e il timing della query prima che questa sia messa in produzione. Internamente alla console di gestione viene attuato un versioning delle query SQL scritte, così da monitorare il controllo delle modifiche nel tempo.
LOGCONSULTING, per diverse volte in passato, ha utilizzato database relazionali generici per l’injection di dati costante e ha tentato di ottimizzare questi per le serie temporali; ma il risultato in termini economici era spesso deludente. Le prestazioni decadevano all’aumentare della dimensione delle timeseries e il joining tra i dati costringeva alla gestione del partitioning e dello sharding. Se consideriamo questo un costo, spesso nascosto, la scelta del database AWS Timestream si è confermata vincente facendo divenire i costi di gestione pressoché inesistenti. Timestream è pagato per il volume delle scritture effettuate. Con l’esperienza maturata e i nostri tools che ci permettono di collaudare le API in corso d’opera, a consumo e con una visibilità granulare, il risparmio è sempre calcolabile attraverso misure certe. Per fare un esempio, in alcuni dei nostri progetti IoT siamo riusciti ad ottimizzare i singoli payloads di diversi devices che scrivono su Timestream attraverso AWS IoT core, tanto che i costi mensili si sono abbassati di 100 volte. Aggregando le measures rilevate, agendo su payloads con attributi comuni e osservando le Query del nostro gateway, siamo riusciti a direzionare il costo di un mese di scritture per dispositivo da 26,78$ a 0,25$.