Zalando ลดเวลาแสดงความคิดเห็นเกี่ยวกับประสิทธิภาพจาก 1 วันเหลือ 15 นาทีด้วย Lighthouse CI

ทีมเว็บของ Zalando พบว่าการผสานรวม Lighthouse CI ช่วยสร้างแนวทางเชิงรุกในด้านประสิทธิภาพ โดยมีการตรวจสอบสถานะอัตโนมัติที่เปรียบเทียบการคอมมิตปัจจุบันกับสาขาหลักเพื่อป้องกันการถดถอยของประสิทธิภาพ

Jan Brockmeyer
Jan Brockmeyer
Jeremy Colin
Jeremy Colin

Zalando เป็นแพลตฟอร์มแฟชั่นออนไลน์ชั้นนําของยุโรปที่มีลูกค้าใช้งานอยู่กว่า 35 ล้านคน โพสต์นี้จะอธิบายเหตุผลที่เราเริ่มใช้ Lighthouse CI, ความง่ายในการใช้งาน และข้อดีสำหรับทีมของเรา

ที่ Zalando เราทราบดีว่าประสิทธิภาพของเว็บไซต์และรายได้มีความเกี่ยวข้องกัน ที่ผ่านมา เราทดสอบว่าการเพิ่มขึ้นของเวลาในการโหลดหน้าแคตตาล็อกที่เกิดจากการจําลองส่งผลต่ออัตราตีกลับ อัตรา Conversion และรายได้ต่อผู้ใช้อย่างไร ผลลัพธ์ชัดเจน การปรับปรุงเวลาในการโหลดหน้าเว็บให้เร็วขึ้น 100 มิลลิวินาทีทําให้การมีส่วนร่วมเพิ่มขึ้นโดยมีอัตราตีกลับลดลงและรายได้ต่อเซสชันเพิ่มขึ้น 0.7%

100มิลลิวินาที

การปรับปรุงเวลาในการโหลดหน้าเว็บ

0.7%

รายได้ต่อเซสชันเพิ่มขึ้น

การยอมรับของบริษัทไม่ได้แปลว่าจะได้ประสิทธิภาพเสมอไป

แม้ว่าคนในบริษัทจะยอมรับประสิทธิภาพอย่างเต็มตัว แต่หากไม่ได้ตั้งค่าประสิทธิภาพเป็นเกณฑ์การนำส่งผลิตภัณฑ์ ประสิทธิภาพก็อาจถูกมองข้ามได้ง่ายๆ เมื่อออกแบบเว็บไซต์ Zalando ใหม่ในปี 2020 เรามุ่งเน้นที่การนำเสนอฟีเจอร์ใหม่ๆ ไปพร้อมกับการรักษาประสบการณ์การใช้งานที่ยอดเยี่ยมของผู้ใช้และปรับโฉมเว็บไซต์ด้วยแบบอักษรที่กำหนดเองและสีสันที่สดใสยิ่งขึ้น อย่างไรก็ตาม เมื่อเว็บไซต์และแอปที่ออกแบบใหม่พร้อมเผยแพร่แล้ว เมตริกของผู้ใช้งานกลุ่มแรกๆ แสดงให้เห็นว่าเวอร์ชันใหม่ช้ากว่า First Contentful Paint ช้าลงสูงสุด 53% และเวลาในการตอบสนองที่วัดได้ช้าลงสูงสุด 59%

เว็บที่ Zalando

เว็บไซต์ Zalando สร้างโดยทีมหลักที่พัฒนาเฟรมเวิร์ก โดยมีทีมฟีเจอร์กว่า 15 ทีมที่มีส่วนร่วมในไมโครเซอร์วิสฝั่งหน้าเว็บ ขณะรองรับรุ่นใหม่ เรายังได้เปลี่ยนเว็บไซต์บางส่วนเป็นสถาปัตยกรรมแบบรวมศูนย์มากขึ้นด้วย

สถาปัตยกรรมเดิมชื่อ Mosaic มีวิธีวัดประสิทธิภาพหน้าเว็บด้วยเมตริกภายใน อย่างไรก็ตาม เราเปรียบเทียบเมตริกประสิทธิภาพก่อนเปิดตัวกับผู้ใช้จริงได้ยากเนื่องจากไม่มีเครื่องมือตรวจสอบประสิทธิภาพของห้องทดลองภายใน แม้ว่าจะมีการทําให้ใช้งานได้ทุกวัน แต่นักพัฒนาซอฟต์แวร์ที่ต้องปรับปรุงประสิทธิภาพก็ได้รับความคิดเห็นในรอบประมาณ 1 วัน

Web Vitals และ Lighthouse จะช่วยแก้ปัญหานี้

เรายังไม่พอใจกับเมตริกที่พัฒนาขึ้นเองทั้งหมด เนื่องจากเมตริกเหล่านั้นปรับให้เข้ากับการตั้งค่าใหม่ได้ไม่ดีนัก และที่สำคัญกว่านั้นคือไม่ได้มุ่งเน้นที่ประสบการณ์ของลูกค้า เราเปลี่ยนไปใช้ Core Web Vitals เนื่องจากเป็นชุดเมตริกที่กระชับแต่ครอบคลุมและเน้นผู้ใช้

