Breve corso di Vagrant – Puntata 1

Vagrant Stack-LAMP

Vagrant Stack-LAMP

Dopo aver gia scritto in precedenti articoli di Vagrant ho sentito l’esigenza di metter, come si suol dire, nero su bianco un piccolo corso/progetto da portare avanti su queste pagine in cui verra’ spiegato non solo l’uso piu’ avanzato di Vagrant ma anche alcuni concetti fondamentali inerenti la creazione di un servizio WEB moderno, introducendo i concetti di “scalabilita’” e di “high availability“.

Iniziamo con un breve elenco dei comandi di vagrant usati più comunemente :
vagrant init [nome-box] [url-box] = inizializza la directory corrente come ambiente per Vagrant e crea il file di configurazione Vagrantfile
vagrant up = crea, configura e avvia la macchina virtuale definita in Vagrantfile . Se la macchina virtuale già esiste, la fa solo partire
vagrant halt <nome macchina> = ferma una macchina virtuale
vagrant destroy = elimina la macchina virtuale
vagrant ssh <nome macchina> = si collega alla macchina virtuale via ssh

Nel seguente esempio verra’ creata una directory che conterra’ il progetto di Vagrant, poi, inizializzemo il progetto, configureremo una macchina virtuale, la lanceremo e infine ci collegheròemo. I seguenti comandi creeranno una macchina virtuale con Ubuntu 14.04 (64bit). Notate che la prima volta che eseguirete questa serie di comandi, verrà scaricata dalla rete un’immagine del sistema operativo Ubuntu. Per farlo ci potranno volere svariati minuti, a seconda anche del tipo di connessione ADSL di cui disponete. Le volte successive, il processo sara’ molto più rapido, perché l’immagine usata per creare la macchina virtuale sarà già stata memorizzata nel vostro sistema.

PARTIAMO
Questi sono i primi comandi che useremo: vagrant init ubuntu/trusty64  &  vagrant up

<> vagrant init ubuntu/trusty64
A `Vagrantfile` has been placed in this directory. You are now
ready to `vagrant up` your first virtual environment! Please read
the comments in the Vagrantfile as well as documentation on
`vagrantup.com` for more information on using Vagrant.

<> vagrant up
Bringing machine ‘default’ up with ‘virtualbox’ provider…
==> default: Box ‘ubuntu/trusty64’ could not be found. Attempting to find and install…
default: Box Provider: virtualbox
default: Box Version: >= 0
==> default: Loading metadata for box ‘ubuntu/trusty64’
default: URL: https://atlas.hashicorp.com/ubuntu/trusty64
==> default: Adding box ‘ubuntu/trusty64’ (v20151214.0.0) for provider: virtualbox
default: Downloading: https://atlas.hashicorp.com/ubuntu/boxes/trusty64/versions/20151214.0.0/providers/virtualbox.box
default: Progress: 6% (Rate: 115k/s, Estimated time remaining: 0:43:23)))
==> default: Preparing network interfaces based on configuration…
default: Adapter 1: nat
==> default: Forwarding ports…
default: 22 => 2222 (adapter 1)
==> default: Booting VM…
==> default: Waiting for machine to boot. This may take a few minutes…
default: SSH address: 127.0.0.1:2222
default: SSH username: vagrant
default: SSH auth method: private key
…………..etc etc !!

> vagrant ssh
Welcome to Ubuntu 14.04.3 LTS (GNU/Linux 3.13.0-73-generic x86_64)

* Documentation: https://help.ubuntu.com/

System information disabled due to load higher than 1.0

Get cloud support with Ubuntu Advantage Cloud Guest:
http://www.ubuntu.com/business/services/cloud

vagrant@vagrant-ubuntu-trusty-64:~$ ifconfig
eth0 Link encap:Ethernet HWaddr 08:00:27:6b:55:0f
inet addr:10.0.2.15 Bcast:10.0.2.255 Mask:255.255.255.0
inet6 addr: fe80::a00:27ff:fe6b:550f/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:544 errors:0 dropped:0 overruns:0 frame:0
TX packets:392 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:69053 (69.0 KB) TX bytes:53324 (53.3 KB)

lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)

vagrant@vagrant-ubuntu-trusty-64:~$ exit

Dato che il nostro obiettivo è arrivare ad avere uno Stack LAMP, sappiamo che dovremo tenere conto di dover ancora installare e configurare gli altri software necessari ossia,  Apache, MySQL e PHP. Ci sono però anche altri componenti meno ovvi di cui va tenuto conto. Iniziamo studiando lo stack LAMP su di un modello di web application 2.0. Vediamo quindi di spiegare alcuni concetti fondamentali per questo tipo di architetture che vanno decisi prima d’iniziare a creare fisicamente le macchine/server che ci servono.

Scalabilità VS Disponibilità

