Message Broker (WAMP)
Il message broker WAMP è la spina dorsale della comunicazione di IronFlock. Ogni componente — dispositivi edge, servizi centrali, dispositivi virtuali, il sistema AI e l’interfaccia web — si connette al broker e comunica attraverso di esso.
Perché WAMP
WAMP (Web Application Messaging Protocol) combina due pattern di comunicazione in un unico protocollo:
- Publish/Subscribe (pub/sub) — Un dispositivo pubblica dati di un sensore su un topic; le dashboard, il FleetDB Service e i valutatori di allarmi si iscrivono e li ricevono in tempo reale
- Remote Procedure Calls (RPC) — Il servizio AI chiama una funzione su un dispositivo edge; il backend avvia un aggiornamento OTA; un operatore invia un comando a una macchina
Questo doppio pattern significa che IronFlock non ha bisogno di sistemi separati per lo streaming di dati in tempo reale e le operazioni richiesta-risposta. Un protocollo, una connessione, entrambi i pattern.
Come si connettono i componenti
┌──────────────┐ ┌──────────────┐ ┌──────────────┐
│ Edge │ │ Virtual │ │ Web UI │
│ Device │ │ Device │ │ (Browser) │
└──────┬───────┘ └──────┬───────┘ └──────┬───────┘
│ WSS │ WSS │ WSS
└────────────────────┼────────────────────┘
│
┌───────┴───────┐
│ WAMP Broker │
└───────┬───────┘
│
┌────────────────────┼────────────────────┐
│ WSS │ WSS │ WSS
┌──────┴───────┐ ┌──────┴───────┐ ┌──────┴───────┐
│ Backend │ │ FleetDB │ │ AI │
│ Service │ │ Service │ │ Service │
└──────────────┘ └──────────────┘ └──────────────┘Tutte le connessioni utilizzano WSS (WebSocket Secure) — connessioni crittografate, persistenti e bidirezionali su TLS.
Isolamento dei progetti tramite Realm
Il broker applica un isolamento rigoroso tra i progetti tramite i WAMP realm:
- A ogni combinazione progetto-app viene assegnato un proprio realm — uno spazio di messaggistica completamente isolato
- I messaggi pubblicati in un realm sono invisibili a tutti gli altri realm
- I dispositivi del Progetto A non possono vedere o interagire con i dispositivi del Progetto B
- Anche la stessa app installata in due progetti diversi opera in realm separati
Autenticazione
Ogni connessione al broker richiede autenticazione:
| Componente | Metodo di autenticazione |
|---|---|
| Dispositivi edge | WAMP-CRA (Challenge-Response) con segreti per dispositivo |
| Servizi backend | WAMP-CRA con credenziali di sistema |
| Client Web UI | Token di sessione basati su OIDC |
| Servizio AI | Credenziali di sistema con accesso limitato |
I client non autorizzati non possono unirsi a un realm, iscriversi a topic o chiamare procedure.
Flusso di dati in tempo reale
Ecco come una lettura di un sensore fluisce da un dispositivo a una dashboard:
- L’app sul dispositivo legge un valore del sensore e lo pubblica su un topic WAMP nel realm del progetto
- Il broker WAMP instrada il messaggio a tutti i sottoscrittori in quel realm
- Il FleetDB Service riceve il messaggio, lo scrive su TimescaleDB e valuta le regole di allarme
- L’interfaccia web riceve lo stesso messaggio e aggiorna il grafico della dashboard in tempo reale
L’intero flusso avviene con una latenza inferiore al secondo — la dashboard si aggiorna non appena i dati arrivano.
RPC per il controllo dei dispositivi
Il broker consente anche il controllo diretto dei dispositivi edge:
- L’operatore clicca su “Riavvia app” nell’interfaccia web
- Il backend chiama un RPC sull’agente del dispositivo attraverso il broker
- L’agente del dispositivo riceve la chiamata, riavvia il container e restituisce il risultato
- L’interfaccia web mostra la conferma
Lo stesso meccanismo alimenta l’AI fisico — quando l’assistente AI invoca una funzione su un dispositivo, è una chiamata RPC attraverso il broker.
Scalabilità
Il broker WAMP opera come cluster nelle distribuzioni in produzione:
- Più nodi broker gestiscono connessioni concorrenti
- Il carico viene distribuito tra i nodi
- I dispositivi mantengono connessioni persistenti con riconnessione automatica in caso di guasto
- Il broker gestisce migliaia di connessioni concorrenti di dispositivi con consegna dei messaggi a bassa latenza
Distribuzione on-premises
Nelle distribuzioni on-premises, il broker WAMP viene eseguito sulla tua infrastruttura insieme agli altri servizi centrali. Il protocollo e le garanzie di isolamento rimangono identici — l’unica differenza è il percorso di rete (locale invece di internet).
Consulta Distribuzione on-premises per i dettagli.