HHVM/es


 * Véase HHVM/Acerca de para obtener una descripción más breve y la publicación del blog de diciembre de 2014 sobre "Cómo hicimos la edición de Wikipedia dos veces más rápido" para obtener más información sobre HHVM, sus beneficios y una mirada retrospectiva al trabajo de implementación.

HHVM es una herramienta de interpretación de PHP (concretamente una máquina virtual que compila el código de bytes de PHP a las instrucciones nativas en tiempo de ejecución) que se implementó en los servidores de Wikimedia en 2014, lo que reduce el tiempo de carga de: cualquier página que vea mientras está conectado, y para guardar las páginas que hayas editado tanto como si hubieras iniciado sesión o no.

Hoja de ruta
HHVM es una nueva forma para que los sitios web ejecuten MediaWiki (escrito en PHP). A veces se le conoce por su nombre completo HipHop Virtual Machine (en inglés Máquina Virtual HipHop), y tiene un compilador en tiempo de ejecución (JIT). HHVM debe acelerar la visualización de la página para los usuarios que hayan iniciado sesión y también acelerar el guardado de páginas editadas para todos los usuarios.

Esta página trata sobre el trabajo patrocinado por Wikimedia sobre el soporte de HipHop en MediaWiki y su implementación en los wikis de producción de Wikimedia.

Históricamente, el compilador HipHop fue un proyecto de Facebook que involucró el compilamiento del código PHP en C++ con el fin de acelerar el lenguaje. Desde entonces, Facebook ha abandonado este proyecto, y ahora sus esfuerzos de desarrollo se centran en HHVM en su lugar.

Este es el plan general para implementar HHVM en el clúster de producción en 2014:


 * Implementación en Beta Cluster (trabajo actualmente en curso, en paralelo con otro trabajo) ✅
 * Semana del 21 de julio: el despliegue del funcionamiento de trabajo en la producción ✅
 * Implementar en el servidor de aplicaciones test.wikipedia.org ✅
 * Implementar el módulo Varnish permitiendo la implementación parcial en una fracción de los servidores de aplicaciones✅
 * Implementación limitada a un pequeño número de servidores de aplicaciones ✅
 * Acelerar la implementación a más servidores de aplicaciones hasta que la mayoría de los servidores utilicen HHVM✅
 * Implementar al resto de servicios✅

Trabajo de HHVM
En Phabricator: Open tasks, All tasks.

Justificación
Es un fenómeno bien estudiado que incluso pequeños retrasos en el tiempo de respuesta (por ejemplo, la mitad de un segundo) pueden dar lugar a fuertes disminuciones en la retención de usuarios de la web. Como resultado, los sitios web populares como Google y Facebook invierten mucho en iniciativas de rendimiento del sitio, y como resultado, siguen siendo populares. Antiguamente los sitios populares (como Friendster) sufrían debido a la falta de atención a estos problemas. Wikipedia y sus proyectos hermanos deben seguir siendo utilizables y receptivos para que el movimiento pueda sostener su misión.

Facebook, como gran usuario de PHP, ha reconocido este problema e invirtió mucho en una solución: HHVM, una máquina virtual que compila el código de bytes de PHP con instrucciones nativas en tiempo de ejecución, la misma estrategia utilizada por Java y C# para lograr sus ventajas de velocidad. Estamos bastante seguros de que esto también dará como resultado grandes mejoras de rendimiento en nuestros sitios.

¿Qué hace HipHop por nuestros usuarios finales?
MediaWiki está escrito en PHP, un lenguaje que se interpreta en tiempo de ejecución. La sobrecarga de ejecutar este código PHP cada vez que alguien visita una página requiere el uso de servidores de almacenamiento en caché, ejecutando software como Varnish, que almacena el HTML generado al ejecutar este PHP, de modo que PHP no tiene que ejecutarse cada vez que se visita una página. Estos cachés solo sirven a los usuarios que no han iniciado sesión. Las acciones que no se ven afectadas por el caché, y por lo tanto se ven afectadas por el tiempo de ejecución del código PHP, incluyen: Por lo tanto, cualquier acción que podamos tomar para reducir el tiempo que toma el código PHP de MediaWiki también disminuirá los tiempos de carga de nuestro sitio para todos nuestros usuarios registrados y cualquier persona que edite anónimamente.
 * Cualquier página que vea mientras está conectado.
 * Páginas guardadas que hayas editado, ya sea que hayas iniciado sesión o no.

HipHop was written to be a faster, more efficient PHP interpreter than our current interpreter (Zend). It is our hope that by implementing HipHop as a replacement for Zend, our users will notice a tangible increase in the performance of our sites.

How does our development work on HipHop affect MediaWiki developers?
In our initial sprint of work, due to be finished at the end of March 2014, we hope to make it so that anyone can elect to use HipHop on Beta Cluster instead of Zend. This will be on a totally opt-in basis which can be disabled at any time. This will allow the MediaWiki Core team to gauge the performance of HipHop against that of Zend directly using our current test infrastructure, instead of just estimating theoretical performance increases. It will also create a development environment that will help us see how much work is needed to make HipHop compatible with MediaWiki, and as such let us create an estimate for how long it will take us to get HipHop live on production as a full replacement for Zend.

For other MediaWiki developers, the consequence of HipHop being deployed in this manner is that if they are using the Beta Cluster as a test environment, they will find it trivial to test how their patches perform using HipHop instead of Zend if they wish to. However, to minimise the disruption of our work, the opt-in nature of the infrastructure will allow developers will be able to continue to develop totally agnostic of the future HipHop migration if they wish to do so.