Scalabilità verticale
Si può scalare un sistema senza aumentarne la disponibilità o il tempo di uptime. Esemplifichiamo, diciamo che vogliate gestire più utenti, più traffico e più carico per l’applicazione web, se si tratta di un server fisico, potreste spegnerlo, installare più memoria e potenziare la CPU, ad esempio. Potreste anche copiare tutti i dati da un solo piccolo server ad un server più grande che abbia più memoria, una CPU più potente e dischi più veloci. Se invece state usando un server virtuale, potreste fermarlo, allocare maggiori risorse e riavviarlo. Se il server è posizionato nel cloud, potrete cambiare il tipo di istanza ad uno che abbia più risorse. Questo si chiama scalare verticalmente. Non c’è niente di male in questo tipo di scalabilità, soprattutto se avete applicazioni in cui il tempo di fermo e’ accettabile.

Scalabilità orizzontale
Un’ altro modo per scalare è di aggiungere altri server, che a volte vengono indicati con il termine di nodi. Questo si chiama scalabilità orizzontale. Per scalare orizzontalmente, si deve fare prima un po’ di lavoro in anticipo, e progettare bene la transizione. Per andare ad esempio da un server web a due, dovrete trovare un modo per instradare il traffico al nodo aggiuntivo, e preferibilmente suddividere il carico tra i due server. Se vi servono più risorse, aggiungete un terzo server,  un quarto, un quinto e cosi’ via. Quando invece avete un solo server, e questo va giù, il servizio si interrompe, ma se avete più di un server che fanno gestiscono la stessa funzione, e uno di loro ha un malfunzionamento, lo scenario peggiore è che il servizio è degradato e non altrettanto prestante come di solito. Lo scenario migliore avviene quando un singolo malfunzionamento non viene nemmeno notato.

Il meglio di entrambi i mondi
In molti casi ha senso scalare il server web in modo orizzontale, e il server di database in modo verticale. Vedremo piu’ avanti, nei prossimi articoli, come prendere il meglio di entrambi i mondi, eliminando, o almeno riducendo moltissimo, il tempo di fermo per il servizio.

Nel secondo capitolo inizieremo la configurazione del file Vagrant per la preparazione delle 5 macchine necessarie al nostro progetto.

Stay Tuned !

MaxScale – un proxy per i Database MariaDB e MySQL

Maxscale - Proxy per MariaDB & Mysql

Maxscale – Proxy per MariaDB & Mysql

MaxScale è il nuovo database proxy server open source sviluppato da MariaDB Corporation Ab.

MaxScale nasce con un concetto di proxy alla base, ma con una filosofia ed un approccio “database centrico” ed una architettura a plugin estremamente configurabile.

Per chi si fosse perso i precedenti articoli riguardanti i Proxy Server, ricordiamo che, un proxy, è un server che fa da intermediario in una connessione, ossia esso riceve le richieste da un client e le reindirizza verso altri server che sono i destinatari delle richieste. In altre parole un proxy funziona come un centralinista: riceve la chiamata del cliente  e la gira al primo operatore libero.
Per capire meglio cosa e’ in grado fare elenchiamo alcune delle sue funzionalità principali quali:

  • controllo della disponibilità del Database (monitoring)
  • load balancing
  • analisi della query in ingresso per capire se indirizzarla su una specifica tipologia di server

tutto questo, e molto altro ancora.

MaxScale si può inserire in modo trasparente tra l’applicativo e il server MySQL, esattamente come fa un proxy web tra il nostro browser e il sito che stiamo cercando di visitare.
Grazie ad un proxy è possibile avere:

  • Ridondanza: usando più di un database dietro al proxy, poiche’ un solo server non fornisce l’affidabilità e l’alta disponibilità in caso di down di una macchina.
  • Diminuizione dei costi di infrastruttura: perché generalmente due server piccoli sono meno costosi che un unico server molto performante.

Per migliorare la spiegazione ora vedremo due tipi di database proxy server:

I proxy di livello trasporto come HAProxy (di cui abbiamo piu’ volte parlato in altri articoli).
I proxy di livello applicativo come MaxScale
HAProxy: un proxy efficiente, rapido e funzionale

Fino ad oggi tra i proxy più usati in ambito MySQL Cluster è l’HAProxy che lavora ad un livello più basso (livello 4: trasporto). HAproxy pero’ non conosce nulla di MySQL e si occupa quindi soltanto di bilanciare le connessioni tra i server. Haproxy e’ molto veloce, leggero ed efficente, tuttavia questo tipo di bilanciamento è fatto senza che il proxy sia a conoscenza di cosa sta smistando. Questo rende il sistema meno efficente poiché un server può ricevere molte richieste pesanti, mentre altri server possono essere scarichi. Quindi l’HAProxy non è la scelta vincente in tutti i casi.

MaxScale: e’ un proxy che in configurazioni di questo tipo può fare cose incredibili

