miércoles, 27 de octubre de 2010

Como funciona (a nivel técnico) Wikipedia

La Wikipedia; La madre de la madre de todas las enciclopedias. Todo el conocimiento humano reunído en un único compendio. No hay nada que no esté contemplado en ella, no hay nada que no sepa, y si algo no sabe es por que nadie escribió al respecto todavía (podrías colaborar).

Wikipedia necesita para subsistir alrededor de 8 millones de dólares al año, que por mucho que parezca se recauda sin mayores inconvenientes todos los años con donaciones de los propios usuarios.

Toda la fundación Wikimedia cuenta únicamente con 9 empleados, el resto del trabajo lo hacen voluntarios ad-honorem. 9 empleados durante un año completo.

Estas 9 personas (mas todos los voluntarios) mantienen una infraestructura que alberga mas de 8 millones de artículospromediando, mantener cada artículo cuesta un dólar por artículo por año- escritos en cientos de idiomas diferentes.

Como cada artículo es modificado cada cierto tiempo por un lector esporádico y se guardan copias del artículo anterior hay mas de 110 millones de revisiones almacenadas, lo que la posiciona entre los 10 sitios con mas actividad en el mundo según Alexa. Crece a tal velocidad que duplica su cantidad de hardware, cantidad de visitas y ancho de banda consumido cada 6 meses aproximadamente.

¿Como funciona, como es que todo lo sabe y por que necesita 8 palos verdes para subsistir?

El monstruo por dentro:

Wikipedia.org recibe en promedio 30.000 peticiones HTTP por segundo en horas pico en los 3 datacenters que la alojan en todo el mundo (Tampa, Ámsterdam y Seúl), lo que se traduce en 3 Gigabits por segundo de ancho de banda de subida.

Todo el cascotazo lo aguantan 350 servidores repartidos en estos tres datacenters, que van desde Pentium 4 mono núcleo a Dual Xeon Quad core (8 cores en total) y que en promedio disponen de entre 8 y 16Gb de RAM. Administrado todo esto por 6 personas únicamente.

Todo el conjunto de servidores trabaja en modo clúster siendo el de Tampa el primario y los otros dos solamente de caché. El sistema operativo instalado es siempre Linux, se balancea la carga de los clústeres en función de la geo-localización del cliente, es decir, dependiendo de la ubicación de la persona sentada del otro lado del monitor navegando Wikipedia.

(Uno de los tantos Wikiservidores…)

El encargado de cachear Wikipedia no podía ser otro: Squid. En total hay 55 instancias de Squid repartidas en los servidores, que reciben cuando todo esta “tranquilito” un promedio de 1000 peticiones HTTP por segundo por servidor y 2500 en horas pico. Eso traducido en ancho de banda resulta ser entre 100 y 250 Megabits por segundo de subida por servidor y entre 14.000 y 32.000 conexiones TCP por segundo. ¡Una pavada!. Cada uno de los proxy servers tiene alrededor de 40Gb en su caché y 8Gb de RAM de los cuales 4Gb los usa exclusivamente Squid.

Toda la Wikipedia funciona gracias a software de código abierto, la plataforma que le da el nombre es MediaWiki, que está escrita en PHP y almacena información en bases de datos. En el caso de Wikipedia, toda la información se almacena en MySQL, en definitiva, la típica instalación LAMP pero con esteroides.

Wikipedia cuenta con alrededor de 125 servidores de aplicación y 15 servidores de bases de datos, todos dual-core y con entre 4 y 16Gb de RAM cada uno, está todo optimizado a mas no poder para consumir la menor cantidad posible de recursos separando las operaciones de lectura en ciertos servidores y las de escritura en otros, separando las operaciones que consumen CPU de las que no y las operaciones frecuentes de las que no, por servidor, además la cantidad de datos almacenados en cache varía en función de la hora del día y de la geolocalización del servidor.

Por otro lado, está el servidor de imágenes y contenido multimedia, que contiene 1.3 Terabytes de información en 4 millones de archivos almacenados, sirviendo 100 peticiones por segundo promedio. Hacer un backup de todo su contenido les toma aproximadamente dos semanas.

Eso es a modo de resumen, los que hay detrás de la Wikipedia, la que todo lo sabe. Toda la información anterior está basada en la presentación en ingles “Wikimedia architecture” por parte de Mark Bergsma, del Staff de Wikimedia y que encontré gracias a ocubom´s blog. Si les interesa profundizar, vean la presentación que hay muchísima información al respecto, los protocolos, la estructura de las bases de datos, los sistemas de backup, etc.

No hay comentarios: