Come funziona Liquida
Dietro ad un servizio come Liquida esiste un complesso mix di tecnologie software, risorse hardware e ingegno.
Fin dalla prima fase di progettazione si è deciso di prediligere linguaggi di programmazione e piattaforme opensource: i software rilasciati sotto licenze libere (GPL, ad esempio) e i linguaggi sviluppati da gruppi aperti offrono reali garanzie di efficienza e stabilità.
Per queste motivazioni, come potete leggere di seguito, si è optato per la combinazione LAMP: sistema operativo Linux, web server Apache, database MySQL e scripting sia Python, sia Php.
Liquida restituisce alla comunità di tecnici e programmatori il suo servizio di ricerca e navigazione della blogosfera e alcuni strumenti per blogger.
Vi raccontiamo qui di seguito il funzionamento – descritto a grandi linee – di questo portale, sperando che possiate, se siete dei tecnici, darci feedback e suggerimenti.
1. I blog entrano nella directory
I blog possono entrare nella nostra directory o in seguito ad una segnalazione, o direttamente per mano della redazione di Liquida.
In entrambi i casi, contestualmente all’approvazione, ogni blog riceve dallo staff dei punteggi che contribuiscono, tra le altre cose, a determinare il karma e il posizionamento fra i risultati delle ricerche.
Per queste operazioni lo staff utilizza un’interfaccia scritta in Php, eseguita su un web server Apache ed operante su un database di backend MySQL.
2. L’acquisizione dei nuovi contenuti via RSS
Periodicamente il sistema di Liquida scandaglia i blog presenti nella sua directory per accertarsi dell’esistenza di nuovi post. Questa operazione viene effettuata con un programma “sentinella” scritto in Python che viene eseguito contemporaneamente su macchine diverse.
Questa applicazione di retrieving degli RSS dei blog cerca di rilevare se il contenuto XML è rimasto invariato e non sono stati quindi pubblicati nuovi articoli agendo nel modo meno intrusivo possibile, ad esempio analizzando gli eventuali etags nell’header della risposta.
Solo in caso contrario richiede l’intero file RSS e lo salva nel database di backend MySQL.
3. La preparazione dei post
La parte più complessa del lavoro viene eseguita da un servizio – anche questo scritto in Python – che processa i nuovi articoli in entrata nell’archivio a partire dai feed RSS aggiornati forniti dal programma sentinella descritto nella fase precendente.
Questo servizio – eseguito in varie istanze (processi) e con una coda di elaborazione per evitare, in caso di problemi, l’effetto collo di bottiglia – è strutturato in qualche decina di stage che, in modo sequenziale, effettuano le operazioni più disparate.
Alcuni esempi di stage sono l’analisi della struttura XML del feed RSS (parsing), la verifica di quale post sia effettivamente già presente in archivio, il retrivieng (con una richiesta HTTP al relativo server) della pagina completa e delle immagini, l’analisi del template della pagina tramite euristiche, l’estrazione automatica dei tag utilizzando librerie opensource per il natural language processing, l’esclusione dei contenuti osceni. Il post, diventato una tabella hash chiave-valore, viene infine salvato nel database di backend di cui sopra.
4. L’indicizzazione dei dati
Per la ricerca nell’archivio di Liquida viene utilizzato il motore opensource Lucene a cui ci si interfaccia via Solr (eseguito da Apache Tomcat).
Un’applicazione Python, battezzata mysql2solr, estrae dal database MySQL le informazioni sui post, applica alcune logiche applicative ai dati e li passa a Solr/Lucene per l’indicizzazione.
Gli indici gestiti da Lucene, su cui è possibile effettuare ricerche con svariate chiavi (non solo l’ordine cronologico visualizzato nel frontend), sono tre: quello dei post, che restituisce gli articoli, le foto e le immagini che soddisfano i criteri di ricerca forniti, quello dei blog e quello dei tag, che fornisce i tag correlati al tag fornito come search key.
5. Il sito per il pubblico
Il frontend, attraverso il quale viene elargito al pubblico il servizio vero e proprio, è sviluppato in Php, il linguaggio di serverside scripting nato da menti israeliane e adesso gestito da Zend, utilizzando Codeigniter come framework Php e MooTools come framework Javascript.
Il sito si interfaccia direttamente con Solr / Lucene, che restituisce i dati in array serializzati facilmente rielaborabili dal Php, e non effettua alcuna query a MySQL, che viene utilizzato solo per il backend.
Questa applicazione Php, così come quella in Python descritta al punto 3, sfrutta come sistema di caching – per ottimizzare i tempi e le performance – Memcached.
Per quanto riguarda invece le pagine dei blog di Liquida (blog.liquida.it, magazine.liquida.it, bloggare.liquida.it,l’area FAQ) viene utilizzata la piattaforma opensource WordPress.
Lo sviluppo del codice è versionato – per ottimizzare il lavoro del team di sviluppo – con Subversion. L’editor utilizzato è Eclipse.
Le applicazioni descritte vengono eseguite su diversi server. Ogni servizio è ridondato su almeno due macchine ed il carico di lavoro viene distribuito con dei sistemi di bilanciamento.
-
francesco rizza -
complimenti per quello che LIQUIDA sta riuscendo a creare, per i suoi approfondimenti e per la possibilità che dà a tutti noi di confrontarci ed approfondire le informazioni
-
sabina barca -
grazie mille
-
web agency -
grazie per i consigli
-
fausto cerulli -
io mi avvicino per la prima volta a Liquida, mi incuriosisce, ma non riesco a capire il funzionamento: non so come essere ammesso con i miei articoli e le mie note, non avendo un mio blog-
-
witaliano -
vedo che ci sono molte possibità anzi moltissime mai il funzionamento delle quali è al momento un pò complicato.Col tempo spero di riuscirci.Sono curioso. Comunque grazie per tuuto il lavoro che fate.
Commenti (5)
scrivi un commento