เราต้องสร้างสภาพแวดล้อมห้องทดลองที่เหมาะสมเพื่อปรับปรุงประสิทธิภาพก่อนการเผยแพร่ ซึ่งให้ค่าการวัดที่ซ้ำกันได้ นอกเหนือจากเงื่อนไขการทดสอบที่แสดงถึงข้อมูลภาคสนาม 90 เปอร์เซ็นต์ของเรา ตอนนี้วิศวกรที่ทำงานเกี่ยวกับการปรับปรุงประสิทธิภาพทราบแล้วว่าควรมุ่งเน้นที่จุดใดเพื่อให้เกิดผลลัพธ์มากที่สุด เราใช้รายงานการตรวจสอบ Lighthouse ในพื้นที่อยู่แล้ว ดังนั้น Iteration แรกของเราคือการพัฒนาบริการตามโมดูลโหนด Lighthouse ซึ่งสามารถทดสอบการเปลี่ยนแปลงจากสภาพแวดล้อมการทดสอบได้ ข้อมูลนี้ช่วยให้เราได้รับความคิดเห็นเกี่ยวกับประสิทธิภาพที่เชื่อถือได้ประมาณ 1 ชั่วโมง ซึ่งช่วยให้เราปรับปรุงประสิทธิภาพให้เทียบเท่าและช่วยกู้คืนรุ่นได้

แสดงความคิดเห็นเกี่ยวกับประสิทธิภาพให้นักพัฒนาแอปทราบในคำขอการดึงข้อมูล

แต่เราไม่ได้หยุดอยู่แค่นั้นเนื่องจากต้องการใช้โอกาสนี้ไม่เพียงเพื่อตอบสนองต่อประสิทธิภาพ แต่ยังเพื่อเตรียมพร้อมรับมือด้วย การเปลี่ยนจากโมดูลโหนด Lighthouse ไปใช้เซิร์ฟเวอร์ Lighthouse CI (LHCI) นั้นไม่ยากเกินไป เราเลือกใช้โซลูชันที่โฮสต์เองเพื่อให้ผสานรวมกับบริการของบริษัทที่มีอยู่ได้ดียิ่งขึ้น แอปพลิเคชันเซิร์ฟเวอร์ LHCI ของเราสร้างขึ้นเป็นอิมเมจ Docker จากนั้นจึงนำไปติดตั้งใช้งานในคลัสเตอร์ Kubernetes พร้อมกับฐานข้อมูล PostgreSQL และรายงานไปยัง GitHub

เฟรมเวิร์กของเราให้ความคิดเห็นเกี่ยวกับประสิทธิภาพแก่นักพัฒนาซอฟต์แวร์อยู่แล้ว โดยระบบจะเปรียบเทียบขนาดของกลุ่มคอมโพเนนต์กับค่าเกณฑ์ในการคอมมิตแต่ละครั้ง ตอนนี้เรารายงานเมตริก Lighthouse เป็นการตรวจสอบสถานะ GitHub ได้แล้ว ปัญหาเหล่านี้ทําให้ไปป์ไลน์ CI ทำงานไม่สำเร็จหากไม่เป็นไปตามเกณฑ์ประสิทธิภาพ โดยมีลิงก์ไปยังรายงาน Lighthouse แบบละเอียดดังที่แสดงในรูปภาพต่อไปนี้

รูปภาพ UI ของ GitHub ที่แสดงบรรทัดการตรวจสอบที่สำเร็จ
การตรวจสอบสถานะ GitHub ของ Lighthouse CI ช่วยให้นักพัฒนาซอฟต์แวร์เข้าใจการถดถอยและแก้ไขได้ก่อนที่จะเผยแพร่ไปยังเวอร์ชันที่ใช้งานจริง
รูปภาพการเปรียบเทียบใน Lighthouse CI ที่แสดงการเปรียบเทียบการคอมมิตกับสาขาหลัก
รายงานการคอมมิตแบบละเอียดของ Lighthouse CI เทียบกับสาขาหลัก

การขยายการครอบคลุมประสิทธิภาพ

เราเริ่มต้นด้วยแนวทางที่เน้นการปฏิบัติจริง ปัจจุบัน Lighthouse ทำงานในหน้าที่สำคัญที่สุด 2 หน้าเท่านั้น ได้แก่ หน้าแรกและหน้ารายละเอียดผลิตภัณฑ์ แต่ Lighthouse CI ช่วยขยายการกำหนดค่าการเรียกใช้ได้อย่างง่ายดาย ทีมฟีเจอร์ที่ทำงานในหน้าเว็บที่เฉพาะเจาะจงสามารถตั้งค่ารูปแบบ URL และการยืนยันที่ตรงกันได้ เมื่อใช้ฟีเจอร์นี้ เราค่อนข้างมั่นใจว่าความครอบคลุมของประสิทธิภาพจะเพิ่มขึ้น

ตอนนี้เรามั่นใจมากขึ้นในการสร้างรุ่นที่ใหญ่ขึ้น และนักพัฒนาแอปสามารถรับความคิดเห็นเกี่ยวกับประสิทธิภาพของโค้ดได้เร็วขึ้นมาก