Создав автоматизированную систему тестирования и мониторинга производительности, команда Lowe's Site Speed Team проверяет запросы на извлечение данных на соответствие бюджетам производительности и предотвращает снижение производительности в процессе производства.
Lowe's — это почти $90-миллиардный ритейлер товаров для дома, который управляет примерно 2200 магазинами и насчитывает более 300 000 сотрудников. Создав автоматизированную систему тестирования и мониторинга, которая предотвращает регресс производительности при развертывании в производстве, команда Lowe's Site Speed Team смогла улучшить производительность своего веб-сайта, заняв место среди лучших розничных сайтов.
Проблема
Цель команды Site Speed Team — сделать сайт Lowe's одним из самых быстрых сайтов электронной коммерции с точки зрения производительности загрузки страниц. До того, как они создали свою автоматизированную систему тестирования и мониторинга, разработчики сайта Lowe's не могли автоматически измерять производительность в предпроизводственных средах. Существующие инструменты проводили только тесты в производственной среде. В результате в производство попадали некачественные сборки, что создавало плохой пользовательский опыт. Эти некачественные сборки оставались в производстве, пока их не обнаруживала команда Site Speed Team и не отменяла автор.
Решение
Команда Site Speed Team использовала инструменты с открытым исходным кодом для создания автоматизированной системы тестирования и мониторинга производительности для предпроизводственных сред. Система измеряет производительность каждого запроса на извлечение (PR) и пропускает PR из отправки в производство, если он не соответствует бюджету производительности и метрическим критериям команды Site Speed Team. Система также измеряет соответствие SEO и ADA.
Влияние
Из выборки из 1 команды, которая в течение 16 недель развернула 102 сборки, автоматизированная система тестирования и мониторинга производительности не допустила к запуску в производство 32 сборки с неудовлетворительной производительностью.
Если раньше команде Site Speed Team требовалось от трех до пяти дней, чтобы сообщить разработчикам о том, что они отправили в производство код, снижающий производительность, то теперь система автоматически информирует разработчиков о проблемах с производительностью через пять минут после отправки запроса на извлечение в предпроизводственной среде.
Качество кода улучшается с течением времени, о чем свидетельствует тот факт, что все меньше запросов на извлечение помечаются как регрессивные. Команда Site Speed Team также постепенно ужесточает бюджеты управления для постоянного улучшения качества сайта.
В целом, наличие четкого владения проблемным кодом изменило инженерную культуру. Вместо того, чтобы сетовать на реактивные исправления, поскольку никогда не было ясно, кто на самом деле внес проблемы, команда может проводить проактивные оптимизации, имея объективно приписываемое владение проблемным кодом.
Выполнение
Сердцем приложения Site Speed Governance (SSG) является Lighthouse CI . Приложение SSG использует Lighthouse для проверки и аудита производительности страницы каждого запроса на извлечение.

Приложение SSG приводит к сбою сборки, если определенный командой Site Speed бюджет производительности и целевые показатели метрик не достигнуты. Оно обеспечивает не только производительность загрузки, но и SEO, PWA и доступность. Оно может немедленно сообщать о состоянии авторам, рецензентам и командам SRE. Его также можно настроить для обхода проверок, когда требуются исключения.
Поток процесса автоматизированного управления скоростью (ASG)
Спинакер
Начальная точка. Разработчик объединяет свой код в предпроизводственную среду.
- Разверните предпроизводственную среду с ресурсами CDN.
- Проверьте успешность развертывания.
- Запустите контейнер Docker , чтобы начать сборку приложения ASG или отправить уведомление (в случае сбоя развертывания).
Дженкинс и Маяк
- Создайте приложение ASG с помощью Jenkins .
- Запустите пользовательский контейнер Docker, в котором установлены Chrome и Lighthouse. Извлеките
lighthouserc.json
из приложения SSG и запуститеlhci autorun --collect-url=https://example.com
.
Приложение Jenkins и SSG
- Извлеките
assertion-results.json
из lhci и сравните его с предопределенными бюджетами вbudgets.json
. Сохраните вывод как текстовый файл и загрузите его в Nexus для будущих сравнений. - Сравните текущий
assertion-results.json
с последней успешной сборкой (загруженной с Nexus) и сохраните его как текстовый файл. - Создайте HTML-сообщение с информацией об успехе или неудаче.
- Отправьте электронное письмо по соответствующим спискам рассылки с помощью Jenkins.