MaxScale lavora a livello più alto (livello 7: applicativo) e, monitorando i server riesce a capire cosa sta succedendo all’interno dell’infrastruttura. Conoscendo il protocollo MySQL può intervenire manipolando il traffico tra client e server. Ecco alcune delle sue principali funzionalità:

  • Filtro delle query al database
  • Gestione del routing: instradamento delle richieste a uno o più database server
  • Modifica delle query al volo prima che raggiungano il database
  • Possibilità di nascondere la struttura interna dell’infrastruttura lasciando un singolo punto d’accesso.
  • Alta affidabilità e scalabilità del sistema
  • Possibilità di spostare un database dal server locale ad un server esterno senza modificare la configurazione delle applicazioni
  • Divide automaticamente le scritture sul server MASTER e le letture su uno o più database SLAVE.
  • MaxScale può fornire un Load Balacing delle connessioni senza bisogno di utilizzare applicazioni o CMS che prevedano questa funzionalità. Questo significa che CMS come Joomla! o WordPress possono trarre i benefici usando una replicazione Master/Slave per rendere scalabile il proprio sito.

Caratteristiche di MaxScale

Il punto di forza di MaxScale è sicuramente la sua modularità che permette una notevole libertà adattandosi a molti casi d’uso. MaxScale è :

  • Modulare: un sistema di moduli ne definisce le funzionalità
  • Estendibile: è possibile applicare più filtri anche in cascata
  • Flessibile: i moduli e i filtri possono essere aggiunti dinamicamente

I moduli base di MaxScale

Ecco i 5 moduli che costituiscono il cuore di MaxScale:

  • Protocol: da la possibilità di utilizzare più protocolli es. MySQL client, http, telnet;
    I client si connettono a MaxScale anziché al database MySQL senza accorgersi della differenza. Possono usare le stesse librerie di connessione utilizzate fino ad ora: es. MySQL client o MariaDB client
  • Authentication: il sistema di autenticazione permette ai client di accedere a MaxScale usando le credenziali presenti sui server di Backend;
    MaxScale non ha un sistema di autenticazione o un database di utenti. Vengono utilizzati gli stessi utenti presenti sui database di backend, caricati all’avvio dell’applicazione
  • Monitor: legge la configurazione dello stato del sistema direttamente dai server di backend;
    Viene utilizzato per capire in ogni momento lo stato di tutti i database di backend collegati a MaxScale. In questo modo è possibile sapere qual’è il server Master e quanti Slave stanno replicando correttamentei dati. Il monitor può essere utilizzato per controllare un Galera Cluster.
  • Router: smista le connessioni a uno o più database di backend;
    Dirige il traffico dal client ai server utilizzando una regola specifica denominata connection routing
  • Filter e logging: i filtri permettono di modificare le query oppure di scrivere un file di log con tutte le richieste e le risposte ricevute;
    Tra i più potenti strumenti messi a disposizione di MaxScale ci sono sicuramente i filtri che permettono di effettuare operazioni avanzate sulle query senza modificare il comportamento dell’applicazione, 1) processando query SQL e risultati, 2) utilizzando una semplice regex, 3)  analizzando, modificando o rifiutando le query, 4) mettendo più filtri in cascata

Non resta che testare di persona, magari con un ambiente ad hoc con Docker e Vagrant.

 

Load Balancing Systems

Load Balancing Systems

Load Balancing Systems

Ormai Internet e’ parte della vita di milioni di persone e’ lo sara’ sempre di piu’. Sono lontanissimi i tempi dei siti statici con qualche migliaio di accessi al mese o poco piu’, oggi quasi ogni tipologia di servizio offerto dalle aziende o dalla pubblica amministrazione, ha la gestione su di un portale Internet, dunque la gestione degli accessi, al secondo, e’ diventata la discriminante per valutare un ottimo servizio da uno scadente; si pensi alla fantastica operabilita’ di portali come Facebook, Twitter o Gmail, solo per citarne alcuni, che permettono e gesticono l’accesso di milioni di utenti 24h senza praticamente disservizi o rallentamenti .

Ora dietro c’e’ una mole di lavoro ingegneristico del software, dell’hardware, dell’architettura migliore, del DB piu’ performante etc ma, prima che tutto cio’ inizi ad operare l’utente dev’essere, per prima cosa, agganciato ed instradato verso il server (fisico o virtuale che sia) che accogliera’ le sue operazioni (acquisti , home banking, pagamento bollette…), tutto cio verra’ fatto dall’infrastruttura di Load Balancing, che puo’ essere un fiore all’occhiello dell’azienda oppure trasformarsi in un Mega Point of Failure, quindi vediamo di spiegare meglio che cosa sono i Load Balancer e come operano.

Letteralmente “Load Balancing” significa bilanciare il carico di lavoro su più nodi dell’architettura.Viene spesso confuso come tecnica per ottenere l’ High Availability (HA), ma pur condividendone alcuni mezzi, ha dei fini totalmente diversi.

