Container, container e ancora container. Un vortice che ti cattura e non ti abbandona più.

Chi si occupa di sviluppo e di informatica sa di cosa stiamo parlando. I container hanno permesso di fare un notevole passo avanti nella realizzazione di ambienti isolati, solidi e scalabili. Un nuovo punto di vista sui servizi in genere che emerge quando inizi a sviluppare due o più container interconessi tra di loro e si fa avanti il concetto di “Pets VS Cattle“, ovvero il passaggio da semplici “animali domestici” a “mandrie”. Secondo l’analogia Pets VS Cattle, i primi (animali domestici) indicano una vecchia metodologia di fare software, con server e mainframe trattati come unici e indispensabili, mentre i secondi (mandrie) trasmettono la concezione moderna secondo cui tutto può essere sostituito e in caso di errore (ad esempio il down di un server di posta) subentra subito un altro componente. E senza alcun intervento umano: al presentarsi dell’eventuale problematica si avvia un automatico “routing intorno agli errori” e i dati vengono replicati altrove.

Tutto ciò ha a che fare con il mondo IoT – Internet of Things – e con i vari devices presenti sul mercato. Vediamo l’esempio concreto di un software da noi sviluppato.

Containerizzazione dei software: il caso Morplex

Recentemente abbiamo fatto evolvere il nostro software Morplex per poterlo distribuire in modo più efficiente e veloce.

Abbiamo innanzitutto esplorato la soluzione di balena.IO, un’infrastruttura che permette di sviluppare e gestire dispositivi interconnessi su larga scala, e da subito abbiamo avuto la sensazione di lavorare con una piattaforma ben pensata e realizzata. Utilizzando le normali pratiche di DevOps con Balena.IO è possibile continuare a sviluppare software come abbiamo sempre fatto per poi distribuirlo facendo un push al repository della nostra App creata dentro balenaCloud: al resto pensa tutto questo fantastico servizio.

Balena: un esempio operativo

Per chi non conosce Balena, sintetizziamo velocemente la sua utilità con un caso operativo.

Poniamo che io abbia bisogno di configurare 10 Raspberry PI2 per una determinata App. Dalla dashboard di Balena all’interno dell’App faccio click su “Add device”, scarico lo zip < 140MB, lo masterizzo su 10 MicroSD attraverso balenaEtcher, lo inserisco nei 10 Raspberry e semplicemente li accendo assicurandomi che siano connessi ad Internet. Nello zip utilizzato per masterizzare le SD card non è presente il nostro software: una volta accessi i i Raspberry sono già configurati per collegarsi a balenaCloud (piattaforma basata sui container), alla nostra App, scaricare l’ultima versione del nostro software ed avviarla. Se dopo una settimana rilasciamo un aggiornamento del software, i 10 Raspberry riceveranno in automatico l’update. Comodo no?

L’app viene distribuita a tutti i device collegati alla nostra App in maniera semplice e sicura. Possiamo scegliere quali device mantenere ad una determinata versione e quali invece lasciar liberi per i vari aggiornamenti. Possiamo inoltre definire dei settaggi globali per tutti i nostri dispositivi, per famiglia o singolo device. Tornando all’esempio, nel nostro progetto Morplex abbiamo valorizzato la variabile “DT overlays” per gestire la scheda Can che andrà a controllare il modulo seriale su protocollo CanOpen.

Altro importante vantaggio è che quando connessi ad Internet i dispositivi  possono essere controllati dalla dashboard web di Balena, senza la necessità di dover mettere mano al firewall.

Immagini che schematizzano il funzionamento di balenaOS:

 

 

Hai bisogno di configurare dispositivi interconnessi sfruttando al meglio le funzionalità dei container e le potenzialità di Balena? Contattaci senza impegno.