• Blog

Vagrant e Docker supporto allo sviluppo di applicazioni

In passato la fase di set-up e/o di start-up di un progetto in sviluppo richiedeva notevole impegno e tempo. Tipicamente una volta terminata la fase progettuale di un’applicazione ed una volta individuate le risorse da impiegare per il suo funzionamento,eranecessarioconfigurare un ambiente capace di mettere a disposizione queste risorse.Immaginando un’applicazione molto sempliceil cui obiettivo è di storicizzare informazioni e di fornirne una visualizzazione attraverso una pagina web, gli elementi indispensabili all’interno dell’ambiente ospiterà l’applicazione, saranno la presenza di un DBMS ela presenza di un web container.

Questo comunemente si traduceva nella configurazione, nel migliore dei casi, di un server (dedicato allo sviluppo) oppure nell’installazione di queste risorse sulla stessa macchina dello sviluppatore. Tutto ciò portava all’installazione di un DBMS, un web container ed, eventualmente, una serie di attività di configurazione delle macchine di destinazione. Ovviamente all’interno di una software house il numero di progetti è molteplice perciò quanto detto precedentemente doveva essere ripetuto per ogni progetto in sviluppo.

Ipotizzando inoltre che ad ogni applicazione in sviluppo sia necessario un ambiente fisico dedicato, si presentava un problema di costi, dovuto all’acquisto di più elaboratori, di spazio occupato da essi e di manutenzione di ogni macchina. Tutto questo si aggiungeva alle problematiche di configurazione.

Una soluzione che ha permesso una notevole riduzione del numero di server dedicati e conseguentemente di risorse è stata l’introduzione delle macchine virtuali. Per macchina virtuale si intende un software che simula il comportamento di una macchina fisica attraverso un processo di virtualizzazione. Questo comporta che all’interno di una macchina fisica possono essere messe in esecuzione più macchine virtuale e quindi più ambienti a cui destinare più applicativi. Risolte le problematiche delle macchine fisiche, sostituite da quelle virtuali,permanevano le problematiche dovute alla configurazione. Il problema venne spostato, se prima eradi configurazione delle macchine fisiche successivamente divenne di configurazione delle macchine virtuali. Nel corso del tempo si è cercato di risolvere parte di questi problemi condividendo, attraverso il web, macchine virtuali parzialmente configurate ma le personalizzazioni richiedevano comunque del tempo.

 

 

 

Tool per la semplificazione della gestione degli ambienti virtuali e della configurazione

Negli ultimi anni sono nati tool che hanno permesso un notevole passo in avanti. Questi tool semplificano non solo la reperibilità, ma anche la gestione degli ambienti virtuali e la messa in funzione. I due principali strumenti che consentono la gestione di questi ambienti, seppur con approcci profondamente diversi, sono Vagrant e Docker. Entrambi i tool permettono una gestione veloce e snella degli ambienti di sviluppo. Attraverso repository condivisi, è possibile trovare ambienti pre-configurati già pronti all’uso. Le modalità con cui questi due strumenti consentano la gestione di questi ambienti è profondamente diversa.

Vagrant sfrutta a pieno la virtualizzazione, ogni ambiente creato corrisponde ad una macchina virtuale gestita dall’hypervisor (detto anche virtual machine monitor). Le molteplici macchine virtuali gestite da Vagrant restano separate ed inoltre la natura di ognuno di essi può essere diversa. Gli svantaggi della virtualizzazione sono legati alle performance. Ogni macchina virtuale avrà risorse dedicate,  l’hypervisor per poter gestire contemporaneamente ognuna di esse potrebbe consumare tutte le risorse della macchina fisica. Nell’immagine sottostante possiamo vedere l’architettura della virtualizzazione. La macchina fisica con il suo sistema operativo (host OS) ospita il virtual machine monitor, all’interno del VM monitor sarà possibile definire gli ambienti virtuali ospiti (guest OS). Vagrant, in questa architettura, si colloca tra il sistema operativo della macchina fisica e il virtual machine monitor, migliorando la gestione di ognuna di esse.

 

 

 

Docker sfrutta la “containerizzazione” ovvero utilizza le funzionalità di isolamento delle risorse del kernel Linux (come ad esempio cgroups e namespace) per consentire a container diversi di coesistere in maniera indipendente sulla stessa istanza Linux. Per questa sua caratteristica viene definita un’applicazione light-weight. L’architettura di questo approccio è riportata nell’immagine sottostante. Docker sfrutta le funzionalità del kernel creando container separati ed indipendenti. Le performance della containerizzazione di Docker sono migliori rispetto al processo di virtualizzazione di Vagrant, in quanto Docker non utilizzando un hypervisor sfrutta direttamente le risorse della macchina fisica.

 

 

 

