Il sito web di Lowe è tra i siti di e-commerce con il rendimento più veloce

Creando un sistema di monitoraggio e test delle prestazioni automatizzato, il team di velocità del sito di Lowe's testa le richieste pull in base ai budget delle prestazioni ed evita che le regressioni delle prestazioni vengano implementate in produzione.

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 è un rivenditore di articoli per la casa con un fatturato di quasi 90 miliardi di dollari che gestisce circa 2200 negozi e impiega più di 300.000 dipendenti. Grazie alla creazione di un sistema di test e monitoraggio automatico che impedisce il verificarsi di regressioni del rendimento durante il deployment in produzione, il team di velocità del sito di Lowe's è stato in grado di migliorare le prestazioni del proprio sito web, classificandosi tra i migliori siti di vendita al dettaglio.

Problema

L'obiettivo del team di velocità del sito è rendere il sito di Lowe's uno dei siti di e-commerce più veloci in termini di prestazioni di caricamento della pagina. Prima di creare il proprio sistema di monitoraggio e test automatico, gli sviluppatori del sito web di Lowe's non erano in grado di misurare automaticamente il rendimento negli ambienti di pre-produzione. Gli strumenti esistenti eseguivano test solo nell'ambiente di produzione. Di conseguenza, le build di qualità inferiore sono passate in produzione, creando un'esperienza utente scadente. Queste build inferiori rimarrebbero in produzione finché non venivano rilevate dal team di velocità del sito e ripristinate dall'autore.

Soluzione

Il team di velocità del sito ha utilizzato strumenti open source per creare un sistema di monitoraggio e test delle prestazioni automatizzato per gli ambienti di pre-produzione. Il sistema misura il rendimento di ogni pull request (PR) e impedisce la pubblicazione della PR in produzione se non soddisfa il budget di rendimento e i criteri delle metriche del team di velocità del sito. Il sistema misura anche la conformità SEO e ADA.

Impatto

In un campione di un team che ha implementato 102 build in 16 settimane, il sistema di monitoraggio e test delle prestazioni automatici ha impedito l'implementazione in produzione di 32 build con prestazioni inferiori alla media.

In precedenza, il team di velocità del sito impiegava da tre a cinque giorni per informare gli sviluppatori di aver rilasciato in produzione delle regressioni del rendimento, mentre ora il sistema informa automaticamente gli sviluppatori dei problemi di rendimento cinque minuti dopo l'invio di una richiesta di pull in un ambiente di pre-produzione.

La qualità del codice migliora nel tempo, come dimostrato dal fatto che un numero inferiore di richieste pull viene segnalato per regressioni del rendimento. Il team di velocità del sito sta inoltre restringendo gradualmente i budget di governance per migliorare continuamente la qualità del sito.

In generale, la proprietà chiara del codice problematico ha modificato la cultura ingegneristica. Invece di eseguire correzioni reattive a malincuore perché non è mai stato chiaro chi ha effettivamente introdotto i problemi, il team può apportare ottimizzazioni proattive poiché la proprietà del codice problematico è oggettivamente attribuibile.

Implementazione

Il cuore dell'app Site Speed Governance (SSG) è Lighthouse CI. L'app SSG utilizza Lighthouse per convalidare e controllare le prestazioni della pagina di ogni richiesta pull.

Un diagramma di processo dell'app SSG. I passaggi mostrati nel diagramma sono descritti più avanti nell'articolo.

L'app SSG causa un errore di compilazione se il budget di rendimento e i target delle metriche definiti dal team di velocità del sito non vengono raggiunti. Non solo migliora il rendimento del caricamento, ma anche la SEO, le PWA e l'accessibilità. Può segnalare immediatamente lo stato ad autori, revisori e team SRE. Può anche essere configurato per bypassare i controlli quando sono necessarie eccezioni.

Flusso di lavoro del sistema di gestione automatica della velocità (ASG)

Spinnaker

Punto di partenza. Uno sviluppatore unisce il proprio codice a un ambiente di preproduzione.

  1. Esegui il deployment dell'ambiente di pre-produzione con gli asset CDN.
  2. Verifica che il deployment sia andato a buon fine.
  3. Esegui un contenitore Docker per iniziare a creare l'applicazione ASG o inviare una notifica (in caso di errore di implementazione).

Jenkins e Lighthouse

  1. Crea l'applicazione ASG con Jenkins.
  2. Esegui un container Docker personalizzato su cui sono installati Chrome e Lighthouse. Esegui il pull di lighthouserc.json dall'app SSG ed esegui lhci autorun --collect-url=https://example.com.

App Jenkins e SSG

  1. Estrai assertion-results.json da lhci e confrontalo con i budget predefiniti in budgets.json. Salva l'output come file di testo e caricalo su Nexus per i confronti futuri.
  2. Confronta il file assertion-results.json corrente con l'ultima build riuscita (scaricata da Nexus) e salvalo come file di testo.
  3. Crea un'email HTML con le informazioni sull'esito positivo o negativo.
  4. Invia l'email agli elenchi di distribuzione pertinenti con Jenkins.