DevOps: la metodologia che unisce IT e Business

DevOps

DevOps

DevOps (da development + operations) è una metodologia di sviluppo del software che punta alla comunicazione, collaborazione e integrazione tra sviluppatori e addetti alle attivita’ di gestione dell’information technology (IT). DevOps vuole rispondere all’interdipendenza tra sviluppo software e IT operations, e punta ad aiutare le aziende a sviluppare in modo più rapido ed efficiente i loro prodotti e servizi software.

La complessità delle strutture e infrastrutture It ha alimentato negli ultimi anni conflitti inter-organizzativi impoverendo l’It service delivery. Situazione che non risulta però più sostenibile rispetto al contesto economico in cui operano le aziende ‘servite’ dall’It in cerca di maggior flessibilità, dinamicità e velocità di risposta, senza però perdere in qualità e sicurezza. Ecco perché sta crescendo ed evolvendo la metodologia DevOps che mira a migliorare l’It service management.

Le aziende che tipicamente potrebbero avere maggiori benefici da un orientamento DevOps sono quelle con rilasci di software frequenti. Flickr, ad esempio, ha utilizzato la metodologia DevOps per supportare la necessità di dieci rilasci al giornalieri; ma tali cicli di rilasci potrebbero essere anche più frequenti in aziende che producono applicazioni multi-focus o multi-funzione, spesso indicati come deployment continuo, e associato spesso alla metodologia Lean Startup.

La metodologia DevOps aiuta dunque le aziende nella gestione dei rilasci, standardizzando gli ambienti di sviluppo. Le aziende con problemi di automazione dei rilasci solitamente hanno già un processo automatico in essere ma lo vorrebbero più flessibile e controllabile, senza per questo dover agire da riga di comando per ottenere ciò. Idealmente tale automazione potrebbe essere utilizzata anche da risorse non operative (non appartenenti all’IT Operations) su ambienti non di produzione. In questo modo gli sviluppatori avrebbero a disposizione un maggiore controllo degli ambienti, dando all’infrastruttura una visione più incentrata sull’applicazione.

L’integrazione DevOps ha come obiettivo il rilascio del prodotto, il collaudo del software, l’evoluzione e il mantenimento (bug fixing e “minor release”) in modo tale da aumentare affidabilità e sicurezza e rendere più veloci i cicli di sviluppo e rilascio. Molte delle idee che costituiscono DevOps provengono dalla gestione di sistemi aziendali e dalla “Metodologia Agile“.

Il termine “devops” è stato coniato da Patrick Debois e reso popolare attraverso una serie di “DevOps Days” iniziati nel 2009 in Belgio. Da allora si sono svolte conferenze “DevOps Days” in India, USA, Brasile, Australia, Germania e Svezia.

Le metodologie di sviluppo (ad esempio la Metodologia Agile) che vengono attuate nelle organizzazioni tradizionali mediante distinte divisioni tra IT operations e QA da un lato, sviluppo e rilascio dall’altro, sono prive di una profonda integrazione interdipartimentale. DevOps promuove invece un’ insieme di processi e metodi indirizzati alla comunicazione e collaborazione tra le divisioni.

L’adozione della metodologia DevOps è guidata da diversi fattori, come:

  • Utilizzo della metodologia agile e altre metodologie di sviluppo del software
  • Necessità di incrementare la frequenza dei rilasci in produzione
  • Ampia disponibilità di un’infrastruttura virtualizzata e in cloud
  • Incremento nell’uso di data center automatizzati e strumenti di configuration management

La metodologia DevOps è cosi’ descrivibile come “una relazione più collaborativa e produttiva tra i gruppi di sviluppo e quelli di operation”. Ciò incrementa l’efficienza e riduce i rischi di frequenti modifiche in produzione.