In pratica il “bilanciatore di carico”, per chi non lo sapesse, è quel componente (di frontend) che prende in carico le connessioni in ingresso (quelle degli utenti per gli accessi POP/IMAP ad esempio) e le smista verso i server (backend) veri e propri che erogano i servizi (webserver, application server..). E’ sempre il bilanciatore che interviene quando un server di backend viene rimosso dal cluster, per manutenzione o interruzione, a dirottare il traffico verso i server rimasti attivi.

Uno degli errori più comuni per effettuare il Load Balancing è quello di prendere come riferimento il Load dei server, scrivendo sulle console delle nostre macchine il comando “uptime”, riceveremo come risposta un dato come questo

16:49 up 453 days, 12:17, 56 users, load averages: 0,59 0,46 0,47

dove gli ultimi tre numeri identificano il carico del server negli ultimi 1, 5 e 15 minuti rispettivamente.

Immaginiamo ora di aggiungere ulteriori nodi quando il carico di un server negli ultimi 5 minuti superera’ il valore di 1,5. La nuova macchina aggiunta partirà con un carico pressoché a 0 e verrà invasa da centinaia di richieste fino a rischiarne la saturazione, e dovremo inoltre attendere altri 5 minuti prima che un nuovo bilanciamento possa intervenire.

Peccato che prima di quei 5 minuti il nostro nuovo server farà parecchia fatica a rispondere a tutte queste richieste, perdendo cosi di fatto parecchi utenti a causa di errori di pagina non trovata oppure di time out per la troppa attesa etc….facendo perdere parecchi soldi all’azienda. Questo tipo di problema è chiamato “staleness”, e può essere aggirato con altre tecniche che non si basano su una metrica numerica.

Come implementare il load balancing:

Come scegliere quindi su quale server dirigere una richiesta?

La tecnica di Load Balaincing più semplice è detta Round Robin, il suo principio e’ che ogni richiesta che viene effettuata viene smistata su un server differente, a rotazione.

In un cluster di 100 macchine, 100 richieste verranno distribuite su tutti 100 i servers a rotazione dal primo all’ultimo. Questa è una tecnica molto semplice da usare, e inclusa ad esempio già in Apache, ma si porta il limite che se un server è sovraccarico non avrà mail il tempo rientrare in una situazione di normalità che subito dopo dovra’ gestire un’ennesima richiesta e cosi via.

La tecnica “Random” ci offre un modo elegante per distribuire le richieste; in pratica non si basa su nessuna metrica, ma per i puristi resta comunque fuori controllo poiche’ offre comunque la possibilià (anche se randomica) di continuare a girare richieste verso server già sovraccarichi.

Una variante della tecnica “Random” è la “Weighted Random“, dove viene introdotta la variabile “potenza del server”, ossia i server più potenti avranno una possibilià più alta di ricevere richieste, rispetto ad hardware meno performante.

La tecnica “Predictive” invece è una variante del “Round Robin”, in questa metodologia vengono introdotte alcune variabili al normale ciclo per permettere di avere una ripartizione più accurata saltando ad esempio i server già troppo carichi. E’ una tecnica implementata a livello di Load Balancers hardware, e i produttori sono di solito restii a documentare gli algoritmi “Predictive”.

Resta scontato che, una volta scelta la tecnica preferita, dovremo prendere in considerazione anche altri problemi. Ora, ad esempio, proviamo ad uscire dal ragionamento di un singolo Load Balancer, e proviamo ad aumentare la posta ed a pensare in modalita’ High Availability con almeno due bilanciatori dove il lavoro del primo verrà supportato o, in caso di problemi, preso in carico dal secondo, che redistribuirà il traffico secondo una sua logica.

Per l’utente finale (colui che naviga dal suo browser) non cambierà nulla, infatti il browser si connetterà ad un IP dove non ci sarà un webserver ad attenderlo, ma il Load Balancer. Il Load Balancer girerà quindi, seguendo il nostro metodo di allocazione scelto, la richiesta ad un webserver scarico pronto a risponderci.

Cosa fondamentale e’ che i due, o più load balancer, devono essere in grado di parlarsi e condividere informazioni, così che entrambi sapranno che un dato server è da considerare sovraccarico o che un altro server sta per uscire dal pool.

Come scegliere il giusto load balancing

Scegliere il metodo di load balancing, e lo strumento col quale applicarlo, necessitano quindi di studi specifici sul tipo di traffico, e sull’architettura dell’applicazione che si vuole bilanciare, soprattutto quando entrano in gioco variabili come SSL.

L’SSL è basato sulla generazione di un certificato legato ad un IP, e in uno scenario dove abbiamo diversi IP virtuali che rigirano il traffico verso altri “nattati” diventa quantomeno improbabile poter gestire in modo corretto il certificato. Questo proprio perche’ il certificato è usato per validare la reale identità del server web, quindi mettendoci in mezzo un load balancer otterremmo un “man in the middle” che invalidera’ la connessione SSL.

