El sitio web de Lowe's se encuentra entre los sitios web de comercio electrónico de rendimiento más rápido

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.

Abhimanyu Raibahadur
Abhimanyu Raibahadur
Ashish Choudhury
Ashish Choudhury
Dhilip venkatesh Uvarajan
Dhilip venkatesh Uvarajan
Dinakar Chandolu
Dinakar Chandolu
Garima Mimani
Garima Mimani
Safwan Samla
Safwan Samla

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.

Diagrama de proceso de la app de SSG. Los pasos que se muestran en el diagrama se describen más adelante en el artículo.

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.

  1. Implementa el entorno de preproducción con recursos de CDN.
  2. Verifica que la implementación se haya realizado correctamente.
  3. 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

  1. Compila la aplicación de ASG con Jenkins.
  2. Ejecuta un contenedor de Docker personalizado que tenga instalados Chrome y Lighthouse. Extrae lighthouserc.json de la app de SSG y ejecuta lhci autorun --collect-url=https://example.com.

Jenkins y la app de SSG

  1. Extrae assertion-results.json de lhci y compáralo con los presupuestos predefinidos en budgets.json. Guarda el resultado como un archivo de texto y súbelo a Nexus para realizar comparaciones en el futuro.
  2. Compara el assertion-results.json actual con la última compilación correcta (descargada de Nexus) y guárdala como un archivo de texto.
  3. Compila un correo electrónico HTML con la información de éxito o error.
  4. Envía el correo electrónico a las listas de distribución relevantes con Jenkins.