Semplicità e adattabilità del connettore Eclipse Mosquitto

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.

continua a leggere

L’anno della condivisione

Negli anni passati abbiamo tentato più volte di organizzare attività di condivisione il venerdì mattina, senza raggiungere mai una partecipazione consistente. Non ci siamo arresi però e, come d’abitudine, abbiamo dato spazio alle idee delle persone che lavorano con noi. Nella primavera del 2019 un collega, Franco Melandri, ha proposto un incontro tra le 13 e le 14.30: l’azienda doveva solo offrire una pizza da asporto. Con un preavviso brevissimo ha raccolto il triplo dei colleghi che mi aspettavo.  Ma cosa c’era di davvero diverso?  Un contesto atipico, informale e open mind. Ma anche il momento e le modalità: la pausa pranzo, libera dagli impegni, e la partecipazione libera e volontaria. Era nato, così, il nostro primo Lunch&Learn.

continua a leggere

La didattica che insegna

Immaginate il “classico” corso universitario, con lezioni spesso monotone tenute da un professore alla 27esima edizione del corso di Ingegneria del software. Immaginate un centinaio di studenti assopiti su racconti di modelli iterativi, agili, scrum, l’analisi dei requisiti, la user experience, la progettazione del software, l’UML, i pattern, il project management, i test, la qualità ecc… ecc… Pensate a una materia che dovrebbe avere un taglio molto pratico e invece purtroppo avrà il suo epilogo in un esame che di pratico non ha assolutamente nulla, al netto di qualche autoreferenziale esperienza di progetto in laboratorio.

Si può fare di meglio? Come? Cosa serve?

Serve un docente moderno, autorevole, con buone capacità organizzative. Serve il supporto di aziende aperte, a cui piaccia mettersi a disposizione della didattica, con spirito proattivo e collaborativo.

continua a leggere

CyberChallenge: la sfida tra gli studenti di Unibo per la cybersecurity di domani

Tag

,

I mesi di emergenza e di lockdown non ci hanno permesso di poter riproporre l’esaltante esperienza del summer camp con i ragazzi delle superiori, un felice esperimento della scorsa estate che sicuramente ripeteremo appena possibile.

Tuttavia l’attenzione al territorio e la volontà di supportare la formazione e le nuove generazioni ci hanno fornito un altro spunto interessante! Grazie ad una collaborazione già virtuosa e consolidata con l’università di Bologna e assieme agli amici di Cesena di Cyberloop, abbiamo avuto la bella opportunità di sostenere CyberChallenge.IT, ovvero il primo programma italiano di addestramento alla cybersecurity per giovani di talento delle scuole superiori e delle università.

La manifestazione, organizzata dal CINI (Comitato Interuniversitario Nazionale per l’Informatica), ha richiamato studenti da tutta Italia, dando loro l’opportunità di sfidarsi e approcciarsi a importanti realtà nazionali ed internazionali. Un’occasione preziosa per mettere in contatto mondo accademico e aziende, formazione e mondo del lavoro, nell’ottica di una cultura spendibile e al servizio di tutti. Permettere ai talenti di esprimersi e crescere è un prerequisito fondamentale per costruire un futuro nel quale voler essere sempre un passo avanti.

I nostri complimenti vanno ai finalisti e vincitori di questa edizione:
Paolo Bazzanella (I classificato)
Mattia Bonoli (II classificato)
Pierpaolo Agamennone (III classificato)

I ragazzi sono stati proclamati giovedì 11 giugno 2020 in una ormai consueta sessione streaming alla quale abbiamo orgogliosamente partecipato.

A loro, a tutti i partecipanti e a chi crede in questi progetti il nostro ringraziamento e l’augurio di poter continuare, assieme, a scrivere le pagine del nostro futuro.

Le potenzialità e i vantaggi di JUnit 5

Tag

,

Quante volte, nella vita di uno sviluppatore, ci si è trovati nella condizione di dover scrivere un test con una logica identica a quella di molti altri scritti in precedenza, in cui cambiavano solo alcuni dettagli come i parametri?
Una soluzione per evitare la ripetitività di queste situazioni è ora disponibile grazie a Junit 5.

Da Junit4 a Jupiter

JUnit è uno dei framework di test più utilizzati nel mondo Java.
Nel 2017, a undici anni dall’ultima major release, è stata rilasciata la versione 5, nota col nome di Jupiter. A differenza delle versioni precedenti, il framework è stato suddiviso in tre artefatti:
• Junit Jupiter, per contenere le API per definire i test
• Junit Vintage, per garantire la retrocompatibilità con la versione precedente di JUnit
• Junit Platform, per l’esecuzione dei test
Le novità riguardanti la parte di refactoring delle API di Jupiter sono spiegate nella documentazione ufficiale, mentre le più interessanti riguardano l’automatizzazione nella scrittura dei test, con l’introduzione di due macrocategorie: i test parametrizzati e i test dinamici.

Continua a leggere

EKM 2019: Imola informatica alle conference di San Francisco e Parigi

Tag

, , , , ,