L’unico modo diventa spostare la connessione SSL solo tra browser e Load balancer, inserendo il certificato sul VIP del sistema di Load Balancing e lasciando il traffico dopo il Load balancer in chiaro (anche se è sempre possibile attraverso una VPN ottenere maggiore sicurezza sui canali di comunicazione).

In sostanza, il Load balancing è un argomento semplice da capire, e probabilmente ancora più semplice da ottenere anche con hardware non dedicato, grazie alle diverse opportunità che il mondo Open Source ci regala.

Come sempre, il grosso del problema è strutturare l’applicazione nel suo complesso, incastrando i vari elementi affinché tutto il flusso dei dati sia ottimale.

La scelta del bilanciatore non e’ facile, ce ne sono di diversi tipi, sia hardware che software e, molte volte, la loro bonta’ non dipende dal prezzo che lo pagate ma dalla giusta scelta che farete a monte, di ottimizzazione del servizio che dovete erogare. Possiamo dire che molto spesso, in ambito Opensource la scelta ricade su LVS, HAProxy, Pound…, mentre in ambiti piu’ istituzionali (Banche, Assicurazioni etc) la scelta spesso ricade su F5, Citrix, Radware….

Personalmente sono un sostenitore di LVS, che ho usato spesso in grossi progetti, ma vediamo quali sono i suoi punti di forza confrontandolo con l’altro ottimo prodotto Open HAProxy.

LVS lavora in kernel-space (disponibile quindi solo per Linux) il che lo rende estremamente leggero e veloce, anche se limitato in termini di funzionalità. Haproxy è invece un software che gira in user-space, sicuramente più portabile (gira praticamente su qualsiasi Linux/Unix) ma anche più costoso in termini di risorse.

Per darvi un idea di quante poche risorse usa LVS, considerate che ogni connessione attiva occupa solo 128 bytes di memoria (nella tabella dove queste vengono memorizzate). Con circa 4GB di RAM sarete in grado di smistare qualcosa tipo 500.000 connessioni simultanee.

LVS lavora al layer 4 (vedi Open Systems Interconnection), mentre HAProxy lavora al layer 7 della pila OSI. Se questo da una parte è un vantaggio per haproxy, che può ispezionare anche il contenuto del pacchetto, di fatto si traduce in un maggiore carico a livello di CPU e quindi minore scalabilità.  In un bilanciatore di carico con LVS il carico del server sarà quasi sempre pari a 0.00, mentre con haproxy si manterrà intorno allo 0.50.

Sempre con LVS è possibile ottimizzare il consumo di banda dei singoli server che compongono il cluster. Se configurato in modalità “Direct Routing” (o LVS-TUN) il bilanciatore si farà carico solo del traffico in ingresso mentre saranno i singoli server di backend ad inviare il traffico di risposta ai client remoti. Con haproxy (o LVS configurato come NAT) tutto il traffico IN/OUT passa dal bilanciatore il che lo tiene maggiormente sotto stress e vi constringe a dimensionarlo in modo da poter sostenere un traffico di rete pari alla somma totale del traffico diretta verso l’intero cluster.

Non ultimo LVS puo’ vantare il tool ipvsadm, questo ottimo tool aggiorna la tabella d’instradamento IPVS nel kernel. Ipvsadm consente di modificare la configurazione di LVS aggiungendo e rimuovendo servizi, modificando la modalita’ di forwarding, paradigmi di bilanciamento, ecc. Il pacchetto ipvsadm non ha interfacce grafiche e segue il principio unix, fare una cosa sola e farla bene, quindi risponde al solo compito di avere uno strumento per il bilanciamento a livello 4.

Con ipvsadm è possibile selezionare un metodo per passare i pacchetti dal server LVS ai real server dove gira il servizio, i metodi principali sono:

LVS-DR (direct routing) dove il MAC addresses nel pacchetto è cambiato ed il pacchetto indirizzatto verso il real server
LVS-NAT basato sul network address translation (NAT)
LVS-TUN (tunneling) where the packet is IPIP encapsulated and forwarded to the realserver.

Praticamente un bilanciatore di carico con LVS lo potete accendere, configurare e dimenticarvelo per anni.

Internet of Things

Internet of Things (IoT)

Internet of Things (IoT)

Internet of Things, o in breve “IoT”, è quell’insieme di tecnologie che portano intelligenza agli oggetti, facendo sì che questi comunichino con noi o con altre macchine, offrendoci un nuovo livello di interazione o di informazione rispetto all’ambiente in cui questi oggetti si trovano. Esempio, un pneumatico ci avverte se si sta per rompere, piante che comunicano all’annaffiatoio quando è il momento di essere innaffiate, scarpe da ginnastica che trasmettono la velocità di corsa dell’atleta e il suo stato di affaticamento, flaconi delle medicine che ci segnalano quando ci si dimentica di prendere un farmaco.

