open source - CrismerLaPignola.it

Archive

Posts Tagged ‘open source’

Lo sviluppo open source come nuova opportunità a costruire il tuo profilo professionale: dove guardare, cosa imparare.

November 28th, 2011 1 comment

Programatori Free Open Source

Fino a pochi anni fa il termine Open Source era legato al mondo linux e alle piccole community di sviluppatori che con grandi sforzi e in completa autogestione cercavano di diffondere non solo il loro software ma anche i vantaggi di un nuovo modo di fornire servizi.
Oggi a distanza di pochi anni la diffusione di software open source ha avuto una crescita esponenziale al punto da renderlo a tutti gli effetti competitivo e non solo, ponendolo al centro dell’attenzione delle grandi multinazionali che molto spesso sostengono le community o addirittura hanno acquisito l’intero know how.

Pensiamo ad azende con nomi di un certo calibro come Novell, Oracle, Google e la stessa Microsoft che da qualche temmpo ha iniziato a mettere a disposizione degli sviluppatori un’ambiente di sviluppo ricco di strumenti con licenza open.
Read more…

Esplorando il software che sta alla base di facebook (Ultima parte)

February 3rd, 2011 No comments

 

Esplorando il Software di Facebook

Altri aspetti che aiutano Facebook a lavorare  meglio

In questa serie di articoli abbiamo parlato di alcuni dei software che compongono il sistema di Facebook  e lo aiutano nell’erogare un servizio sempre più performante. Ma un tale sistema che prevede una movimentazione di grandi dimensioni di dati è pur sempre un compito complesso, per cui abbiamo pensato di elencare un paio di cose in più che Facebook fa per mantenere il suo servizio integro e privo di intoppi.

1) Rilasci graduali

Facebook ha un sistema definito Gatekeeper che consente di eseguire codice diverso per diversi gruppi di utenti (si introducono fondamentalmente diverse condizioni nella base di codice). Ciò consente al team di sviluppo di Facebook di effettuare rilasci graduali di nuove funzionalità, come test A / B, attivare alcune funzionalità solo per i dipendenti Facebook, ecc.

Gatekeeper permette anche di fare qualcosa che si chiama Facebook “lancia oscura”, che è quello di attivare gli elementi di una certa caratteristica dietro le quinte prima che vengano messe on line (in praica senza che gli utenti se nè accorgano in quanto non ci saranno comunque elementi corrispondenti UI).
Questo agisce come un test di stress del mondo reale e consente di esporre i colli di bottiglia e altri settori problematici prima che una funzione è ufficialmente lanciata. Dark è fato solitamente ogni due settimane prima del lancio effettivo.

2) Profilink del Sistema Live

Facebook segue con attenzione i suoi sistemi; è abbastanza interessante che monitora anche le prestazioni di ogni singola funzione PHP in ambiente di produzione live. Questa profilazione del contesto live PHP viene fatto utilizzando uno strumento open source chiamato XHProf.

3) Disattivazione graduale di performance aggiunte

Se Facebook si imbatte in problemi di prestazioni, ci sono un numero elevato di livelli che lo lascia a poco a poco disabilitare funzioni meno importanti per migliorare le prestazioni delle funzionalità del Core di Facebook.

4) Le cose che non ho citato

Non ho approfondito molto la parte hardware in questi articoli, ma, naturalmente,  è anche questo un aspetto importante quando si tratta discalabilità.

Ad esempio, come molti altri siti che gestiscono enormi quantità di dati, Facebook utilizza un CDN per aiutare a servire i contenuti statici.
Poi naturalmente c’è un enorme centro dati che Facebook sta costruendo in Oregon per migliorarel a scalabilità con i server.
E a parte i software che ho già accennato, vi è naturalmente una quantità elevata di altri software coinvolti in tutto il sistema di Facbook.
Tuttavia, spero di essere stato in grado di evidenziare i software più importanti e le scelte fatte da Facebook, sopratutto spero che questi aspetti possano essere di aiuto a tutti coloro che ogni gkiorni devono confrontarsi con grossi sistemi e che a loro volta si trovano a prendere delle decisioni tecnologiche spesso non facili.

…Infine…Facebook e l’open souce

Non posso completare questo articolo senza menzionare quanto Facebook sia amico e ha ‘sposato’ l’open source. O forse si dovrebbe dire, “ama”.

Non solo Facebook ha utilizzato (e contribuendo al suo sviluppo) il software open source come Linux, Memcached, MySQL, Hadoop, e molti altri, ma ha anche reso molto del suo software sviluppato internamente disponibile come open source.

Esempi di progetti open source che provenivano da Facebook includono HipHop, Cassandra, Thrift e Scribe.
Facebook ha anche open-source Tornado, una rete ad alte prestazioni quadro server sviluppato dal team di FriendFeed (che Facebook ha acquistato nel mese di agosto 2009).

(Un elenco di software open source che è coinvolto con Facebook si possono trovare nella pagina di Facebook Open Source).

Un cordiale saluto.

ESPLORANDO IL SOFTWARE CHE STA’ ALLA BASE DI FACEBOOK (II PARTE)

October 16th, 2010 2 comments

Haystack

http://www.facebook.com/note.php?note_id=76191543919

E’ un photo storage ad alte prestazioni, (sostanzialmente, Haystack è uno strmento per lo storing, non solo per grossi quantitativi di foto ma di diverse tipologie
di files).
Questo strumento svolge un’enorme lavoro; ci sono più di 20 milioni di foto caricate su Facebook, e ciascuna di esse è salvata in quattro differenti risoluzini, quindi

arriaviamo ad avere più di 80 milioni di foto. E non si tratta solo di essere in grado di gestire miliardi di foto, le prestazioni sono critiche.
Come menzionato in precedenza, Facebook serve circa 1.2 milioni di foto per secondo, un numero che non include immagini servite da Facebook’s CDN.
Un numero davvero impressionante.

BigPipe

http://www.facebook.com/notes/facebook-engineering/bigpipe-pipelining-web-pages-for-high-performance/389414033919

BigPipe è una pagina Web dinamica al servizio del sistema che Facebook si è sviluppato in casa. Facebook lo usa per servire ciascuna pagina web in sezzioni chiamate “pagelets” per ottimizzare le performance.

Cassandra

http://cassandra.apache.org/

Cassandra è un sistema di storage distribuito senza single point of failure.  Si tratta di uno dei ‘bambini manifesto’ per il movimento NoSQL
ed è stato reso open source (è anche diventato un progetto Apache). Facebook lo usa per la sua Posta in arrivo.
Oltre a Facebook, altri servizi utilizzano questo oggetto, per esempio Digg.  stiamo anche considerando il suo utilizzo con Pingdom.

Scribe

http://github.com/facebook/scribe

Scribe è un sistema flessibile di logging che Facebook utilizza internamente. E’ stato concepito per gestire i logging e automaticamente gestire nuove
categorie di logging dato che Facebook nè gestisce a centinaia.

Hadoop and Hive

http://hadoop.apache.org/

Hadoop e’ un open source map-reduce che fa il possibile per migliorare le performance di calcolo su masse di dati. Facebook loutilizza per ‘data analisys’ (e come sappiamo, Facebook gestisce quantitativi esagerati di dati).
Hive è un oggetto che rende possibile l’utilizzo di query SQL per Hadoop, rendendo altresì più user friendly l’utilizzo per i non programmatori.

Thrift

http://incubator.apache.org/thrift/

Facebook utilizza diversi linguaggi per implemetare i vari servizi presenti nel sistema.
PHP è utilizzato per il front-end,  Erlang è usato per chat, Java e C + + sono utilizzati anche in diversi punti (e forse anche altri linguaggi).
Thrift è un framework sviluppato internamente ‘cross-language’ che lega tutte questi linguaggi insieme, rendendo possibile lo scambio di informazioni tra di loro.
Ciò ha reso molto più facile per Facebook mantenere il suo sviluppo multi-linguaggio.

Varnish

http://varnish-cache.org/

E’ un acceleratore HTTP che può agire come un sistema di bilanciamento del carico e anche il contenuto della cache che possono poi essere servita alla velocità della luce. Facebook utilizza Varnish per servire foto, immagini del profilo, la gestione di miliardi di richieste ogni giorno ecc.
Come quasi tutto ciò che Facebook usa Varnish è open source…. [continua]

La prossima puntata prenderemo in cosiderazione ‘altri aspetti che aiutano Facebook a funzionare agevolmente.

Categories: Internet Tags: ,

ESPLORANDO IL SOFTWARE CHE STA’ ALLA BASE DI FACEBOOK (I PARTE)

…traduzione dell’articolo “Exploring the software behind Facebook, the world’s largest site”..

La maggior parte degli approcci tradizionali di web server risultano impraticabili per Facebook che ormai per le sue dimensioni e caratteristiche necessità di ‘attenzione particoloare‘.
Gli ingegneri lavorano constantemente affinchè Facebook continui ad erogare ai suoi utenti un servizio veloce, fruibile e sicuro; e non è un’impresa facile dati i numeri che girano intorno a questo ormai famosissimo Social Network.

Prima di addentrarci in alcuni significativi dettagli vediamo quali sono questi numeri a dir poco incredibili:

  1. Facebook server 570 milioni di pagine viste ogni mese
  2. Ci sono un quantitativo di foto su Facebook il cui totale supera tutti i siti di raccolta foto come Filckr..
  3. Più di 3 milioni di foto vengono caricate mensilmente.
  4. Il sistema di Facbook serve più di 1.2 milioni di foto al secondo. Questi dati non includono le immagini servite dal CDN di Facebook.
  5. Più di 25 milioni di contenuti (aggiornamenti, commenti ecc.) vengono condivisi ogni giorno.
  6. Facebook ha più di 30.000 server, e questo è un dato dell’anno scorso!


IL SOFTWARE CHE SOSTIENE FACEBOOK NEL SUO LAVORO

Nel corso del tempo Facebook è dovuto cambiare ed estendere le sue operazione e incorporare nel suo ‘motore’ sempre più elementi e servizi.
Facciamo alcuni esempi:

  • Facebook utilizza come linguaggio di programmazione il PHP, ma è stato necessario costruire un compilatore capace di introdurre codice nativo nel suo web
    server, così da migliorare le performance;
  • Facebook utilizza Linux come sistema operativo, ma è opportunamente ottimizzato per raggiungere i suoi target (sopratutto in termini di networking)
  • Facebook utilizza Mysql come data base server ma si avvale di ulteriori software per supportare le performance di accesso alle informazioni (in altre parole l’uso di Memcasched risulta fondamentale per rendere veloci gli accessi agli storage a milioni di utenti).

Ma passiamo ai dettagli e andiamo a presentare alcuni dei più importanti software di cui si avvale Facebook per fornire servizi sempre più veloci,
con prestazioni avanzate e tecnologici.

In questa prima parte parleremo di Memcached.

MEMCACHED