Il 2019 è stato un anno intenso e stimolante per me e per Imola Informatica nell’ambito delle attività di Enterprise Knowledge Management (EKM). In particolare, oltre alle iniziative di EKM presso i clienti, abbiamo partecipato a due eventi internazionali: EMWCon Spring 2019 e SMWCon Fall 2019.

Entrambe le conferenze sono organizzate da Wikimedia Foundation e rappresentano i due appuntamenti chiave in cui si fa il punto sullo stato dell’arte della piattaforma opensorce Mediawiki con particolare attenzione agli aspetti relativi all’Enterprise Knowledge Mangement e alle estensioni semantiche che gravitano intorno a Semantic Mediawiki.

Imola Informatica da quasi un decennio usa Semantic Mediawiki come strumento di frontend e in generale di delivery dei dati presso i propri clienti Enterprise e nell’ambito di progetti innovativi di Linked OpenData. In particolare, in questi ultimi anni Imola Informatica ha investito molto nello sviluppo di una vera e propria piattaforma di Semantic Knowledge Management da offrire ai propri clienti (e da usare anche internamente per gestire la propria conoscenza) come soluzione aperta e customizzabile di Knowlege Management su domini diversi come Enteprise Architecture, Sicurezza, Service Management, IT Governance e IT Architectures.

Continua a leggere

Microservizi per tutti?

Tag

,

Introduzione

Spesso quando si vuole realizzare una nuova applicazione o si vuole reingegnerizzarne una esistente si pensa a una architettura a microservizi. Questo tipo di soluzione è emersa negli ultimi anni come risposta a una serie di problemi come la scalabilità o la possibilità di consentire un processo di sviluppo più agile. La sua adozione porta con sé una serie di requisiti sia di processo che organizzativi che devono essere valutati in maniera approfondita. Lo scopo di questo articolo è fornire una panoramica dell’architettura a microservizi e dei requisiti per poterla utilizzare in maniera proficua.

Cos’è una architettura a microservizi?

Prima di approfondire le implicazioni legate alla realizzazione di una architettura a microservizi è opportuno darne una definizione per stabilire un “terreno comune”. Come già visto in un precedente articolo del blog, con il termine microservizi “si identifica un nuova tipologia architetturale con la quale progettare applicativi software”. Se si cerca una definizione più dettagliata, si vedrà che non ne esiste una univoca (cfr. Wikipedia) ma piuttosto si nota una visione condivisa.

A livello pratico, le principali caratteristiche che definiscono i microservizi sono:
• Comunicazione tramite protocolli di rete standard come per esempio http
• Rilascio e aggiornamento in maniera autonoma
• Realizzazione e raggruppamento per funzionalità applicative
• Realizzazione con tecnologie a seconda delle conoscenze/esigenze dei gruppi di lavoro
• Piccole dimensioni, gestione da parte di un solo gruppo di lavoro e rilascio in modo automatico (ovvero tramite software di continuos delivery)

Continua a leggere

DevOps in pratica: come integrare filosofia e realtà enterprise

Tag

Negli ultimi anni il termine DevOps è diventata una buzzword per molti professionisti del mondo IT. Sono proliferati articoli specialistici e contributi che approfondiscono l’argomento, ne spiegano la filosofia, gli aspetti tecnici e le implementazioni pratiche. Questo testo non ha quindi l’obiettivo di spiegare cosa sia DevOps, né il suo impatto sul modo di lavorare delle aziende: per chi volesse approfondire tutto ciò è già presente una articolata bibliografia. Qui mi interessa prendere in considerazione alcune pratiche ampiamente diffuse per implementare DevOps e come queste vengono adottate nella pratica quotidiana, soffermandomi in particolare sull’approccio al cambiamento, sui processi gestionali e sui processi tecnici. In tutto questo il ruolo del consulente è fondamentale.

Continua a leggere

Ici, c’est Paris: SMWCon Fall 2019

Tag

,

foto di gruppo davanti alla Tour Eiffel

Parigi, settembre 2019: un gruppo di persone aspettava l’inizio del nostro intervento… Matteo Busanelli ed io eravamo al SMWCon nella sua veste autunnale, un evento che ogni anno riunisce sviluppatori, utenti, organizzazioni o semplicemente curiosi attorno all’ecosistema di Mediawiki e SemanticMediawiki sulle tematiche di knowledge management.

Continua a leggere

OiLab summer Camp, l’informatica da toccare con mano

Tag

Si è concluso l’Open innovation lab Summer Camp: la prima edizione ha coinvolto, per una settimana, una ventina di ragazzi e ragazze tra i 12 e i 18 anni in attività di gioco e programmazione insieme a tutor e consulenti di Imola Informatica.

I ragazzi hanno potuto scegliere tra diverse attività:

  • sviluppare un gioco online per imparare i principi architetturali di una applicazione a tre livelli;
  • realizzare un cluster di Rancher su Raspberry per lavorare a container e giocare con i principi di alta affidabilità tipica alle infrastrutture di rete moderne;
  • programmare delle macchine Arduino, dotate di sensori per seguire un percorso prestabilito alla massima velocità possibile.

Continua a leggere