Non si tratta di episodi sperimentali, ma di un’innovazione che negli ultimi anni ha accelerato il ritmo dello sviluppo, infatti si pensi allo smart metering che, in ambito domestico, sta portando le “utilities” a sostituire i tradizionali contatori con apparati sensorizzati e controllati da remoto che ci dicono quanto stiamo consumando in modo da permetterci di razionalizzare i consumi.

COME FUNZIONA L’INTERNET OF THINGS

Ma come avviene tutto questo? grazie a sensori, tag Rfid, attuatori, smart code che, applicati a un qualsiasi oggetto come un lampione, un cappello, una tazza o un ponte, trasmettono e ricevono informazioni, utilizzando come piattaforma di scambio il Web.

LE ORIGINI

Le origini dell’Internet of Things vengono attribuite a un ricercatore britannico del Mit (Massachussets Institute of Technology), Kevin Ashton, che nel 1999 coniò per primo il nome per descrivere un sistema dove Internet viene connessa al mondo fisico tramite una rete di sensori distribuiti. A quella che era solo un’ipotesi, fece poi seguito una via sperimentale. Tra i primi progetti pilota, ricordiamo la piattaforma Cense (Central Nervous System for the Earth), nata nel novembre del 2009 negli Hp Labs. L’obbiettivo? creare un network di sensori mondiale capace di connettere oggetti e persone. I sensori, infatti, sono gli organi intelligenti della Rete che, misurando ogni tipo di variazione ambientale come vibrazioni, rotazioni, suoni, correnti d’aria o del mare, luce, temperatura, pressione, umidità, permettono una nuova rappresentazione del mondo in tempo reale a supporto di una molteplicità di settori applicativi, dalla difesa al retail, dalla meteorologia al traffico.
La ricerca e sviluppo di Ibm si è invece focalizzata su un progetto chiamato Smart Planet. Nelle quattro città campione su cui Ibm ha investito in ricerca e sviluppo sono state rilasciate soluzioni per la decongestione del traffico che hanno permesso di ridurre le emissioni di Co2 del 14%, di abbattere i picchi di traffico del 18% e di favorire l’utilizzo del trasporto pubblico di un +7%.

L’INTERNET OF THINGS OGGI

Grazie anche ai progressi delle tecnologie wireless e satellitari, oggi l’Internet of Things è una nuova dimensione tecnologica attraverso la quale è possibile mettere a sistema il mondo analogico, attraverso tutta una serie di accessi, ognuno dei quali veicola tutta una serie di informazioni. Sensori, tag Rfid, cellulari, smartphone, chioschi multimediali, telecamere, videocamere: la IoT include più standard tecnologici, come ad esempio, Gps e near field communication.

Nel 2010 si sono viste diverse applicazioni dell’Internet of Things anche nella conservazione dell’energia. Le cosiddette Smart grid, infatti, applicano un utilizzo intelligente dell’alimentazione che sfruttano nuove economie di scala e software di supporto. Tra le società che hanno iniziato a investire su questo fronte General Electric e Google, che attraverso il consorzio Usnap (Utility Smart Network Access Port) stanno lavorando a un processo di standardizzazione per definire dispositivi di misurazione tali da permettere all’utenza domestica di accedere alle smart grid monitorando i propri consumi.

CHE COSA È POSSIBILE COLLEGARE ALLA RETE

Di tutto, almeno dal punto di vista teorico. Anche animali (per esempio attraverso segnalatori che ne consentono la localizzazione), piante (attraverso sensori che ne controllano l’illuminazione o il fabbisgono di acqua) e addiritura persone (utilizzando pacemaker o altri dispositivi per il controllo da remoto dei parametri biologici).

Con un po’ di fantasia è possibile collegare in rete praticamente ogni cosa. Per essere connesso un oggetto, una “thing”, deve rispettare due caratteristiche: avere un indirizzo IP che ne consente l’identificazione univoca sulla Rete e la capacità di scambiare dati attraverso la rete stessa senza bisogno dell’intervento umano.

A CHE COSA SERVE

Obiettivo degli oggetti connessi è, in generale, quello di semplificarci la nostra vita automatizzando processi o mettendoci a disposizione informazioni che prima non avevamo. Qualche esempio: La strada intelligente, o smart road, in grado di dialogare con le auto, con i semafori e con la segnaletica al fine di ottimizzare i flussi di traffico, ridurre l’inquinamento e i tempi di percorrenza; Sensori posti sulle strisce dei posti auto che individuano la presenza o meno di una vettura, possono inviare l’informazione a un centro dati, che lo fa apparire sulla app per smartphone, come nel progetto Streetline, già in prova a Los Angeles e Indianapolis. Se funzionerà, in futuro, posteggiare sarà più facile.
I termostati intelligenti sono in grado di imparare orari ed esigenze e di scegliere la temperatura adatta per ogni momento, e possono far risparmiare fino al 20% di energia e, tramite smartphone possono essere comandati a distanza anche l’aria condizionata o il riscaldamento, da far accendere quando serve, poco prima di tornare casa. O ancora, i termostati Nest, acquistati da Google, sono piccoli gioielli dell’Internet delle cose, infatti essi conoscono le previsioni del tempo del luogo in cui si trovano, sono dotati si sensori di movimento che contano le persone che passano davanti (quante e quando) e “impara” dalle nostre abitudini.