Memcashed (http://memcached.org/) è al momento uno dei più famosi software che supportano applicazioni web.
E’ in sostanza un sistema di memory cashing distribuito del quale Facebook, ma non solo lui, utilizza come cashing layer tra i web server e i Db server MySql
(questo per ovviare all’accesso al db che solitamente non è mai velocissimo).
Nel corso degli anni, Facebook ha fatto un sacco di ottimizzazioni per il software Memcasched come ad esempio ottimizzare il network stack solo per menzionarne uno.

Nella prossima puntata parleremo di HipHop per PHP e Haystack, BigPipe e Cassandra.

Categories: Internet Tags: , ,

WUBI – L’installer di Ubuntu per windows

December 16th, 2009 No comments
Wubi - L'installer di Ubuntu per Windows

Wubi - L'installer di Ubuntu per Windows

Wubi è l’installer ufficiale di Ubunto per gli utenti windows i quali grazie a questo tool hanno la possibilità di installare questa distribuzione in modo semplice e guidata.
Grazie a questo software open è infatti possibile installare la distribuzione GNU/Linux Ubuntu da Windows come se fosse una qualsiasi applicazione.

Il problema che incontrano i neofiti

Per un utente che si avvicina a Linux la prima volta le modalità con cui installare un sistema possono essere poco chiare.
Un dubbio abbastanza comune riguarda la scelta di installare in multiboot, ovvero con la possibilità di scegliere il sistema operativo da avviare al momento del boot di sistema, oppure l’opportunità di dedicare un pc esclusivamente a Linux.
Il più delle volte gli utenti poco esperti preferiscono sacrificare un pc, magari il vecchio desktop, ed effettuare i propri esperimenti su tale macchina.
La preoccupazione comune nel realizzare un sistema multiboot è condivisibile, infatti, qualora qualche operazione di configurazione non dovesse andare a buon fine si potrebbe correre qualche rischio.
Nel migliore dei casi si perderebbe qualche ora, magari di sonno, cercando informazioni online sulle modalità di ripristino del bootloader; in condizioni peggiori, a fronte di errori gravi dell’utente stesso, si potrebbero anche perdere dei dati per un’erronea configurazione delle partizioni.

Il Tool
Wubi non modifica il sistema e non crea partizioni per ospitare il nuovo sistema operativo. Difatti tutto si basa su un disco virtuale creato all’interno dello stesso file system di Windows. Il resto dell’hardware non è emulato come in una virtual machine e questo permette ad esempio di poter usufruire di accelerazione 3D.

L’unica modifica apportata al sistema è un aggiornamento del bootloader in modo che all’avvio del PC l’utente possa scegliere se avviare Windows oppure Ubuntu; in pratica al bootloader originale fornito da Windows viene ad affiancarsi Grub come bootloader secondario.
L’installazione che si ottiene è un set-up di dual boot identico a quello di una installazione di Ubuntu da CD, con possibilità di salvare i cambiamenti, accedere ad i files di Windows, installare nuovo software ed aggiornare il sistema operativo.
La rimozione del sistema operativo è anch’essa facilitata, infatti avviene tramite il pannello di Installazione Applicazioni di Microsoft Windows come se fosse una normale applicazione.
Il programma è nato come un progetto indipendente guidato da Agostino Russo.  La prima versione è stata la 7.04; successivamente Wubi è stato incorporato in Ubuntu 8.04 diventando un installer ufficiale di Ubuntu.
I programmatori stanno lavorando ad un programma che permetta agli utenti di spostare una installazione di Wubi da disco virtuale ad una partizione dedicata.

Di seguito vediamo i principali vantaggi e (che non mancano mai) limitazioni o svantaggi nell’utilizzare questo software.

Vantaggi

  • Non richiede di masterizzare un CD. Wubi scarica automaticamente l’ISO file necessario. Tuttavia se un CD è disponibile, verrà rilevato automaticamente in fase di installazione.
  • Non modifica le partizioni del computer, non sostituisce il bootloader e non sovrascrive il MBR.
  • Può essere disinstallato come un normale applicativo dal pannello di controllo di Windows.
  • A differenza del live CD, il file system è accessibile in lettura e scrittura, quindi è possibile salvare i cambiamenti. Inoltre, utilizzando il disco rigido invece del CD, le operazioni di lettura risultano velocizzate.

Vantaggi rispetto ad una macchina virtuale…

Ci sono dei vantaggi anche rispetto all’utilizzo di una virtual machine, in quanto vi è pieno accesso a tutto l’hardware, quindi le prestazioni sono migliori ed è anche possibile usufruire del desktop 3D di Ubuntu, Compiz.

Limitazioni

  • L’attuale implementazione, benché estremamente comoda per un novizio, riduce leggermente le prestazioni di I/O e non permette di ibernare il PC. In particolare, poiché il disco virtuale risiede all’interno del file system di Windows, qualora quest’ultimo fosse eccessivamente frammentato le performance di Ubuntu ne risentirebbero.
  • Inoltre non è al momento disponibile in Linux un programma per effettuare la riparazione di NTFS. Qualora NTFS dovesse diventare corrotto (cosa che può capitare in seguito ad una perdita improvvisa dell’alimentazione), diventa necessario riavviare Windows ed utilizzare chkdsk prima di poter avviare nuovamente Ubuntu.
  • I programmi che permettono di allargare il disco virtuale o di migrare Wubi su partizione dedicata sono ancora in fase sperimentale.

Svantaggi rispetto ad una macchina virtuale…

  • Un VM può essere avviato all’interno di Windows mentre con Wubi si ottiene un menu di avvio in modalità dual boot (simile a quello di una installazione da CD), per cui è necessario riavviare il computer per poter selezionare il sistema operativo.
  • Un VM utilizza un hardware emulato che non presenta problemi di drivers, mentre Wubi utilizza l’hardware fisico, che è un metodo molto più efficiente ma che, per funzionare, ha bisogno che l’hardware stesso sia ben supportato da Ubuntu/Linux (il problema non è specifico di Wubi).

Avviando Ubuntu si dovrà effettuare il login con le credenziali scelte in Wubi e,  successivamente,  si potrà utilizzare il sistema o procedere a una configurazione personalizzata. L’installazione di default provvede già a montare le partizioni Microsoft Windows e tali risorse saranno accessibili direttamente dal desktop….

Per scaricare l’ultima versione aggiornata andate al sito ufficiale http://wubi-installer.org/

Related Posts with Thumbnails
Categories: Software Tags: , , ,
Creative Commons License
Questo/a opera è pubblicato sotto una Licenza Creative Commons