Mentre Vagrant può essere eseguito solo da terminale di comando, Docker possiede anche un’interfaccia grafica che rende molto più veloce l’installazione e la gestione dei moduli. Per approfondire i due tool vi rimandiamo ai rispettivi articoli.

A questo punto sorge l’annosa questione: è meglio utilizzare la virtualizzazione o la containerizzazione? Per poter rispondere a questa domanda è necessario analizzare attentamente il contesto in cui si opera in quanto la scelta dipende da una serie di fattori tipici dell’ambito IT: prestazionali, di scalabilità, di affidabilità, di sicurezza, sui sistemi esistenti e costi da sostenere; giusto per citarne alcuni.

Nel dettaglio guardiamo alcuni degli aspetti fondamentali:

Latenza – applicazioni con una bassa soglia di tolleranza per la latenza hanno risultati migliori con l’uso dell’ambiente fisico e quindi sui container.

Capacità  - Le macchina virtuali sono strutturate sull’ottimizzazione dei sistemi di carico. In caso in cui applicazioni containerizzate non consumano tutta la capacità sul box fisico, le macchine virtuali potrebbero offrire benefici maggiori.

Ambienti misti – La containerizzazione esegue un’istanza solo di sistema operativo. Se si vuole interagire con sistemi operativi diversi la virtualizzazione lo consente.

Coesistenza – Alcuni sistemi hanno carichi di lavoro che non consentono di condividere il kernel quindi è necessario isolarli interamente. La virtualizzazione fornisce un isolamento dei singoli sistemi.

Licenze - L’utilizzo della containerizzazione riduce i costi dovuti alle licenze per acquisto di un hypervisor e del sistema operativo su cui l’hypervisor si poggia.

 

La decisione finale quindi può avvenire a valle di tante considerazioni e vincoli legati al contesto.

Creare uno store Mongodb con Geoserver

Nel contesto della geo localizzazione è sempre più crescente l’esigenza di renderizzare su mappe le informazioni storicizzate all’interno del proprio database. In questo articolo descriveremo come pubblicare informazioni geo spaziali storicizzate su una collection mongodb. Per approfondire cosa è mongodb e come installarlo fare riferimento al rispettivo articolo. Diamo una breve descrizione di Geoserver: Geoserver è un server open source scritto in Java che permette di pubblicare dati geo spaziali da sorgenti diverse. Le informazioni pubblicate da Geoserver possono essere di tipo raster o di tipo vettoriale, queste informazioni formano layer il cui scopo è essere renderizzati su mappe. Geoserver consente di personalizzare il rendering delle informazioni, attraverso la definizione di stili di renderizzazione, e di esporre all’esterno i layer attraverso dei servizi. La tipologia di servizio da utilizzare per esporre i layer all’esterno dipende dalla tipologia di dati definiti all’interno del database. I servizi sono i seguenti:

  • Web Map Service (WMS) 
  • Web Feature Service (WFS)
  • Web Coverage Service (WCS)
  • Web Processing Service (WPS)
  • Catalog Services for the Web (CSW)

Prima di vedere come avviene l’interazione tra Geoserver e mongodb procediamo con l’installazione del server. Dalla pagina di download di Geoserver scaricare la versione corrente e più adatta al sistema operativo in uso, nel caso in cui si stia utilizzando eseguibile OS indipendente completare l’installazione aggiungendo le variabili d’ambiente richieste.

Completata questa procedura, tramite il terminale di comando accedere al percorso di installazione del server ed eseguire lo startup.bat sotto la cartella bin. Se l’installazione è stata completata correttamente, accedendo alla pagina http://localhost:8080/geoserver da un browser web si accederà alla seguente schermata. 

 

 

 

