Trang web của Lowe là một trong những trang web thương mại điện tử hoạt động nhanh nhất

Bằng cách xây dựng một hệ thống tự động kiểm thử và giám sát hiệu suất, Nhóm tốc độ trang web của Lowe's đã kiểm thử các yêu cầu lấy dữ liệu dựa trên ngân sách hiệu suất và ngăn chặn việc hiệu suất bị hồi quy khi phát hành công khai.

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 là một nhà bán lẻ đồ tân trang nhà có doanh thu gần 90 tỷ USD, vận hành khoảng 2.200 cửa hàng và sử dụng hơn 300.000 nhân viên. Bằng cách xây dựng một hệ thống kiểm thử và giám sát tự động để ngăn chặn việc hồi quy hiệu suất khi triển khai sang môi trường sản xuất, Nhóm tốc độ trang web của Lowe đã có thể cải thiện hiệu suất trang web, xếp hạng trong số các trang web bán lẻ hàng đầu.

Vấn đề

Mục tiêu của Nhóm tốc độ trang web là đưa trang web của Lowe's trở thành một trong những trang web thương mại điện tử nhanh nhất về hiệu suất tải trang. Trước khi xây dựng hệ thống kiểm thử và giám sát tự động, các nhà phát triển trang web của Lowe không thể tự động đo lường hiệu suất trong môi trường thử nghiệm trước khi phát hành. Các công cụ hiện có chỉ tiến hành kiểm thử trong môi trường phát hành chính thức. Do đó, các bản dựng kém chất lượng đã lọt vào bản phát hành chính thức, gây ra trải nghiệm người dùng kém. Những bản dựng kém này sẽ vẫn được phát hành cho đến khi Nhóm tốc độ trang web phát hiện và tác giả khôi phục.

Giải pháp

Nhóm Tốc độ trang web đã sử dụng các công cụ nguồn mở để xây dựng một hệ thống tự động kiểm tra và theo dõi hiệu suất cho các môi trường thử nghiệm. Hệ thống đo lường hiệu suất của mọi yêu cầu kéo (PR) và ngăn PR chuyển sang phiên bản chính thức nếu không đáp ứng ngân sách hiệu suấttiêu chí đo lường của Nhóm tốc độ trang web. Hệ thống cũng đo lường mức độ tuân thủ SEO và ADA.

Tác động

Từ mẫu 1 nhóm trong 16 tuần triển khai 102 bản dựng, hệ thống kiểm thử và giám sát hiệu suất tự động đã ngăn 32 bản dựng có hiệu suất kém được đưa vào sản xuất.

Trước đây, Nhóm tốc độ trang web phải mất từ 3 đến 5 ngày để thông báo cho nhà phát triển rằng họ đã triển khai các bản hồi quy về hiệu suất vào môi trường phát hành công khai. Tuy nhiên, giờ đây, hệ thống sẽ tự động thông báo cho nhà phát triển về các vấn đề về hiệu suất 5 phút sau khi gửi yêu cầu lấy trong môi trường thử nghiệm.

Chất lượng mã đang cải thiện theo thời gian, được đo lường bằng việc ít yêu cầu kéo hơn bị gắn cờ do hồi quy hiệu suất. Nhóm Tốc độ trang web cũng đang dần thắt chặt ngân sách quản lý để liên tục cải thiện chất lượng trang web.

Nhìn chung, việc xác định rõ quyền sở hữu mã có vấn đề đã làm thay đổi văn hoá kỹ thuật. Thay vì miễn cưỡng sửa lỗi phản ứng vì không bao giờ rõ ràng ai thực sự gây ra vấn đề, nhóm có thể thực hiện các biện pháp tối ưu hoá chủ động với quyền sở hữu mã có vấn đề được phân bổ một cách khách quan.

Triển khai

Lighthouse CI là trung tâm của ứng dụng Quản lý tốc độ trang web (SSG). Ứng dụng SSG sử dụng Lighthouse để xác thực và kiểm tra hiệu suất trang của mọi yêu cầu kéo.

Sơ đồ quy trình của ứng dụng SSG, các bước trong sơ đồ này sẽ được mô tả ở phần sau của bài viết.

Ứng dụng SSG khiến bản dựng không thành công nếu không đạt được ngân sách hiệu suất và mục tiêu về chỉ số do Nhóm tốc độ trang web xác định. Tiêu chuẩn này không chỉ thực thi hiệu suất tải mà còn thực thi SEO, PWA và khả năng hỗ trợ tiếp cận. Công cụ này có thể báo cáo trạng thái ngay lập tức cho tác giả, người đánh giá và nhóm SRE. Bạn cũng có thể định cấu hình để bỏ qua các bước kiểm tra khi cần có ngoại lệ.

Quy trình tự động quản lý tốc độ (ASG)

Spinnaker

Điểm xuất phát. Nhà phát triển hợp nhất mã của họ vào môi trường thử nghiệm.

  1. Triển khai môi trường thử nghiệm bằng các thành phần CDN.
  2. Kiểm tra xem quá trình triển khai có thành công hay không.
  3. Chạy vùng chứa Docker để bắt đầu tạo ứng dụng ASG hoặc gửi thông báo (trong trường hợp triển khai không thành công).

Jenkins và Lighthouse

  1. Tạo ứng dụng ASG bằng Jenkins.
  2. Chạy một vùng chứa Docker tuỳ chỉnh đã cài đặt Chrome và Lighthouse. Kéo lighthouserc.json từ ứng dụng SSG và chạy lhci autorun --collect-url=https://example.com.

Ứng dụng Jenkins và SSG

  1. Trích xuất assertion-results.json từ lhci và so sánh với ngân sách được xác định trước trong budgets.json. Lưu kết quả dưới dạng tệp văn bản và tải lên Nexus để so sánh sau này.
  2. So sánh assertion-results.json hiện tại với bản dựng thành công gần đây nhất (được tải xuống từ Nexus) và lưu dưới dạng tệp văn bản.
  3. Tạo email HTML có thông tin về trạng thái thành công hoặc không thành công.
  4. Gửi email đến các danh sách phân phối có liên quan bằng Jenkins.