QUALE SARÀ L’IMPATTO SULL’AMBIENTE DELL’INTERNET OF THINGS

Gli oggetti connessi permetteranno di ottimizzare in tempo reale processi produttivi e attività economiche riducendo in maniera sensibile l’inquinamento e il consumo di risorse.

L’illuminazione pubblica per esempio, se gestita con le nuove tecnologie, potrebbe contenere del 40% i consumi di energia elettrica. Oppure le coltivazioni, che potrebbero essere irrigate in modo molto più efficiente rispetto a quello tradizionale se monitorate da una rete di sensori capaci di comunicare al sistema di erogazione dell’acqua il reale fabbisogno delle piante, determinato in base alla temperatura, alla stagione, all’umidità del suolo e alle previsioni del tempo.

QUALI SONO I RISCHI DERIVANTI DAL VIVERE IN UN MONDO DI OGGETTI CONNESSI

Il principale problema legato all’Internet of Things, per noi utenti comuni, riguarda la tutela della privacy e il corretto utilizzo dei dati. Vivere in un mondo di sensori, misuratori e oggetti di uso quotidiano in grado di raccogliere e scambiare informazioni su come vengono utilizzati, sulle nostre abitudini e sul nostro stato di salute ci espone al rischio di perdere il controllo di ciò che comunichiamo sulla Rete.

Un esempio? Il bracciale per il fitness rileva che ultimamente le nostre performance sportive sono peggiorate. Potremmo essere il bersaglio ideale per la pubblicità, indesiderata, di un integatore alimentare; oppure peggio, un’ente finanziario senza scrupoli potrebbe decidere di utilizzare dati sanitari raccolti in Rete in maniera più o meno lecita per verificare lo stato di salute di un potenziale cliente e decidere se condergli o meno un mutuo od una polizza assicurativa.

QUALI SETTORI TRARRANNO I MAGGIORI VANTAGGI DALLO SVILUPPO DELL’ IoT

Secondo gli analisti il comparto dell’energia e quello dei trasporti saranno quelli che godranno, fin da subito, dei maggiori benefici. Infatti, la possibilità di ottimizzare il consumo di risorse, per esempio segnalando sprechi e guasti, e i flussi di movimentazione di merci e persone, scegliendo i percorsi e i tempi più idonei in base alle condizioni di traffico e al tipo di spostamento, genereranno per gli operatori economici risparmi sensibili e immediatamente misurabili.

UN’EVOLUZIONE INARRESTABILE (E LA CINA È IN TESTA)

Oggi sono connessi a Internet qualcosa come 1,5 miliardi di personal computer mentre i cellulari connessi alla Rete sono 1 miliardo. Secondo gli analisti, da qui ai prossimi dieci anni i dispositivi collegati a Internet supereranno i 100 miliardi. Attraverso l’Internet of Things sarà virtualmente possibile identificare e gestire in modalità remota dispositivi e veicoli, tracciare animali e cose, sfruttando tag Rfid, chip e barcode bidimensionali, sensori a infrarossi e sistemi di georeferenziazione, collegati a Internet o a una qualsiasi rete di telecomunicazioni. Tra modelli e tecnologie, la sfida è aperta.

I governi degli stati occidentali stanno portando avanti una sponsorizzazione dedicata alla realizzazione di una Internet delle cose, ma la nazione che in questo momento è più avanti nello sviluppo è la Cina, che da tempo a introdotto misure atte a supportare la IoT offrendo incentivi economici e detrazioni fiscali.

È il caso di Jinan Yinquan Technology, una delle sussidiarie del gruppo China Intelligence Information Systems (Ciisi), che è stata selezionata dal governo di Shandong come una delle aziende di riferimento del prossimo piano quinquennale (2011-2015) dedicato a uno sviluppo industriale della Internet of Things o, come viene chiamato più semplicemente, The Plan. Il programma prevede che nei prossimi anni la provincia di Shandong diventerà la culla geografica industriale della IoT cinese. Le due città su cui il governo ha deciso di iniziare sono Jinan e Qingdao, su cui verrà ripartito un budget di 30 miliardi di dollari americani. Insomma, mentre Ibm progetta le smart cities in Cina hanno messo in cantiere addirittura la regione intelligente. Noi forse, come troppo spesso accade staremo semplicemente a vedere.

 

 

#InternetofThingsNuovoFuturooMiraggio

Navigare piu’ sicuri con una chiavetta Usb

