Создавая автоматизированную систему тестирования и мониторинга производительности, команда Lowe's Site Speed Team проверяет запросы на включение в соответствии с бюджетами производительности и предотвращает снижение производительности в рабочей среде.
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 приводит к сбою сборки, если бюджет производительности , определенный командой 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.