Accedere alla maschera di amministrazione usando le credenziali utente admin e password geoserver. Per poter accedere al proprio data store è necessario creare una connessione al database dal menù Stores. Aggiungere una nuova connessione attraverso il menù “Add new Store”. Come si potrà riscontrare, nell’elenco degli store nativi di Geoserver non è presente mongodb. A tale scopo è necessario installare il pacchetto che consente di creare un data source mongodb. Geoserver è corredato da una serie di funzionalità installabili separatamente tutte raccolte sotto il progetto Geotool. Dalla pagina di Geotool scaricare il pacchetto che dovrà essere corrispondente alla versione di Geoserver installata. Dopo aver decompattato il file zip, scaricato in un percorso accessibile, copiare il file gt-mongodb-XX.X.jar sotto il percorso PATH_INSTALLAZIONE_GEOSERVER/webapps/geoserver/WEB-INF/lib. Riavviando il server e ripetendo le operazioni precedenti sarà possibile visualizzare voce “MongoDB – database” che permetterà di aggiungere un nuovo store mongodb. 

Nonostante la voce di menù sia attiva sul server ancora non è possibile interagire con il database. Per poter completare l’attivazione della voce di menù è necessario scaricare il driver java per le connessioni a mongodb (mongo-java-driver). Dalla pagina di MongoDB scaricare il driver di riferimento e copiarlo sempre sotto la cartella PATH_INSTALLAZIONE_GEOSERVER/webapps/geoserver/WEB-INF/lib. Completata questa operazione è possibile creare una connessione da Geoserver verso Mongodb. 

Procediamo con il creare un workspace di test su Geoserver. Dalla voce di menù workspaces  creare un nuovo workspace cliccando sul bottone “Add new workspace”. Nella nuova schermata completare le informazioni richieste dando un nome ed un url. Inserire i valori test per il campo nome ed il percorso /test per il campo url, a questo punto confermare l’operazione.

