Negli ultimi anni lo sviluppo tecnologico ha aperto nuove strade e nuovi orizzonti da esplorare.
Tra i tanti aspetti interessanti che si stanno consolidando, sicuramente l’IoT (Internet of Things) e i microservizi sono pronti a giocare un ruolo importante nei prossimi anni.
Anche se ancora oggi sono considerati come aree diverse nell’IT, prima o poi, questi due mondi saranno considerati due facce della stessa medaglia.
Entrambi, infatti, si occupano di sistemi distribuiti dove le principali differenze sono rappresentate dai protocolli di comunicazione utilizzati: i microservizi di solito si occupano del protocollo HTTP, mentre l’IoT è basato su altri protocolli come MQTT e CoAP.

In particolare, il protocollo MQTT è stato pensato e progettato appositamente per la comunicazione “machine to machine”. Le sue caratteristiche principali sono la semplicità e la leggerezza, caratteristiche ideali in contesti in cui è presente una piccola impronta di codice e una disponibilità di banda limitata.
Proprio grazie alle sue caratteristiche, MQTT sembra essere diventato uno standard de facto per la comunicazione tra dispositivi e quindi più in generale per tutto l’ecosistema IoT.
Il protocollo MQTT si basa su un classico meccanismo di pubblicazione e sottoscrizione (publish and subscribe). In questo pattern ci sono tre diversi soggetti che entrano in gioco nella comunicazione:
– Il publisher è un dispositivo (ad esempio un sensore) che desidera pubblicare dei messaggi;
– Il subscriber è un dispositivo (ad esempio un PC, uno smartphone) che desidera ricevere dei messaggi;
– Il broker è un software che si inserisce nel mezzo della comunicazione e che si occupa di gestire correttamente tutto lo scambio dei messaggi tra publisher e subscriber.

A questo punto potrebbe sorgere una domanda: è possibile sfruttare contemporaneamente le potenzialità del protocollo MQTT e la leggerezza e adattabilità delle architetture a microservizi?
Il lavoro realizzato e oggetto di questo articolo nasce proprio dall’idea di avvicinare questi due aspetti, e si è concretizzato nella realizzazione di un connettore con il broker Mosquitto per il linguaggio Jolie.
Il lavoro è stato svolto nell’ambito di un tirocinio curricolare per l’Università di Bologna svolto presso Imola Informatica, che mi ha messo a disposizione gli strumenti, il tempo e le preziosissime competenze di persone come Andrea Briganti e Claudio Guidi.
Siamo quindi ora in grado di utilizzare Jolie per costruire servizi e microservizi che comunicano tra di loro utilizzando il protocollo MQTT.
Il connettore è stato implementato in modo tale da offrire quattro API agli sviluppatori. Tramite queste quattro chiamate è possibile realizzare sia client di tipo publisher che client di tipo subscriber. E’ inoltre possibile settare tutte le opzioni di connessione possibili con il broker Mosquitto e procedere allo scambio di messaggi.
Ovviamente non poteva mancare l’attenzione sulla sicurezza della comunicazione. A questo proposito è stata implementata anche la possibilità di scambiare messaggi criptati con il protocollo SSL.

L’obiettivo prefissato di connettere il mondo IoT e i microservizi è stato quindi raggiunto. Trovate un approfondimento come maggiori dettagli in “Eclipse Mosquitto Connector for Jolie Programming Language” su Dzone.

I più interessati possono inoltre accedere al repository di GitHub in cui è presente il connettore (pronto all’uso), tutta la relativa documentazione e anche alcuni interessanti esempi applicativi dell’utilizzo del connettore (tra cui una piccola Web Application che permette a più utenti di chattare sfruttando il protocollo MQTT).
https://github.com/jolie/jolie-mosquitto