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. It is sometimes known by its full name HipHop Virtual Machine and has a just-in-time compiler (JIT). HHVM should speed up page viewing for logged-in users and also speed up the saving of edited pages for all users.

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. As a result, popular websites such as Google and Facebook invest heavily in site performance initiatives, and partially as a result, remain popular. Formerly popular sites (such as Friendster) suffered due to lack of attention to these issues. Wikipedia and its sister projects must remain usable and responsive in order for the movement to sustain its mission.

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. We're quite confident that this will result in big performance improvements on our sites as well.

¿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. The overhead of running this PHP code every time someone views a page necessitates the usage of caching servers, running software such as Varnish, which cache the HTML generated by running this PHP, so that the PHP does not have to run every time a page is viewed. These caches only serve users that are not logged in. Actions which are not affected by the cache, and therefore are affected by the run time of PHP code, include:
 * Cualquier página que vea mientras está conectado.
 * Páginas guardadas que hayas editado, ya sea que hayas iniciado sesión o no.

Therefore, any action we can take to reduce the time it takes for MediaWiki's PHP code will therefore also decrease the loading times of our site for all of our logged in users and anyone who edits anonymously.
 * Any page you view while logged in.
 * Saving pages that you've edited, whether you are logged in or not.

HipHop fue escrito para ser un intérprete de PHP más rápido y eficiente que nuestro intérprete actual (Zend). Esperamos que al implementar HipHop como un reemplazo para Zend, nuestros usuarios noten un aumento tangible en el rendimiento de nuestros sitios.

¿Cómo afecta nuestro trabajo en HipHop a los desarrolladores de MediaWiki?
En nuestro rápido inicio del trabajo inicial, que se que se debe haber terminado a fines de marzo de 2014, esperamos hacerlo para que cualquiera pueda elegir usar HipHop en Beta Cluster en lugar de Zend. Esto será sobre una base totalmente optativa que puede ser deshabilitada en cualquier momento. Esto permitirá que el equipo de MediaWiki Core evalúe el rendimiento de HipHop contra el de Zend directamente utilizando nuestra infraestructura de prueba actual, en lugar de estimar los aumentos de rendimiento teóricos. También creará un entorno de desarrollo que nos ayudará a ver cuánto trabajo se necesita para hacer que HipHop sea compatible con MediaWiki, y como tal, nos permite hacer una estimación de cuánto tiempo nos tomará hacer que HipHop se mantenga en producción, como un reemplazo completo de 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.

Para otros desarrolladores de MediaWiki, la consecuencia de que HipHop se implemente de esta manera es que si utilizan Beta Cluster como un entorno de prueba, les resultará trivial probar cómo funcionan sus parches utilizando HipHop en lugar de Zend, si así lo desean. Sin embargo, para minimizar la interrupción de nuestro trabajo, la naturaleza opt-in de la infraestructura permitirá que los desarrolladores puedan continuar desarrollando una actitud totalmente independiente de la futura migración a HipHop si así lo desean. 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.

Véase también

 * HHVM/Vagrant: Configurando HHVM en
 * Ori presentando en @Scale sobre la migración a HHVM
 * HHVM en producción: lo que eso significa para los desarrolladores de Wikimedia
 * HHVM en producción: lo que eso significa para los desarrolladores de Wikimedia