Situs web Lowe adalah salah satu situs web e-commerce dengan kinerja tercepat

Dengan membangun sistem pengujian dan pemantauan performa otomatis, Tim Kecepatan Situs Lowe's menguji permintaan pull terhadap anggaran performa, dan mencegah regresi performa menjadi produksi.

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 adalah retailer perbaikan rumah senilai hampir $90 miliar yang mengoperasikan sekitar 2.200 toko dan mempekerjakan lebih dari 300.000 karyawan. Dengan membangun sistem pengujian dan pemantauan otomatis yang mencegah regresi performa agar tidak di-deploy ke produksi, Tim Kecepatan Situs Lowe dapat meningkatkan performa situsnya, dan mendapatkan peringkat di antara situs retail teratas.

Masalah

Sasaran Tim Kecepatan Situs adalah menjadikan situs Lowe sebagai salah satu situs e-commerce tercepat dalam hal performa pemuatan halaman. Sebelum membangun sistem pengujian dan pemantauan otomatis, developer situs Lowe tidak dapat mengukur performa secara otomatis di lingkungan praproduksi. Alat yang ada hanya melakukan pengujian di lingkungan produksi. Akibatnya, build yang lebih rendah beralih ke tahap produksi, sehingga memberikan pengalaman pengguna yang buruk. Build inferior ini akan tetap diproduksi hingga terdeteksi oleh Tim Kecepatan Situs dan dikembalikan oleh penulis.

Solusi

Tim Kecepatan Situs menggunakan alat open source untuk membangun sistem pengujian dan pemantauan performa otomatis untuk lingkungan praproduksi. Sistem mengukur performa setiap permintaan pull (PR) dan membatasi PR dari pengiriman ke produksi jika tidak memenuhi anggaran performa dan kriteria metrik Tim Kecepatan Situs. Sistem ini juga mengukur kepatuhan SEO dan ADA.

Dampak

Dari sampel 1 tim selama 16 minggu yang men-deploy 102 build, sistem pengujian dan pemantauan performa otomatis mencegah 32 build dengan performa di bawah standar masuk ke produksi.

Jika biasanya Tim Kecepatan Situs memerlukan waktu tiga hingga lima hari untuk memberi tahu developer bahwa mereka telah mengirimkan regresi performa ke tahap produksi, sistem kini akan otomatis menginformasikan masalah performa kepada developer lima menit setelah mengirimkan permintaan pull di lingkungan praproduksi.

Kualitas kode meningkat seiring waktu, yang diukur berdasarkan fakta bahwa lebih sedikit permintaan pull yang ditandai untuk regresi performa. Tim Kecepatan Situs juga secara bertahap memperketat anggaran tata kelola untuk terus meningkatkan kualitas situs.

Secara umum, memiliki kepemilikan yang jelas atas kode yang bermasalah telah mengubah budaya engineering. Alih-alih menyesalkan koreksi reaktif karena tidak diketahui dengan jelas siapa yang sebenarnya menyebabkan masalah, tim dapat melakukan pengoptimalan proaktif dengan kepemilikan kode bermasalah yang dapat diatribusikan secara objektif.

Penerapan

Inti aplikasi Site Speed Governance (SSG) adalah Lighthouse CI. Aplikasi SSG menggunakan Lighthouse untuk memvalidasi dan mengaudit performa halaman setiap permintaan pull.

Diagram proses aplikasi SSG. Langkah-langkah yang ditampilkan dalam diagram akan dijelaskan nanti dalam artikel.

Aplikasi SSG menyebabkan build gagal jika anggaran performa dan target metrik yang ditentukan Tim Kecepatan Situs tidak tercapai. Tidak hanya meningkatkan performa pemuatan, tetapi juga SEO, PWA, dan aksesibilitas. Alat ini dapat langsung melaporkan status kepada penulis, peninjau, dan tim SRE. Aplikasi ini juga dapat dikonfigurasi untuk mengabaikan pemeriksaan saat pengecualian diperlukan.

Alur proses Tata Kelola Kecepatan Otomatis (ASG)

Spinnaker

Titik awal. Developer menggabungkan kode mereka ke dalam lingkungan praproduksi.

  1. Men-deploy lingkungan praproduksi dengan aset CDN.
  2. Periksa deployment yang berhasil.
  3. Jalankan container Docker untuk mulai membangun aplikasi ASG atau mengirim notifikasi (jika terjadi kegagalan deployment).

Jenkins dan Lighthouse

  1. Membangun aplikasi ASG dengan Jenkins.
  2. Jalankan container Docker kustom yang telah menginstal Chrome dan Lighthouse. Tarik lighthouserc.json dari aplikasi SSG dan jalankan lhci autorun --collect-url=https://example.com.

Aplikasi Jenkins dan SSG

  1. Ekstrak assertion-results.json dari lahci dan bandingkan dengan anggaran yang telah ditentukan di budgets.json. Simpan output sebagai file teks dan upload ke Nexus untuk perbandingan mendatang.
  2. Bandingkan assertion-results.json saat ini dengan build terakhir yang berhasil (didownload dari Nexus) dan simpan sebagai file teks.
  3. Buat email HTML dengan informasi berhasil atau gagal.
  4. Mengirim email ke daftar distribusi yang relevan dengan Jenkins.