L'architettura di Wikipedia nel dettaglio

Wikipedia Logo Ho sempre letto con interesse (e spesso ammirazione) i whitepaper che descrivono le architetture delle applicazioni web, ovviamente ammesso e non concesso che queste applicazioni suscitino un certo interesse.
Senz'altro a nessuno verrebbe in mente di chiedermi le caratteristiche del sito www.simonecarletti.com tuttavia progetti come FeedBurner, WikiPedia, Google e suoi prodotti hanno sempre il loro fascino.

Era dal tempo del post Quanti dati indicizza Google?, quindi oltre un anno fa, che non mi capitava di sgranocchiare altrettanto impazientemente un whitepaper su un'architettura degna di interesse.
Grazie ad un vecchio post di Kevin Burton scopro che Domas Mituzas, che lavora per MySQL AB e Wikipedia, ha pubblicato un interessante workbook sull'architettura interna dei server della famosa enciclopedia. Sempre dal post di Domas scopro che un altro interessante whitepaper pubblicato illustra l'architettura di WikiMedia.

Per i più curiosi che non disdegnano qualche pillola ma che non amano dedicarsi alla lettura di questi documenti, ecco alcune informazioni.

Architettura LAMP

Wikipedia LAMP

Wikipedia si basa su una architettura LAMP, ovvero

  • Sistema operativo Linux, normalmente Fedora o Ubuntu
  • WebServer Apache
  • Database MySQL
  • Linguaggio di programmazione PHP, versione 5 (requisito minimo della piattaforma MediaWiki)

La piattaforma è MediaWiki, progettata e sviluppata dalla WikiMedia Foundation che, per intenderci, è la stessa fondazione alla base di WikiPedia.
Per accelerare i tempi di caricamento e gestire al meglio il carico, subentrano alcuni componenti di caching e distribuzione come

  • Il proxy SQUID
  • Il webserver lighttpd per la gestione dei file statici
  • Memcached per il caching di alcune risorse ed elaborazioni

Il documento prosegue poi presentando nel dettaglio l'architettura del sistema di caching e del database, fornendo utili informazioni su come ottimizzare ad esempio le query con appositi indici.
Il sistema di ricerca si basa su un porting di Lucene (che nativamente è scritto in Java) mentre il bilanciamento del carico è affidato a LVS (Linux Virtual Service).

Wikipedia Environment

Il whitepaper conta 30 pagine di dettagli tecnici ed utili informazioni, soprattutto per chi si prepara alla creazione di un progetto che dovrà presumibilmente sostenere carichi non indifferenti. Un'ottima lettura, non certo da ombrellone però.