Due mesi fa, abbiamo introdotto una nuova funzionalità importante per Lokad: la nostra prima esplorazione dei dati in tempo reale. Questa funzionalità è chiamata dashboard slicing, e ci è voluta una revisione completa del backend di elaborazione dei dati di basso livello che alimenta Envision per completarla. Con le slice delle dashboard, ogni dashboard diventa un intero dizionario di visualizzazioni delle dashboard, che possono essere esplorate in tempo reale con una barra di ricerca.

Ad esempio, slicando una dashboard pensata come ispettore di prodotto, che raccoglie in un unico luogo tutte le informazioni su un prodotto - inclusi ad esempio la domanda probabilistica e le previsioni del tempo di consegna - è ora possibile passare in tempo reale da un prodotto all’altro.

Dashboard Envision con le slice

Attualmente, Lokad supporta fino a 200.000 slice (ovvero visualizzazioni delle dashboard) da produrre per una singola dashboard; e queste slice possono essere visualizzate in tempo reale tramite il selettore, che dispone di una funzione di ricerca in tempo reale per facilitare l’esplorazione dei dati. A differenza degli strumenti di business intelligence, queste slice possono contenere calcoli molto complessi, non solo il semplice slice-and-dice su un cubo OLAP.

Casella di ricerca per le slice nella dashboard Envision

Quando si tratta di elaborazione e reportistica dei dati, ci sono tipicamente due approcci: l’elaborazione online e l’elaborazione batch. L’elaborazione online prende un flusso di dati, ed è tipicamente previsto che tutto ciò che viene visualizzato dal sistema sia sempre aggiornato: il sistema non è in ritardo di più di qualche minuto, a volte anche solo di pochi secondi rispetto alla realtà. I cubi OLAP e la maggior parte degli strumenti definiti business intelligence rientrano in questa categoria. Sebbene l’analisi in tempo reale 1 sia molto desiderabile, non solo dal punto di vista aziendale (i dati freschi sono migliori dei dati obsoleti), ma anche dal punto di vista dell’utente finale (le prestazioni sono una caratteristica), comportano anche limitazioni rigorose. In poche parole, è estremamente difficile fornire analisi intelligenti in tempo reale. Di conseguenza, tutti i sistemi analitici online presentano limitazioni severe per quanto riguarda il tipo di analisi che possono essere eseguite dal sistema.

D’altra parte, l’elaborazione batch viene tipicamente eseguita su base programmata (ad esempio, esecuzioni giornaliere) mentre tutti i dati storici (o una parte consistente di essi) vengono inseriti. La freschezza dei risultati è limitata dalla frequenza della pianificazione: un batch giornaliero fornisce sempre risultati che riflettono la situazione di ieri, non la situazione di oggi. Poiché tutti i dati sono disponibili fin dall’inizio, l’elaborazione batch è ideale per eseguire tutti i tipi di ottimizzazioni di calcolo che possono aumentare notevolmente le prestazioni complessive del processo. Di conseguenza, attraverso l’elaborazione batch è possibile eseguire intere classi di calcoli complessi che rimangono fuori dalla portata dell’elaborazione online. Inoltre, dal punto di vista IT, l’elaborazione batch tende ad essere molto più facile sia da implementare che da gestire 2. Lo svantaggio principale dell’elaborazione batch è il ritardo imposto dalla natura batch del processo.

Come piattaforma software, Lokad è decisamente nel campo dell’elaborazione batch. Infatti, mentre l’ottimizzazione della Catena di Fornitura Quantitativa richiede un alto grado di reattività, ci sono molte decisioni che non richiedono una reattività istantanea, ad esempio decidere se produrre un pallet extra di prodotti o decidere se è il momento di abbassare il prezzo per liquidare un magazzino. Per queste decisioni, la preoccupazione principale è prendere la migliore decisione possibile, e se questa decisione può essere migliorata misurabilmente spendendo un’ora di calcolo in più sul caso, allora è quasi garantito che questa ora di calcolo in più sarà un buon investimento 3.

Pertanto, Envision è progettato secondo una prospettiva di elaborazione batch. Abbiamo alcuni trucchi nella manica per rendere Envision molto veloce anche quando si lavora con terabyte di dati; ma a questa scala stiamo parlando di ottenere risultati entro pochi minuti, non meno di un secondo. In realtà, a causa della natura altamente distribuita del modello di calcolo di Envision, è difficile per Lokad completare l’esecuzione di qualsiasi script Envision in meno di 5 secondi, anche quando sono coinvolti solo pochi megabyte di dati. Più un sistema è distribuito, più c’è inerzia interna per sincronizzare tutte le parti. Maggiore scalabilità è nemica di una latenza inferiore.

Alcuni anni fa, abbiamo introdotto la nozione di moduli di inserimento in Envision: una funzionalità che consente di aggiungere un modulo configurabile sulla dashboard, che diventa un input accessibile dallo script Envision. Ad esempio, attraverso questa funzionalità, è stato semplice progettare una dashboard destinata a un ispettore di prodotti che mostra tutte le informazioni rilevanti relative ai prodotti specificati. Purtroppo, per ottenere la dashboard allineata con il valore del modulo appena inserito, lo script Envision doveva essere rieseguito, causando secondi di ritardo per ottenere i risultati aggiornati; una durata che era inaccettabilmente lunga per l’esplorazione dei dati.

Le slices della dashboard (consulta la nostra documentazione tecnica) rappresentano il nostro tentativo di ottenere il meglio di entrambi i mondi: elaborazione online ed elaborazione batch. Il trucco è che Lokad può ora calcolare in batch un vasto numero di slices (ogni slice può riflettere un prodotto, una posizione, uno scenario, o una combinazione di tutte queste cose) e consentirti di passare da una slice all’altra in tempo reale, il che è possibile perché tutto è stato precomputato. Naturalmente, precomputare un gran numero di slices è più costoso dal punto di vista computazionale, ma non tanto quanto si potrebbe pensare. Di solito è più conveniente per Lokad calcolare 10.000 slices in una volta, piuttosto che eseguire 100 run indipendenti, ognuno dedicato a una singola slice.

Attraverso le slices, Lokad sta acquisendo capacità di business intelligence su steroide: non solo è possibile esplorare molte visualizzazioni diverse (ad esempio prodotti, posizioni, periodi di tempo) in tempo reale, ma senza alcuna delle solite restrizioni delle architetture di elaborazione online.


  1. In un sistema distribuito, non esiste una cosa del genere come “tempo reale”. La velocità della luce stessa impone limiti rigidi al grado di sincronizzazione di un sistema che si estende su diversi continenti. Pertanto, questa terminologia è un po’ abusiva. Tuttavia, se la latenza complessiva è inferiore a un secondo circa, è tipicamente accettabile qualificare un’app di elaborazione dati come “in tempo reale”. ↩︎

  2. L’implementazione tipica di un processo batch consiste nel spostare file flat, che è una funzionalità di base supportata praticamente da ogni singolo sistema al giorno d’oggi. Quindi, dal punto di vista delle operazioni, se un componente del processo batch subisce un’interruzione transitoria, di solito una semplice politica di ripetizione risolve il problema. Al contrario, i sistemi online tendono a comportarsi male quando un componente va giù. ↩︎

  3. Alla data odierna, un’ora di calcolo su una CPU moderna costa tipicamente meno di $0.02 quando si utilizza il pay-as-you-go sulle piattaforme di cloud computing dominanti. Pertanto, fintanto che i benefici generati da una singola decisione migliore sulla supply chain valgono molto più di $0.02, ha senso investire quest’ora di calcolo. ↩︎