vai al contenuto principale

Introduzione

Una Cloudlet è un (micro)servizio che espone un'API GraphQL generata automaticamente da Livebase a partire da un modello concettuale per gestire dei dati presenti nel suo database (senza bisogno di scrivere codice). È un componente di backend headless inserito all'interno di un container OSGI (Karaf), che garantisce una gestione evoluta dei dati di business, sempre nel rispetto delle regole modellate.

Una volta generata e dispiegata nel server di hosting, una Cloudlet è totalmente indipendente dalla piattaforma Livebase; essa è concepita per integrasi in architetture in cui sono presenti anche altri microservizi, ed è estendibile attraverso l’uso di Plugin.

Ogni Cloudlet possiede un nome che determina in parte l’URL dei suoi endpoint ed è univoco per ciascun account.

Le componenti essenziali di una Cloudlet sono tre:

  • la community, gli utenti autorizzati a invocare le API della Cloudlet, ognuno dei quali è associato a uno dei profili definiti nell’engine installato; i membri della community sono persistiti all’interno del database della Cloudlet.
  • l’engine racchiude la logica applicativa della Cloudlet, consente di esporre e utilizzare le API GraphQL, e di eseguire controlli di compatibilità con i dati presenti nel database. Un engine è generato a partire da un modello concettuale (un linguaggio proprietario che estende i diagrammi di classe UML); quando è installato su una Cloudlet, viene elaborato da Livebase per consentire di gestire i dati presenti nel database nel rispetto delle regole di business e dei permessi definiti nei relativi schemas del modello stesso.
  • il database, i dati presenti sulla Cloudlet, la cui struttura è determinata dal Database schema dell’engine; tali dati rimangono sempre e solo sull’infrastruttura di hosting scelta dall’utente.

La gestione delle Cloudlet avviene attraverso la Dashboard di Livebase, eseguendo operazioni sulla scheda Cloudlets nella parte destra dell’interfaccia. Puoi consultare un elenco dettagliato delle operazioni supportate dalla Dashboard nelle seguenti pagine:

Dashboard Cloudlet Section

Cloudlet e GraphQL #

La Cloudlet integra un interprete GraphQL in lettura e scrittura con ottimizzazione avanzata, che risolve molti dei problemi legati all’implementazione di un engine GraphQL (quali ad esempio l’under e over fetching).

Per testare il funzionamento della Cloudlet è possibile utilizzare GraphiQL, uno strumento potente e di facile utilizzo, del quale puoi trovare una spiegazione nella pagina dedicata della documentazione.

Per ciascun Application schema viene generato un servizio (e il relativo endpoint).

È possibile scaricare il GraphQL Schema di una Cloudlet seguendo le indicazioni contenute in questa pagina.

Il pannello della Cloudlet #

La sezione Cloudlets sul lato destro della Dashboard contiene le rappresentazioni grafiche delle Cloudlet di un utente.
Ogni pannello di una Cloudlet è diviso in tre sezioni.

La sezione superiore (header) visualizza il nome e un link che consente di accedere all’IDE GrapiQL della Cloudlet.

Il pulsante consente di accedere al pannello API and Public URLs, dal quale è possibile scaricare il GraphQL schema, disabilitare e riabilitare le API GraphQL e vedere i singoli endpoint generati.

New Cloudlet

La sezione centrale mostra tre icone che forniscono informazioni e accesso ai componenti essenziali della Cloudlet che abbiamo descritto in precedenza:

New Cloudlet

La sezione inferiore mostra lo stato della Cloudlet:

  • Running, la Cloudlet è online e tutti i suoi servizi sono accessibili dagli utenti;
  • Stopped, la Cloudlet è stata arrestata (ad esempio per effettuare modifiche all’engine);
  • Cannot start (missing Engine), la Cloudlet non può essere generata perché su di essa non è stato installato nessun engine;
  • Stopped (engine/database mismatch), è presente un disallineamento tra engine e database di tipo low, che dunque può essere risolto automaticamente;
  • Cannot start (engine/database mismatch), è presente un disallineamento tra engine e database che non può essere risolto automaticamente perché uno o più vincoli del modello non sono applicabili sui dati correnti (ad es. vincolo unique su una classe, o vincolo required su un attributo non valorizzato) e/o comporterebbe una perdita di dati.

New Cloudlet

Generazione e dispiegamento della Cloudlet #

Il dispiegamento della Cloudlet avviene attraverso un server di hosting esterno. Attualmente, gli scenari supportati sono due:

  1. On-premise
  2. Amazon AWS

Il processo di generazione e dispiegamento impiega pochi minuti e può essere controllato in due modi:

  • manualmente, attraverso la Dashboard di Livebase;
  • programmaticamente da una procedura Jenkins, che può richiamare delle API REST appositamente esposte dalla piattaforma Livebase attraverso dei Plugin Gradle. Maggiori informazioni sono disponibili nella pagina dedicata.