Naviga sicuro - YubiKeys

Naviga sicuro – YubiKeys

Alle nostre password affidiamo ormai la sicurezza di tutti i nostri servizi online (social network, home banking, dischi virtuali con foto personali dati etc…) , tutto cio’ anche se siamo, in qualche modo, consapevoli della loro debolezza di fondo.
Immaginiamo seppur inconsapevolmente che, se qualcuno le dovesse rubare potrebbe avere accesso ai nostri, in totale liberta’, anonimato e senza alcun tipo di controllo.

Certo sappiamo che esiste gia un metodo, a oggi ampiamente diffuso, per proteggersi da questo scenario fin troppo comune e si chiama “autorizzazione a due fattori” (in gergo 2FA) o “verifica in due passaggi” . Questo si basa su un assunto molto semplice, ossia, per poter accedere a un servizio, l’utente deve conoscere qualcosa, ovvero la/le propria password (primo fattore), e possedere qualcosa, come un cellulare (secondo fattore). Ad oggi il sistema 2FA più diffuso, disponibile per le maggiori piattaforme, passa per l’invio di un codice speciale tramite SMS, da inserire in aggiunta alla password (vedi Gmail). Un procedimento noioso, che diventa inutile se per un qualche motivo non abbiamo a portata di mano il dispositivo autorizzato a ricevere il codice, oppure semplicemente abbiamo cambiato numero di cellulare e non abbiamo aggiornato il profilo (tragedia).

Sicurezza via USB
La svedese Yubico ci propone una soluzione diversa, infatti al sistema incentrato sullo smartphone, essa sostituisce con una pennina USB, da usare come secondo fattore. Il prodotto in questione si chiama Yubikey e ne esistono diversi modelli, distinti per caratteristiche e protocolli supportati. Il funzionamento è semplice, quando ci si collega ad un servizio online, come ad esempio Gmail, basta digitare la password e poi toccare la pennina inserita in una delle porte USB del computer. Il sistema remoto riconosce la presenza del dispositivo e consente l’accesso dell’utente. Alla base del procedimento c’è un protocollo open source, chiamato Fido U2F (Universal Two Factor), che la Yubico ha sviluppato in collaborazione con Google. Il protocollo e’ OPEN dunque, qualsiasi sviluppatore può abilitarlo per il proprio servizio online.

Le nostre prove hanno confermato la semplicità del procedimento di autenticazione ma, come sempre non e’ tutto oro cio che luccica, ed in questo caso c’è una complicazione da non sottovalutare ossia che, l’impostazione iniziale della Yubikey va fatta per ogni servizio, con procedure quasi mai identiche e spesso nascoste fra le mille opzioni specifiche per la singola piattaforma. Certamente nulla che non possa riuscire anche all’utente medio, magari con l’aiuto delle guide in linea di fornite dalla stessa Yubico, ma comunque un procedimento in più che potrebbe scoraggiare chi non utilizza la verifica in due passaggi per ragioni di pigrizia. Dovremmo pero’ ricordarci tutti che e’ proprio la pigrizia la componente preferita da chi vuole rubarci i dati.

Compatibilità e versioni disponibili
Fra i maggiori browser, Chrome di Google è attualmente l’unico che è compatibile nativamente con Yubikey (dalle versione 41 in poi). Per Safari e Firefox esistono dei plugin specifici da installare per attivare il supporto alle chiavine di Yubico. Quanto ai servizi online, la compatibilità è completa per Google, Dropbox e Salesforce. Per WordPress, la nota piattaforma di blogging, è disponibile un plugin di compatibilità. Niente da fare al momento per i servizi Apple: l’azienda ad oggi non ha mostrato alcuna intenzione di adottare il protocollo Fido U2F sviluppato da Yubico e Google.

La Yubikey Edge, che supporta FIDO U2F, costa 34€, Il modello superiore, Yubikey Neo, aggiunge la possibilità di abilitare la verifica in due passaggi anche tramite NFC su alcuni smartphone Android, costa 59€. Entrambe sono acquistabili online su Amazon Italia.

Ma qualcuno si stara’ chiedendo, “cosa succede nel caso la Yubikey venga smarrita o rubata ???”, beh! nessuna paura poiche’ si può accedere ai vari account tramite il sistema 2FA basato sull’invio di un codice SMS, che è comunque buona norma mantenere attivo, ed una volta entrati sarà possibile cancellare l’associazione con la chiavetta che non è più in nostro possesso. L’alternativa, come per le chiavi dell’auto, è possederne due (entrambe da autorizzare su tutti i servizi, però) e lasciarne una in un posto sicuro.

Speriamo che l’argomento di questo articolo, oltre ad avervi ato una buona alternativa nella gestione della vostra privacy, vi abbia anche fatto riflettere sull’importanza, sempre maggiore, di mantenere alti i livelli di sicurezza di vostri dati personali.

 

#NavigasicuroconYubikey