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

Mediante la compilación de un sistema automatizado de prueba y supervisión de rendimiento, el equipo de Lowe's Site Speed prueba las solicitudes de extracción con los presupuestos de rendimiento y evita que ingresen a la producción las regresiones de rendimiento.

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 artículos para el hogar por USD 90,000 millones, que opera alrededor de 2,200 tiendas y cuenta con más de 300,000 asociados. Mediante la compilación de un sistema automatizado de pruebas y supervisión que evita que las regresiones de rendimiento se implementen en la producción, Lowe's Site Speed Team mejoró el rendimiento de su sitio web y se clasificó entre los principales sitios de venta minorista.

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 la página. Antes de crear su sistema automatizado de pruebas y supervisión, los desarrolladores del sitio web de Lowe's no podían medir el rendimiento automáticamente en entornos de preproducción. Las herramientas existentes solo realizaron pruebas en el entorno de producción. Como resultado, las compilaciones inferiores pasaron a 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 utilizó herramientas de código abierto para crear un sistema automatizado de prueba y supervisión de rendimiento para entornos de preproducción. El sistema mide el rendimiento de cada solicitud de extracción (PR) y controla la RR.PP. del envío a la 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 de la SEO y la ADA.

Impacto

A partir de una muestra de 1 equipo durante 16 semanas que implementó 102 compilaciones, el sistema automatizado de prueba y supervisión de rendimiento evitó que 32 compilaciones con rendimiento inferior entraran en producción.

Si bien antes el equipo de velocidad del sitio tardaba de tres a cinco días en informar a los desarrolladores que habían enviado regresiones de rendimiento a producción, el sistema ahora informa automáticamente a los desarrolladores sobre los problemas de rendimiento cinco minutos después de enviar una solicitud de extracción en un entorno de preproducción.

La calidad del código mejora con el tiempo, medida 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á ajustando gradualmente los presupuestos de administración para mejorar continuamente la calidad del sitio.

En general, tener una propiedad clara del código problemático cambió la cultura de la ingeniería. En lugar de rechazar las correcciones reactivas porque nunca fue claro quién realmente introdujo los problemas, el equipo puede realizar optimizaciones proactivas haciendo que la propiedad del código problemático sea atribuible objetivamente.

Implementación

El corazón 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.

Un diagrama de procesos de la app de SSG. Los pasos que se muestran en él se describen más adelante en el artículo.

La aplicación de SSG provoca que la compilación falle si no se alcanzan los objetivos de métricas y el presupuesto de rendimiento definidos del equipo de velocidad del sitio. No solo aplica el rendimiento de carga, sino también SEO, AWP y accesibilidad. Puede informar el estado inmediatamente a los autores, revisores y equipos de SRE. También se puede configurar para omitir las verificaciones cuando se necesiten excepciones.

Flujo del proceso de la Administración de la 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 elementos de CDN.
  2. Comprueba si la implementación se realizó correctamente.
  3. Ejecuta un contenedor de Docker para comenzar a compilar la aplicación de ASG o envía 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 Chrome y Lighthouse instalados. Extrae lighthouserc.json de la app de SSG y ejecuta lhci autorun --collect-url=https://example.com.

App de Jenkins y 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 futuras.
  2. Compara el assertion-results.json actual con la última compilación exitosa (descargada de Nexus) y guárdala como 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.