Invece, in molte organizzazioni, lo sviluppo del software e la gestione dei sistemi sono in divisioni differenti e poiché lo sviluppo è generalmente guidato dalle necessità dell’utente, per continue modifiche e conseguenti rilasci, i gruppi operativi invece sono concentrati sulla disponibilità e affidabilità dei servizi, nonché sulla gestione dei costi. Ciò produce un “gap” tra sviluppo e gestione dei servizi che rallenta il passaggio in produzione.

Impatto sui rilasci applicativi
In molte aziende i rilasci applicativi sono eventi ad alto impatto e rischio, coinvolgendo più gruppi di lavoro. Con la metodologia DevOps tale rischio si riduce per i seguenti motivi:

  • Numero ridotto di modifiche : L’adozione del modello agile o modello incrementale, in contrasto con il tradizionale modello a cascata, comporta minori modifiche, anche se più frequenti, con minore impatto e rischio.
  • Accresciuto coordinamento dei rilasci : La presenza di una coordinazione del rilascio riduce le distanze tra sviluppo e gestione.
  • Automazione : Una completa automazione assicura la facile ripetibilità dei rilasci e riduce gli errori nell’operazione.

I processi chiave che caratterizzano le metodologie DevOps sono quindi:

Cloud e Virtualizzazione: la necessità di avere a disposizione servizi e strumenti che offrono una modalità veloce di verifica e gestione della complessità di un’applicazione. Esempi di tali strumenti sono le API di cloud provisioning quali Amazon EC2, o servizi SaaS quali New Relic e Loggly, che offrono capacità operazionali cloud, oppure strumenti di gestione della configurazione quali Chef, Puppet e Ansible.

Continuous Delivery (letteralmente consegna continua): significa miglioramento continuo, significa testing ad ogni modifica, significa costruire molti prototipi, e non andare avanti finché non si abbia la certezza che ciò che abbiamo finora sviluppato è stato verificato a livello di qualità e compatibilità, se non addirittura di user testing. Le attività prettamente ingegneristiche coinvolte per assicurare uno sviluppo caratterizzato da continuous delivery sono: controllo codice sorgente, versioning configuration, integrazione continua, testing di unità e testing integrato e deployment automatizzato.

Considerazione finale
Dietro questa cura maniacale dell’organizzazione e della fase di testing c’è l’idea che sia meglio affrontare nella realizzazione di un prodotto tanti piccoli cambiamenti continui causati dal dialogo tra sviluppatori e sistemisti, che non dover validare un’intera applicazione solo alla fine di un’intero ciclo di sviluppo, o peggio ancora offrire al cliente un prodotto di cui non abbiamo la minima certezza su bug e qualità del funzionamento. Quest’ultima pratica deleteria porta poi a sostenere costi di supporto al cliente e di assistenza che in passato hanno costituito la causa maggiore del collasso di aziende e business IT.

#Devops#MetodologiaAgile

Rsync e la sincronizzazione dei contenuti Web

rsync aggiornamento web

Rsync aggiornamento Web

Supponiamo che ci tocchi gestire in produzione un numero X di frontend Web dietro un bilanciatore e che quindi, ad ogni nuova release, si renda necessario caricare i contenuti su ciascuno di essi (rendendo la vita difficile agli sviluppatori).

Certo il mercato e’ ricco di software di Configuration Manager, ma in questo caso ho deciso di usare come esempio l’automazione mediante l’uso di rsync, del resto non serve una Ferrari per fare la spesa. In pratica, i contenuti Web verranno caricati manualmente su un’unico frontend (che servirà da server) mentre le altre macchine fungeranno da client (ovvero aggiorneranno i loro contenuti ogni X minuti consultando direttamente la macchina server).

Configurazione della macchina server

Tale attività si articola in due fasi: la prima consiste nell’installazione e nella corretta configurazione del demone xinetd (evoluzione del celebre inetd), mentre la seconda riguarda solo ed esclusivamente rsync.

Procediamo dunque con l’installazione di xinetd:

[root@server ~]# yum install xinetd

ed impostiamo l’avvio automatico del demone in questione per i diversi runlevel:

[root@server ~]# chkconfig --levels 2345 xinetd on

