Come creare una Web TV 2.0

Crea la tua WebTV 2.0

Crea la tua WebTV 2.0

Di Web TV ne nascono a decine ogni giorno grazie ai molti servizi disponibili online e, tra i più giovani impazza la moda del livestream via smartphone. Vediamo dunque in questo secondo articolo, che segue il precedente “Come creare una Web TV gratuita“, come utilizzare ulteriori sistemi 2.0 per la creazione di un canale TV per condividere le nostre idee e passioni.

Le WebTV sono un fenomeno ormai affermato della cultura del ventunesimo secolo. Come gia accaduto durante l’epoca delle radio libere, favorite dal bassissimo costo di realizzazione, infatti oggi giorno per poter partire bastano, una connessione a internet, una webcam o uno smartphone e un account su un servizio di streaming online e tanta tanta voglia di mettere in mostra le proprie capacità. Come gia sappiamo, negli ultimi anni più di qualcuno è riuscito a diventare famoso e a guadagnare tramite le pubblicità e la condivisione dei propri video, vedi i casi italiani di Fedez o Frank Matano, tanto per citarne alcuni ma, molti altri rimangono nell’anonimato della Rete pur costruendosi una propria reputazione ed un proprio seguito.
Si può creare una WebTV sia per dire la propria su qualcosa che ci appassiona o commentare ciò che accade nel mondo ed essere in onda per pochi minuti al giorno, sia per lanciare una piccola televisione locale con un palinsesto strutturato e sostenendosi attraverso la raccolta pubblicitaria o con l’autofinanziamento. Tutto ciò è reso possibile dalle decine di servizi presenti in Rete che permettono di ospitare le WebTv degli internauti: da YouTube a Ustream, ogni piattaforma offre diverse funzionalità e caratteristiche.
Sono sempre di più, ad esempio, gli utenti che sfruttano le potenzialità del livestream (commenti in diretta, immediatezza ,spontaneità) rispetto a coloro che caricano video, filmati in precedenza e modificati tramite i software di editing. Tra i giovanissimi, come dicevamo ad inizio articolo, impazza invece la moda del livestream grazie soprattutto a Periscope e Meerkat, due applicazioni lanciate nei primi mesi del 2015 e che hanno fatto appassionare migliaia e migliaia di persone alla diretta di contenuti multimediali via smartphone.

YouTube – Hangouts
Una piattaforma per creare web tv molto usata è Hangouts. Il servizio integrato all’interno del social network Google+ ma soprattutto è uno strumento importante in quanto si interfaccia direttamente con YouTube. In molti hanno tentato l’avventura della diretta video e alcuni (i cosiddetti YouTubers) ne hanno fatto una vera e propria professione. Per poter utilizzare la funzione livestream di YouTube è necessario prima di tutto creare un account Google e verificarlo sulla piattaforma video di Big G, dopo di che’, sara’possibile creare un servizio di live streaming per migliaia di spettatori, i quali possono accedere sia da Google+ che da YouTube. Il primo passo da compiere è cliccare sul bottone Carica, presente nella parte in alto a destra, vicino all’icona della foto profilo. Nella pagina che si aprirà, l’utente dovrà entrare nella sezione Live Streaming, presente nella parte destra dello schermo: cliccando su Inizia, partirà immediatamente la diretta video, con la possibilità di interagire con i propri fan, grazie alla chat. Al termine del livestream, il video sarà disponibile sul canale YouTube e visibile a tutti gli internauti della Rete. Tramite gli Analytics, è possibile studiare i momenti migliori del programma e capire dove intervenire per aumentare gli ascolti. Ovviamente, qualora preferiate, è possibile creare un video live su YouTube anche con le app ufficiali di Hangouts sia per Android che per iPhone/iPad. Ricordiamo, infine, che al termine della diretta video su Hangouts, i video verranno caricati sul vostro canale YouTube e gli utenti potranno guardarli in differita. Hangouts è un ottimo modo per creare web tv professionali.

Ustream
Ustream è una piattaforma di streaming video utilizzata soprattutto dalle aziende per diffondere il proprio messaggio o dalle piccole stazioni televisive locali, che cercano un modo economico per creare una Web Tv e raggiungere una audience maggiore. Rispetto alla gratuità di YouTube, Ustream ha un costo mensile che si aggira intorno ai cento euro (l’offerta base) per avere la possibilità di caricare video in alta definizione e uno storage di 500 GB. È possibile creare anche un account gratuito, ma la trasmissione dei livestream non è in alta definizione ed è intervallata dalla pubblicità.
Per registrarsi gratuitamente è necessario cliccare su Sign Up, presente nel centro della home e poi su Start Free Trial (i video caricati saranno disponibili per la visione solo per trenta giorni). Completato l’iter, per iniziare lo streaming in diretta si deve premere su Vai in diretta, scegliere la categoria e scrivere una breve descrizione dell’evento e infine permettere l’acceso al microfono e alla webcam da parte del servizio. Una volta in onda, si potrà interagire con i visitatori attraverso la chat e condividere l’inizio della diretta con i propri amici sui social network per aumentare il numero dei telespettatori. Ustream è disponibile anche in versione mobile, attraverso l’applicazione scaricabile dal Google Play Store e dall’App Store.

Livestream
Con un servizio specifico per le televisioni e le radio, Livestream è uno delle soluzioni migliori per chi è in cerca di una piattaforma affidabile per creare una WebTv. Livestream mette a disposizione qualsiasi tipo di tool per mandare in live streaming eventi culturali e manifestazioni sportive. Smartphone, tablet, telecamere professionali, qualsiasi tipo di device è supportato per la diretta video. Il servizio ha un costo che varia dai pochi dollari al mese, fino a quasi ottocento per avere il massimo supporto dallo staff della piattaforma. Livestream offre anche la possibilità di creare un account gratuitamente, senza il supporto alla diretta tramite smartphone e tablet.

ToMakeWeb
Dedicata al mondo del business, ToMakeWeb è adatto a chi ricerca un servizio pensato e sviluppato per creare una WebTv in onda ventiquattro ore al giorno. Con ToMakeWeb è possibile creare un palinsesto giornaliero, caricando i video tramite YouTube o direttamente dal personal computer, personalizzare la grafica e gestire i banner pubblicitari. Attraverso il monitoraggio delle statistiche l’azienda può capire quali sono i programmi più seguiti e modificare le trasmissioni che non hanno il supporto dei telespettatori. Con la chat e i social network si può interagire in diretta con il pubblico e rispondere alle loro domande. Il servizio di livestream ha un costo minimo di settanta euro al mese e aumenta ad ogni funzionalità in più richiesta.

Periscope
Tra le applicazioni più amate tra i giovani, Periscope permette di essere in onda per un breve periodo e di interagire con i propri fan attraverso la chat. Semplicissimo da usare, è stato acquistato da Twitter per poter mandare in onda i live streaming direttamente sul social network. Insieme a Meerkat, altro servizio di streaming video direttamente da mobile, ha creato non pochi problemi alle case di produzione per la violazione dei diritti televisivi. Inoltre, molto sociologi hanno evidenziato la pericolosità di un servizio che permette il livestream toccando un semplice bottone, senza alcun tipo di filtro.

 

Quindi, alla fine della fiera, il concetto e’ che “chi piu’ ne ha pou’ ne metta” sia di idee che di contenuti.
Condividete gente, condividete.

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