Novedades Social Media

Facebook reescribe su PHP con HipHop

Logo Facebook CaraHace poco saltó la noticia de que Facebook planeaba lanzar un compilador JIT para PHP, lo cual supone un enorme paso para hacer más rápido el tiempo de ejecución de PHP (y las páginas y aplicaciones basadas en este código) acercando un poco más el lenguaje interpretado (esto es, el que resulta más legible para las personas) a los unos y ceros básicos que leen las máquinas.

Ahora sabemos que el tiempo de ejecución de PHP se ha reescrito añadiendo un paso adicional: el PHP se traduce a C++ (un lenguaje más legible para máquinas), que después se compila con g++. Este proyecto, llamado HipHop, se ha estado desarrollando en un gran secreto en Facebook los dos últimos años, y su código acaba de abrirse.

El técnico de Facebook Haiping Zhao escribe “Con HipHop hemos reducido el uso de CPU en nuestros servidores Web por término medio en un 50% aproximadamente, dependiendo de la página. Menos CPU son menos servidores, lo que significa menos gastos generales”.

Estamos seguros de que esto es una buena noticia para el nuevo centro de datos de Facebook, que sigue en construcción.

“HipHop ejecuta el código fuente de un modo semánticamente equivalente”, continúa explicando Zhao, “y sacrifica algunas de las funciones menos utilizadas, como eval() a cambio de un mejor rendimiento”.

También comenta que aunque los lenguajes interpretados como PHP, Ruby y Python, (lenguajes que, en general, dominan la red de aplicaciones y el sitio social que todos usamos hoy en día) permiten dar grandes pasos en cuanto a productividad para los desarrolladores, también resultan menos eficientes y a menudo son simplemente más lentos en tiempo de ejecución. Para un sitio enorme como Facebook, que cada vez crece más, esto podría haber supuesto problemas de escalabilidad a la larga.

En otras palabras, a Facebook le cuesta menos crear un tiempo de ejecución en PHP más rápido que comprar todos los servidores que necesitaría para mantener a cientos de millones de usuarios sin un tiempo de ejecución más rápido.

“Escalar Facebook es especialmente complicado porque casi todas las páginas vistas son de un usuario registrado con una experiencia personalizada”, escribe Zhao. “Cuando vemos nuestra página de inicio tenemos que buscar a todos nuestros amigos, hacer una consulta de sus actualizaciones más relevantes (desde un servicio personalizado que hemos creado, llamado Multifeed), filtrar los resultados basándonos en nuestras opciones de privacidad, y después rellenar las historias con comentarios, fotos, “me gusta”, y todos los datos enriquecidos que a la gente le encantan de Facebook.” Todo esto en algo menos de un segundo.

“HipHop nos permite corregir la lógica que realiza el ensamblado de la página final en PHP y la itera rápidamente mientras que los servicios de back-end en C++, Erlang, Java o Python se ocupan del flujo de noticias, la búsqueda, el chat y otras partes fundamentales del sitio.”

Zhao señala que PHP y C++ comparten una sintaxis relativamente similar, aunque C++ es mucho menos exigente en cuanto a recursos del sistema. Aunque habría sido imposible escribir el código base a mano, Zhao ha estado probando a convertir programáticamente el PHP a C++ durante unos años. Según afirma, la idea se le ocurrió en un encuentro de programadores de Facebook,

La última noticia que tenemos vino tras comunicar por Twitter con el creador de PHP, Rasmus Lerdorf para preguntarle por su opinión sobre el rumor del compilador de PHP. Éste contestó: “Creo que HipHop es estupendo y sin duda ayudará a la pobre gente que está atrapada en una sopa de frameworks”. Sin embargo, también señalaba “HipHop, en páginas PHP más sencillas tipo plantilla probablemente no vaya a ayudarnos mucho. No va a hacer que las queries de SQL sean más rápidas”.

Original: Jolie O’Dell

Sobre el autor de este artículo

Editorial RWWES