Posizioniamoci nella dir /etc/xinetd.d ed apriamo in scrittura il file rsync, sostituendo la direttiva:

disable = yes

con

disable = no

In definitiva, il suddetto file, dovrà avere il seguente contenuto:

service rsync
{
        disable = no
        flags           = IPv6
        socket_type     = stream
        wait            = no
        user            = root
        server          = /usr/bin/rsync
        server_args     = --daemon
        log_on_failure  += USERID
}

Passiamo ora al secondo step relativo alla configurazione della macchina server, ovvero la creazione del file rsyncd.conf nella directory /etc:

[root@server ~]# touch /etc/rsyncd.conf

All’interno del suddetto file creeremo dei moduli ad-hoc contenenti tutte le direttive necessarie per la sincronizzazione dei contenuti tra server e client, ad esempio:

log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
[images]
   path = /var/www/html/images
   uid = root
   gid = root
   read only = no
   list = yes
   host allow = 10.11.12.0/24

Salviamo il file ed avviamo xinetd:

[root@server ~]# service xinetd start

Configurazione delle macchine client

Tale configurazione consiste esclusivamente nella creazione di una entry crontab del tipo:

*/1 * * * *  root rsync -agruv root@10.11.12.1::images /var/www/html/images/

ovvero ogni minuto viene contattato il server (10.11.12.1, modulo images che punta a/var/www/html/images/) e viene sincronizzato il contenuto della Dir del client /var/www/html/images/.

Bene, l’aggiornamento e’ servito!

#RsyncSincronizzazione#AmbientiWeb

Esistono alternative a Google

Motori di ricerca alternativi a Google

Motori di ricerca alternativi a Google

Ecco alcuni dei migliori motori di ricerca altenativi

Una domanda che prima o poi ci siamo fatti tutti ogni volta che apriamo il nostro browser preferito, e vediamo sempre quel logo… “Esiste un’ alternativa a google?”…Beh! ovviamente si, le alternative ci sono, molte e sono anche ben funzionanti.

Partiamo quindi con la nostra classifica :

  1. Ixquick: motore di ricerca che garantisce la privacy, disponibile anche in italiano. Interessante anche l’idea di fornire un proxy direttamente nella pagina dei risultati infatti appare un link proxy affianco ad ogni link cliccandoci è possibile visitare il sito dietro un proxy web, ottimo anche per agirare le censure dei vari governi idea carina anche se purtroppo non si possono usare i form poichè non registrando l’ip si potrebbe usare il servizio per fare danni in giro per il web, i risultati forniti dal motore di ricerca sono in linea con quelli dei concorrenti.
  2. GoodSearch: non solo i suoi risultati sono ottimi (powered by Yahoo) ma permette anche di fare beneficenza, semplicemente usando il loro motore, infatti parte degli introiti pubblicitari generati dal motore vanno in beneficenza, il sistema è molto semplice, ma prima di fare una ricerca dovrete scegliere una causa a cui donare, ed essendo solo in inglese dovrete cercare in lingua inglese.
  3. Bing: il principale concorrente di google, simbolo dell’inizio della rincorsa di Microsoft verso Google, i risultati sono ottimi e la ricerca video… beh è assolutamente da provare.
  4. DuckDuckGo: un motore di ricerca indipendente che si è creato una sua nicchia di utenti grazie alle garanzie sulla privacy che offre, il motore dice di non tracciare nulla non registrare ip ne ricerche, il tutto per salvaguardare la privacy dei suoi utenti.
  5. Quintura: probabilmente uno dei più famosi e storici concorrenti di google si trattava di un Visual Search, in cui una volta cercato il termine, vi diceva cos’ altro avreste potuto cercare su quell’argomento. Esiste pero’ , ad oggi, la versione per bambini molto utile da impostare come motore di ricerca sicuro per i più giovani.
  6. Wolframalpha: motore intelligente molto famoso in rete, in quanto non cerca sul web ma mette a disposizione le informazioni statistiche del web. Se cerchiamo informazioni su un animale, uno stato oppure dati statistici ecc. Wolframalpha fa al caso nostro.
  7. LyGo: il motore di ricerca secondo Lycos, ben fatto sia dal punto di vista tecnico che per quanto riguarda i risultati.
  8. IceRocket: qusto motore è davvero ben studiato, in quanto scandaglia in continuazione sia i social network che i blog di tutto il mondo.
  9. Mojeek: anche questo è un motore di ricerca in stile google anche se non sempre i suoi risultati sono soddisfacenti ma c’è da dire che a volte cercare delle informazioni con motori diversi aiuta a trovare les cose, come si dice “quattro occhi sono meglio di due”.
  10. Kartoo: intreccio tra una directory e un motore di ricerca, il sito è ben fatto ma i risultati non sono sempre il massimo.

Ovviamente questa lista non e’ completa e, quasi quotidianamente, ne vengono pubblicati di nuovi quindi non esitate a suggerirne qualcuno di vostro gradimento, grazie e buona ricerca.

 

#MotoridiricercaAlternativiaGoogle

Crea la tua TV Online gratuitamente

La tua TV On Air con Google+

La tua TV On Air con Google+

Google+ e sei in diretta su Youtube

Molte persone non hanno ancora compreso completamente Google+ bollandolo come una copia di Facebook, e di cui non c’è alcun bisogno.
Google+ però non è soltanto un luogo online in cui condividere stati e link ma anche una potentissima applicazione per la videochat, completamente gratuita e senza limitazioni.

Questa nuova funzionalità resa disponibile su scala globale ( Denominata Hangout On Air , o videoritrovi in diretta)  potrà aprire una serie di opportunità e,  sempre di più, mettere nelle mani di chiunque gli strumenti che fino a qualche anno fa erano solo a disposizione degli “old media” , infatti sara’ possibile videochiamare i parenti tramite webcam e microfono ed anche creare videoconferenze di livello professionale, in cui più persone si vedono tra loro e comunicano insieme.

La grande novità è che, dal videoritrovo di Google+, è possibile trasmettere video in diretta pubblicamente visibili da tutto il mondo. Questo significa che la piattaforma diventa un modo per creare una vera e propria trasmissione tv online, dove chiunque, senza spendere un soldo e, solo munito di computer, webcam e microfono, può aprire un canale tv via web.

Ogni trasmissione pubblica, ed ogni videoritrovo in diretta, potra’ essere visto da tutti su Youtube, non solo dagli iscritti su Google+.

Il videoritrovo pubblico diventa quindi un canale online visibile dal vivo in diretta su Youtube, da tutti, come se fosse un normale video.

Ovviamente, essendo una novità non da poco in termini di risorse da utilizzare ed implementare, sarà resa disponibile a tutti pian piano, e magari non sarà immediatamente impeccabile: quindi, se per caso non la vedi ancora disponibile non preoccuparti, si tratta soltanto di avere un po’ di pazienza e poi potrai anche tu trasmettere i tuoi show in diretta.

Per trasmettere in diretta via internet ed essere visibile in streaming su Youtube bisogna essere maggiorenni, per potersi iscrivere, ed accedere cosi’ a Google+ , con un account Google o Gmail ed avviare un videoritrovo premendo il pulsante Evento.
Nella pagina di configurazione del videoritrovo bisognera’ impostare la visibilità pubblica, dargli un titolo, un orario e poi barrare la voce Hangouts/evento online all’interno delle OpzioniEvento/Avanzate.

Ovviamente bisognera’ anche effettuare l’accesso su Youtube (con lo stesso account Google) ed accettare i termini di utilizzo.
La prima volta, potrebbe venir richiesto di abilitare la verifica dell’account Google in due passaggi confermando il proprio numero di cellulare (cosa questa che consiglio a tutti coloro che usano Gmail o altri servizi Google per evitare furti e problemi di sicurezza).
La conferma del numero di cellulare permette anche di eliminare il limite dei video caricabili su Youtube consentendo quindi di trasmettere dal vivo senza intoppi.

