Con la compilación de un sistema automatizado de supervisión y pruebas de rendimiento, el equipo de velocidad del sitio de Lowe's prueba las solicitudes de extracción en función de los presupuestos de rendimiento y evita que las regresiones de rendimiento pasen a producción.
Lowe's es un minorista de mejoras para el hogar de casi USD 90,000 millones que opera alrededor de 2,200 tiendas y emplea a más de 300,000 asociados. Con la compilación de un sistema de pruebas y supervisión automatizado que evita que las regresiones de rendimiento se implementen en producción, el equipo de velocidad del sitio de Lowe's pudo mejorar el rendimiento de su sitio web y ubicarse entre los sitios de venta minorista principales.
Problema
El objetivo del equipo de velocidad del sitio es hacer que el sitio de Lowe's sea uno de los sitios de comercio electrónico más rápidos en términos de rendimiento de carga de páginas. Antes de crear su sistema de supervisión y pruebas automatizadas, los desarrolladores del sitio web de Lowe no podían medir el rendimiento automáticamente en entornos de preproducción. Las herramientas existentes solo realizaban pruebas en el entorno de producción. Como resultado, se implementaron compilaciones inferiores en producción, lo que generó una mala experiencia del usuario. Estas compilaciones inferiores permanecerían en producción hasta que el equipo de velocidad del sitio las detectara y el autor las revirtiera.
Solución
El equipo de velocidad del sitio usó herramientas de código abierto para crear un sistema automatizado de pruebas y supervisión del rendimiento para entornos de preproducción. El sistema mide el rendimiento de cada solicitud de extracción (PR) y bloquea la PR para que no se envíe a producción si no cumple con el presupuesto de rendimiento y los criterios de métricas del equipo de velocidad del sitio. El sistema también mide el cumplimiento del SEO y de la ADA.
Impacto
En una muestra de 1 equipo durante 16 semanas que implementó 102 compilaciones, el sistema automatizado de pruebas y supervisión de rendimiento impidió que 32 compilaciones con un rendimiento inferior pasaran a producción.
Antes, el equipo de velocidad del sitio tardaba entre tres y cinco días en informar a los desarrolladores que habían enviado regresiones de rendimiento a producción. Ahora, el sistema informa automáticamente a los desarrolladores sobre los problemas de rendimiento cinco minutos después de que envían una solicitud de extracción en un entorno de preproducción.
La calidad del código mejora con el tiempo, como se mide por el hecho de que se marcan menos solicitudes de extracción por regresiones de rendimiento. El equipo de velocidad del sitio también está endureciendo gradualmente los presupuestos de administración para mejorar de forma continua la calidad del sitio.
En general, tener una propiedad clara del código problemático cambió la cultura de ingeniería. En lugar de hacer correcciones reactivas con resentimiento porque nunca estuvo claro quién introdujo los problemas, el equipo puede realizar optimizaciones proactivas con la atribución objetiva de la propiedad del código problemático.
Implementación
El núcleo de la app de administración de la velocidad del sitio (SSG) es Lighthouse CI. La app de SSG usa Lighthouse para validar y auditar el rendimiento de la página de cada solicitud de extracción.

La app de SSG hace que falle una compilación si no se alcanzan los objetivos de métricas y el presupuesto de rendimiento definidos por el equipo de velocidad del sitio. No solo aplica el rendimiento de carga, sino también el SEO, la PWA y la accesibilidad. Puede informar el estado de inmediato a los autores, revisores y equipos de SRE. También se puede configurar para omitir las verificaciones cuando se necesitan excepciones.
Flujo de proceso de la gobernanza de velocidad automatizada (ASG)
Spinnaker
Punto de partida. Un desarrollador combina su código en un entorno de preproducción.
- Implementa el entorno de preproducción con recursos de CDN.
- Verifica que la implementación se haya realizado correctamente.
- Ejecuta un contenedor de Docker para comenzar a compilar la aplicación de ASG o enviar una notificación (en caso de que falle la implementación).
Jenkins y Lighthouse
- Compila la aplicación de ASG con Jenkins.
- Ejecuta un contenedor de Docker personalizado que tenga instalados Chrome y Lighthouse.
Extrae
lighthouserc.json
de la app de SSG y ejecutalhci autorun --collect-url=https://example.com
.
Jenkins y la app de SSG
- Extrae
assertion-results.json
de lhci y compáralo con los presupuestos predefinidos enbudgets.json
. Guarda el resultado como un archivo de texto y súbelo a Nexus para realizar comparaciones en el futuro. - Compara el
assertion-results.json
actual con la última compilación correcta (descargada de Nexus) y guárdala como un archivo de texto. - Compila un correo electrónico HTML con la información de éxito o error.
- Envía el correo electrónico a las listas de distribución relevantes con Jenkins.