È stato presentato il rilascio di EdgeX 2.0, una piattaforma modulare open-source per garantire l'interoperabilità tra dispositivi IoT, applicazioni e servizi. La piattaforma non è legata all'hardware di fornitori specifici né ai sistemi operativi, ed è sviluppata da un gruppo di lavoro indipendente sotto l'egida della Linux Foundation. I componenti della piattaforma sono scritti in linguaggio Go e distribuiti sotto licenza Apache 2.0.
EdgeX consente di creare gateway che collegano i dispositivi IoT esistenti e raccolgono dati da vari sensori. Il gateway gestisce sia l'interazione con i dispositivi, sia l'elaborazione primaria, l'aggregazione e l'analisi delle informazioni, fungendo da intermediario tra la rete di dispositivi IoT e un centro di controllo locale o un'infrastruttura di gestione cloud. Su di essi possono anche essere eseguiti gestori, presentati come microservizi. L'interazione con i dispositivi IoT può essere organizzata tramite rete cablata o wireless utilizzando reti TCP/IP e protocolli specifici (non-IP).

Gateway di diversi tipi possono essere concatenati, ad esempio, un gateway di primo livello può occuparsi della gestione dei dispositivi (system management) e della sicurezza, mentre un gateway di secondo livello (fog server) può memorizzare i dati ricevuti, eseguire analisi e fornire servizi. Il sistema è modulare, quindi la suddivisione delle funzionalità in nodi separati avviene in base al carico: nei casi semplici è sufficiente un solo gateway, mentre per grandi reti IoT può essere implementato un intero cluster.

Come base di EdgeX viene utilizzato lo stack IoT open-source Fuse, impiegato nei gateway per dispositivi IoT Dell Edge Gateway. La piattaforma può essere installata su qualsiasi hardware, inclusi servers sistemi basati su CPU x86 e ARM, operanti sotto Linux, Windows o macOS. Il progetto comprende una raccolta di microservizi pronti per l'analisi dei dati, la sicurezza, la gestione e la risoluzione di vari compiti. Per lo sviluppo di microservizi personalizzati possono essere utilizzati i linguaggi Java, Javascript, Python, Go e C/C++. Per lo sviluppo di driver per dispositivi IoT e sensori è disponibile un SDK.
Variazioni principali:
- È stato realizzato un nuovo web-interfaccia, creata utilizzando il framework Angular JS. Tra i vantaggi del nuovo GUI si annoverano la semplicità di manutenzione e l'espansione delle funzionalità, la presenza di un wizard per il collegamento di nuovi dispositivi, strumenti per la visualizzazione dei dati, un'interfaccia notevolmente migliorata per la gestione dei metadati, e possibilità di monitoraggio dello stato dei servizi (consumo di memoria, carico della CPU, ecc.).

- È stato completamente riscritto l'API per l'interazione con i microservizi, che ora non dipende dal protocollo di comunicazione, è più sicuro, ben strutturato (utilizza JSON) e traccia meglio i dati elaborati dal servizio.
- È stata migliorata l'efficienza e fornita la possibilità di creare configurazioni leggere. Il componente Core Data, responsabile della memorizzazione dei dati, ora non è obbligatorio (ad esempio, può essere escluso quando è necessario elaborare dati dai sensori senza la necessità di salvarli).
- Affidabilità migliorata e strumenti potenziati per garantire la qualità del servizio (QoS). Durante la trasmissione dei dati dai servizi dei dispositivi (Device Services, responsabili della raccolta dei dati dai sensori e dai dispositivi) ai servizi di elaborazione e archiviazione dei dati (Application Services), ora è possibile utilizzare un bus di messaggi (Redis Pub/Sub, 0MQ o MQTT), senza legarsi al protocollo HTTP REST e regolando le priorità QoS a livello di message broker. È anche consentita la trasmissione diretta dei dati dal Device Service all'Application Service con duplicazione opzionale nel servizio Core Data. Il supporto per la trasmissione dei dati tramite il protocollo REST è mantenuto, ma non viene utilizzato per impostazione predefinita.

- Realizzato un modulo universale (secret provider) per l'estrazione di dati riservati (password, chiavi, ecc.) da archivi protetti, come Vault.
- Per la gestione del registro dei servizi e delle impostazioni, nonché per la gestione degli accessi e dell'autenticazione, è stato utilizzato lo strumento Consul. Nell'API Gateway è fornito il supporto per l'accesso all'API Consul.
- Minimizzato il numero di processi e servizi che richiedono privilegi di root nei container Docker. Aggiunta protezione contro l'uso di Redis in modalità non sicura.
- Semplificata la configurazione dell'API Gateway (Kong).
- Semplificati i profili dei dispositivi, che definiscono i parametri dei sensori e dei dispositivi, nonché le informazioni sui dati raccolti. I profili possono essere definiti nei formati YAML e JSON.

- Aggiunti nuovi servizi per i dispositivi:
- CoAP (scritto in C) con implementazione del protocollo Constrained Application Protocol.
- GPIO (scritto in Go) per il collegamento a microcontrollori e ad altri dispositivi, incluse le schede Raspberry Pi, tramite le porte GPIO (General Pin Input/Output).
- LLRP (scritto in Go) con implementazione del protocollo LLRP (Low Level Reader Protocol) per il collegamento a lettori RFID.
- UART (scritto in Go) con supporto per UART (Universal Asynchronous Receiver/Transmitter).
- Espanse le capacità dei servizi applicativi (Application Services), responsabili della preparazione e dell'esportazione dei dati per la successiva elaborazione nei sistemi e applicazioni cloud. Aggiunto supporto per la filtrazione dei dati dai sensori in base al nome del profilo del dispositivo e al tipo di risorsa. Implementata la possibilità di inviare da un servizio dati a più destinatari e di iscriversi a più bus di messaggi. Proposto un template per la creazione rapida di propri servizi applicativi.
- I numeri di porta selezionati per i microservizi sono conformi ai intervalli raccomandati dall'IANA (Internet Assigned Numbers Authority) per l'uso privato, il che contribuirà a evitare conflitti con i sistemi esistenti.
Fonte: opennet.ru