Dopo l’accesso al videoritrovo pubblico, ancora non sarete online, e visibili da tutto il mondo, fino a che non avrete premuto il tasto di inizio trasmissione “Partecipa all’ Hangouts“.
Prima di trasmettere, si può sistemare l’inquadratura, l’aspetto e preparare la trasmissione tv condividendo il link per la visione sui social network, su Facebook, su Twitter o sul proprio blog, inoltre sono disponibili diverse app che aggiungono effetti od utility come fotoritocco e molto altro.

Il video diventa pubblicamente visibile, dal vivo, sul proprio canale Youtube, inoltre e’ possibile incorporare il video in una pagina web come si può fare per qualsiasi video Youtube, tramite la funzione Embed.

Quando la trasmissione sara’ iniziata, si potrà vedere quante persone stanno guardando in diretta l’evento o il videoritrovo e vedere i loro messaggi nella chat.
Inoltre, con un livello massimo di interattività, chi sta guardando può anche farsi vedere o ascoltare, come se si fosse in videoconferenza.
Quando finisce la diretta, quanto trasmesso potra’ essere registrato e ripubblicato su Youtube e su Google+ per una visione successiva.
Tutto questo è chiaramente spiegato nel video introduttivo ai Google + HangOuts on Air.

Per cercare, vedere e partecipare alle trasmissioni dal vivo, si deve andare nella sezione dei videoritrovi di Google+ (https://plus.google.com/s/is/hangouts).
Google+ diventa quindi uno dei siti per Creare online un canale Web-TV con streaming da webcam come i famosi Justin TV, UStream e LiveStreaming.

 

#GooglePlusLiveStreaming

La Pivacy dei Processi

Privacy dei Processi

Privacy dei Processi

Nella maggior parte dei sistemi GNU/Linux e’ consentito ad ogni utente di visualizzare i processi in esecuzione nel dato momento (real time) sul computer, tutti i processi…, utilizzando tool quali htop, glances etc. Questo puo’ rappresentare pero’ un problema dal punto di vista della privacy, in particolar modo li dove i pc vengono utilizzati in modalita’ multiutente (come ad esempio i server) , visto che altri utenti potrebbero sapere, senza alcuno sforzo, quali programmi stiamo eseguendo, in qualsiasi momento.

Questo comportamento del sistema per fortuna puo’ essere modificato a patto pero’ di disporre di un kernel superiore alla versione 3.2 (per sapere qual’e’ la versione attualmente installata sulla vostra macchina utilizzate il comando ” uname -a ” ). Infatti da questa versione in avanti e’ presente una specifica opzione per il comando mount, da passargli quando viene attivato il file system virtuale /proc , che agisce proprio sulla visibilita’ dei vari processi.

L’opzione in questione si chiama hide-pid (ossia nascondi il pid) e puo’ assumerre tre valori
0, 1, e 2.
Il valore 0 imposta il comportamento normale di visualizzazione senza limiti,
Il valore rende impossibile l’accesso alle cartelle dei processi che non appartengono all’utente attualmente utilizzato,
Il valore definisce invece il livello piu’ restrittivo, quindi le cartelle dei processi altrui verranno nascoste e non si potra’ quindi ne accedervi, ne sapere nulla del loro contenuto compresa la loro esistenza.

Pera ttivare tale funzione bastera’ utilizzare il comando mount con il parametro aggiunto “hidepid” :

esempio

# sudo mount - o remount,rw,hidepid=2 /proc

…dopo aver dato invio ed inserita la password dell’amministratore di sistema, il livello di massima privacy sara’ stato impostato. Chiaramente per l’utente  root tali limitazioni non valgono.

Per rendere definitive le modifiche sopra testate si dovra’ editare il file /etc/fstab , ed aggiungere, nella riga relativa al file system /proc, l’opzione hidepid che meglio si adatta alle nostre esigenze.

 

#HidepidKernelPrivacy