Prima di creare la connessione è necessario avere una collection adatta allo scopo sul database. La struttura delle informazioni all’interno della collection deve rispettare lo standard definito da Geojson (far riferimento alla pagina http://geojson.org/). Procediamo con inserire una serie di punti all’interno del database. Per l’occasione verrà creato un database testgeo con una serie di punti all’interno della collection points, ogni punto oltre alla posizione avrà la proprietà color. Una volta che il database mongodb è in esecuzione da shell di comando avviare il client mongo ed inserire i punti. Di seguito i comandi utilizzati:

use testgeo

db.points.insert({"type":"Feature","geometry":{"type":"Point","coordinates":[-0.6, 10.1]}, "color":"RED"})

db.points.insert({"type":"Feature","geometry":{"type":"Point","coordinates":[12.3, 19.5]}, "color":"YELLOW"})

db.points.insert({"type": "Feature","geometry":{"type":"Point","coordinates":[2.2, 16.2]}, "color":"BLU"})

db.points.insert({"type":"Feature","geometry":{"type":"Point","coordinates":[3.4, 8.7]}, "color":"BLACK"})

db.points.insert({"type":"Feature","geometry":{"type":"Point","coordinates":[1.0,1.0]}, "color":"RED"})

 

Per poter far riconoscere a Geoserver che i dati contenuti nella collection sono di tipo geospaziale è necessario definire un indice geo spaziale su di essa. Per cui eseguire il comando riportato di seguito.

db.points.createIndex({"geometry":"2dsphere"})

Procediamo ora con il creare il nuovo store su Geoserver. Premere su “Add new Store” e successivamente su MongoDB dal menù Stores  della console di amministrazione. Completare le informazioni richieste come segue. Selezionare il workspace (test) creato precedentemente ed inserire testDataSource come nome del data source. I parametri della connessione sono prevalorizzati, sostituire le informazioni nel seguente modo: 

  • data store: mongodb://localhost/testgeo 
  • schema store: mongodb://localhost/testgeo.schemas  

Modificando il valore dello schema store, come specificato, verrà creata sul db una collection schemas nella quale verrà inserita la struttura dei dati della collection points. Procedere premendo sul bottone Save.

 

 

 

Geoserver riconoscerà la collection e darà la possibilità di creare un layer da essa. Al termine dell’elaborazione quindi verrà presentata una schermata con il layer points da pubblicare. Premendo sul bottone Publish si potrà passare alla definizione del layer.

 

 

 

Per completare la creazione del layer sono necessarie alcune operazioni. La prima è inserire il sistema di coordinate di riferimento, scorrere in basso fino a “Coordinate Reference System” e dal bottone find cercare 4326 e selezionarlo. La seconda operazione è impostare il bounding box del layer. Per semplicità verrà prevalorzzato a partire dai dati presenti a db. Cliccando su “Compute from data” verranno inseriti i valori calcolati dai punti della collection points. Completare l’operazione calcolando il bounding box di longitudine e latitudine partendo dalla computazione precedente, cliccare su “Compute from native bounds”. 

 

 

Procedere ora con l’ultima operazione, ovvero definire lo stile con cui dovranno essere rappresentati i punti. Selezionare la scheda “Publishing” e scorrere fino alla voce WMS Settings, cambiare lo stile di default selezionando lo stile pointi, successivamente procedere con il salvataggio.

 

 

Per avere un’anteprima del layer selezionare la voce del menù “Layer Preview” dal menù a sinistra, individuare il layer (points) appena pubblicato e selezionare in corrispondenza della colonna “Common Formats” l’anteprima tramite OpenLayer. Questa operazione aprirà una pagina del browser web dove si avrà la visualizzazione del layer con i 5 punti inseriti nel database. 

 

 

 

 

Social dashbord: quando la gestione dei social network si fa semplice

Il mondo dei social network è sempre più presente non solo nella nostra vita quotidiana ma anche nelle strategie di comunicazione aziendale. Dal report “Digital in 2017” di  We Are Social sappiamo infatti che metà della popolazione è ormai connessa a internet e in media, almeno noi italiani, trascorriamo due ore al giorno sui social media. Con l’avvento dei social network è stato quindi inevitabile un cambiamento di rotta nel mondo della comunicazione digitale. 

“Non è la più intelligente delle specie quella che sopravvive; non è nemmeno la più forte; la specie che sopravvive è quella che è in grado di adattarsi e di adeguarsi meglio ai cambiamenti”

A detta di Charles Darwin, vien da sé che se la società cambia, le aziende devono fare altrettanto e hanno subito cavalcato l’onda dei social network, strumenti ad oggi indispensabili per creare strategie marketing ad hoc. 

 

 

Come i social network aiutano le aziende? 

Vendere sì, ma per le aziende la comunicazione sui social network non deve portare solo a questo. 

  • Comunicare sui social vuol dire farsi conoscere da un ampio pubblico e veicolare rapidamente il traffico a siti web corporate. 

 

  • I social network hanno, soprattutto, lo scopo di mettere in contatto tra loro migliaia di utenti, creando perciò in ottica business innumerevoli possibilità di creare relazioni con gli utenti, farsi apprezzare e sviluppare strategie in ottica awareness ed engagement.

 

  • Quando poi la comunicazione è ben fatta e ad essere offerti sono prodotti o servizi di qualità, ecco che il passaparola online si diffonde a macchia d’olio creandoci una buona reputazione online. Per questo motivo comunicare nel modo migliore è indispensabile per raggiungere gli obiettivi di business.

 

Gestire tutti i social non è semplice: un aiuto dalla social dashboard

Ma non poche volte le aziende si trovano a dover fare i conti con quale tipo di contenuti pubblicare, con quale stile e soprattutto a quale target mirare. Spesso fallire in una pianificazione di una strategia vuol dire pianificare al meglio un fallimento. Un’efficiente strategia è fatta di step l’uno propedeutico all’altro, iniziando dall’ascolto della rete.  

Benchmark e monitoring sono attività quotidiane indispensabili. Ma operare giornalmente un ascolto della rete e un monitoraggio online, specie quando i social network da gestire sono tanti, non sempre è possibile. 

Un grande aiuto arriva dalla social dashbord: prodotta da Key-Biz, Wave On Web permette infatti di ridurre i tempi e la quantità di lavoro dando al tempo stesso la possibilità di tenere sott’occhio anche le attività che svolgono i competitor sui social. Principalmente Wave On Web assiste l’utente in attività di:

  • Competitive benchmark: scoprire come si comportano i competitor in rete è fondamentale per organizzare una conseguente strategia vincente

 

  • Measure: monitorare in modo automatico tutti i KPI impostati risulta estremamente utile per avere una panoramica dell’andamento della propria attività sui social 

 

  • Report: esportare facilmente tutti i dati su fogli PDF o Excel aiuta a tagliare quelle tempistiche dedicate alla preparazione di report manuali.

Tutto questo si traduce quindi in meno tempo perso a organizzare i risultati di diverse piattaforme e più tempo speso per creare contenuti e aprirsi a nuove idee per il proprio business. Vi sembra poco?

 

Lego Serious Play: problem solving ed engagement costruiti mattone su mattone

 

“The LEGO® SERIOUS PLAY® method is a facilitated meeting, communication and problem-solving process in which participants are led through a series of questions, probing deeper and deeper into the subject”

La metodologia LEGO® SERIOUSPLAY® (LSP), sempre più comune all’interno sia di grandi che di piccole aziende, è considerato infatti un approccio innovativo al ragionamento, alla comunicazione e alla risoluzione (in 3D) di un problema, migliorando a sua volta le performance di business.

Questa tecnica di facilitazione nasce negli Anni Novanta nel quartier generale della LEGO proprio per favorire l’innovazione del business interno e agevolare i processi decisionali. Ben presto, una volta appresi i primi effetti positivi di questa tecnica, si sviluppa anche al di fuori dell’azienda ideatrice soprattutto quando, nel 2010, Lego rende disponibili i set LSP sullo shop online dell’azienda.

 

Le fasi LEGO® SERIOUSPLAY®: entra in gioco il facilitatore certificato

Il principale vantaggio di LSP è quello di riuscire a raggiungere un elevato engagement delle persone, senza sottovalutare la capacità di riuscire a far comunicare in maniera orizzontale, dirigenti, manager e dipendenti che mettono in gioco (è proprio il caso di dirlo!) la propria immaginazione e creatività.

È infatti proprio attraverso il “gioco serio” che si riesce a dar forma a questioni manageriali legate agli obiettivi  a cui l’azienda aspira. Come tale, questo metodo è basato su un’ampia ricerca che comprende business, sviluppo organizzativo, psicologia e apprendimento, i cui risultati sono direttamente proporzionali alla qualità di facilitazione.

Per questo motivo è indispensabile che la conduzione del processo sia guidato da un facilitatore certificato LEGO® SERIOUSPLAY® per ognuna delle quattro fasi di sviluppo del metodo: 

 

  • Question: in cui viene presentato ai partecipanti un problema da risolvere, connesso direttamente all’obiettivo che si vuole raggiungere

 

  • Build: in questa fase i partecipanti riportano in una struttura creata con i materiali Lego ciò che hanno compreso e la loro risposta al problema

 

  • Sharing: ciascun partecipante condivide la rappresentazione del proprio modello con i presenti. In questa fase ciascun modello prende quindi un significato attribuito dal costruttore stesso

 

  • Reflecting:  nella fase conclusiva del processo emergono le riflessioni su quanto detto ed esposto da ciascun partecipante

Un metodo innovativo quindi per dar voce ai dipendenti in modo realmente costruttivo, creando relazioni, connessioni e dialogo tra le persone mattone su mattone, ovviamente colorato e firmato Lego! 

Key-Biz, 10 anni di innovazione e di successi: nel 2017 ripartiamo dal blog

 

Key-Biz è un’azienda informatica giovane e dinamica nata nel 2007 con uno spirito di innovazione che l’ha portata verso una sempre maggior espansione nel settore dell’ICT. Innovare con entusiasmo è difatti lo slogan che ha guidato il successo di Key-Biz in tutti questi anni, portandola ad acquisire un numero sempre maggiore di clienti e partnership.

L’entusiasmo di ogni dipendente Key-Biz si racconta attraverso il lavoro di ogni giorno, dove la passione per ciò che si fa si traduce in sempre nuovi progetti innovativi, portati avanti con professionalità, grinta e nuovi modelli di business.

 

 

Partecipare, connettersi e condividere

A 10 anni dal suo inizio Key-Biz investe sulla nascita di un suo blog. Il motivo di questa scelta? Key-Biz vuole avvicinarsi ancor di più alle persone offrendo nuovi contenuti trasmettendo al tempo stesso ciò gli sta a cuore: la passione per il lavoro che svolge ogni giorno. Negli ultimi mesi Key-Biz ha investito molto anche sui social network, aprendosi ancora di più al mondo di Facebook, Twitter e LinkedIn, creando in questo modo un ponte con i propri fan/follower con un proprio linguaggio.

Con l’apertura del blog Key-Biz, si apre una nuova finestra online sul mondo dell’innovazione e delle Telecomunicazioni con un occhio di riguardo ai giovani, attivissimi nel settore dell’ICT. Il blog vuole focalizzarsi sulle ultime novità legate alle metodologie di sviluppo software e sviluppo app ma senza tralasciare le notizie legate alle Tecnologie IoT e le loro applicazioni.

Orgogliosi del nostro lavoro vogliamo condividerlo, è per questo che abbiamo pensato a connetterci con voi pubblicando, da oggi in poi, i nostri sviluppi tradotti in nuovi prodotti e servizi.

Benvenuti allora cari lettori,

“Old ways don’t open new doors”, 2017:  Key-Biz apre nuove porte, oggi lo fa col suo blog!