Веб-сайт Lowe входит в число самых быстродействующих веб-сайтов электронной коммерции.

Создавая автоматизированную систему тестирования и мониторинга производительности, команда Lowe's Site Speed ​​Team проверяет запросы на включение в соответствии с бюджетами производительности и предотвращает снижение производительности в рабочей среде.

Абхиманью Райбахадур
Abhimanyu Raibahadur
Ашиш Чоудхури
Ashish Choudhury
Дилип Венкатеш Увараджан
Dhilip venkatesh Uvarajan
Динакар Чандолу
Dinakar Chandolu
Сафван Самла
Safwan Samla

Lowe's — это ритейлер товаров для дома стоимостью почти 90 миллиардов долларов, который управляет около 2200 магазинами и насчитывает более 300 000 сотрудников. Создав автоматизированную систему тестирования и мониторинга, которая предотвращает снижение производительности при развертывании в рабочей среде, команда Lowe's Site Speed ​​Team смогла улучшить производительность своего веб-сайта, войдя в число лучших розничных сайтов.

Проблема

Цель команды Site Speed ​​— сделать сайт Lowe's одним из самых быстрых сайтов электронной коммерции с точки зрения производительности загрузки страниц. До того, как они создали свою автоматизированную систему тестирования и мониторинга, разработчики веб-сайтов Lowe не могли автоматически измерять производительность в предпроизводственных средах. Существующие инструменты проводили только испытания в производственной среде. В результате в производство попали некачественные сборки, что привело к ухудшению пользовательского опыта. Эти некачественные сборки будут оставаться в производстве до тех пор, пока они не будут обнаружены командой Site Speed ​​и не отменены автором.

Решение

Команда Site Speed ​​использовала инструменты с открытым исходным кодом для создания автоматизированной системы тестирования и мониторинга производительности для предпроизводственных сред. Система измеряет производительность каждого запроса на включение (PR) и пропускает PR от отправки к производству, если он не соответствует бюджету производительности и критериям показателей Site Speed ​​Team. Система также измеряет соответствие SEO и ADA.

Влияние

Из выборки, состоящей из одной команды, которая за 16 недель развернула 102 сборки, автоматизированная система тестирования и мониторинга производительности не позволила запустить в производство 32 сборки с недостаточной производительностью.

Если раньше команде Site Speed ​​Team требовалось три-пять дней, чтобы сообщить разработчикам о том, что они отправили данные о снижении производительности в рабочую среду, то теперь система автоматически информирует разработчиков о проблемах с производительностью через пять минут после отправки запроса на включение в предпроизводственную среду.

Качество кода со временем улучшается, о чем свидетельствует тот факт, что меньше запросов на включение помечается как снижение производительности. Команда Site Speed ​​также постепенно сокращает бюджеты на управление, чтобы постоянно улучшать качество сайта.

В целом, четкое владение проблемным кодом изменило инженерную культуру. Вместо того, чтобы завидовать реактивным исправлениям, поскольку никогда не было ясно, кто на самом деле создал проблемы, команда может проводить упреждающую оптимизацию, при этом право собственности на проблемный код будет объективно приписываемым.

Выполнение

Сердцем приложения Site Speed ​​Governance (SSG) является Lighthouse CI . Приложение SSG использует Lighthouse для проверки и аудита производительности страницы каждого запроса на включение.

Схема процесса приложения SSG, шаги, показанные на схеме, описаны далее в статье.

Приложение SSG приводит к сбою сборки, если бюджет производительности , определенный командой Site Speed, и целевые показатели показателей не достигаются. Он обеспечивает не только производительность загрузки, но и SEO, PWA и доступность. Он может немедленно сообщать о состоянии авторам, рецензентам и командам SRE. Его также можно настроить для обхода проверок, когда необходимы исключения.

Процесс автоматизированного управления скоростью (ASG)

Спинакер

Начальная точка. Разработчик объединяет свой код в предпроизводственную среду.

  1. Разверните предпроизводственную среду с ресурсами CDN.
  2. Проверьте успешность развертывания.
  3. Запустите контейнер Docker , чтобы начать сборку приложения ASG, или отправьте уведомление (в случае сбоя развертывания).

Дженкинс и Маяк

  1. Создайте приложение ASG с помощью Jenkins .
  2. Запустите собственный контейнер Docker, в котором установлены Chrome и Lighthouse. Извлеките lighthouserc.json из приложения SSG и запустите lhci autorun --collect-url=https://example.com .

Приложение Jenkins и SSG

  1. Извлеките assertion-results.json из lhci и сравните его с предопределенными бюджетами в budgets.json . Сохраните результат в виде текстового файла и загрузите его в Nexus для будущих сравнений.
  2. Сравните текущий файл assertion-results.json с последней успешной сборкой (скачанной с Nexus) и сохраните его как текстовый файл.
  3. Создайте электронное письмо в формате HTML с информацией об успехе или неудаче.
  4. Отправьте электронное письмо в соответствующие списки рассылки с помощью Jenkins.