ด้วยการสร้างระบบการทดสอบและตรวจสอบประสิทธิภาพอัตโนมัติ การทดสอบทีมความเร็วไซต์ของ Lowe's Site Speed จะดึงคำขอเทียบกับงบประมาณด้านประสิทธิภาพ และป้องกันไม่ให้ประสิทธิภาพที่ถดถอยนำไปใช้ได้จริง
Lowe's เป็นร้านจำหน่ายอุปกรณ์ซ่อมแซมบ้านเกือบ 9 หมื่นล้านดอลลาร์ ที่เปิดร้านค้าประมาณ 2,200 ร้านและมีพนักงานมากกว่า 300,000 คน ด้วยการสร้างระบบการทดสอบและตรวจสอบอัตโนมัติที่ป้องกันไม่ให้ประสิทธิภาพการทำงานถดถอยนำไปใช้ในเวอร์ชันที่ใช้งานจริงได้ ทีม Site Speed ของ Lowe ก็สามารถปรับปรุงประสิทธิภาพเว็บไซต์ของตัวเอง โดยติดอันดับเว็บไซต์ค้าปลีกยอดนิยมได้
ปัญหา
เป้าหมายของทีมความเร็วไซต์คือการทำให้ไซต์ Lowe's เป็นหนึ่งในไซต์อีคอมเมิร์ซที่เร็วที่สุดในแง่ของประสิทธิภาพการโหลดหน้าเว็บ ก่อนที่จะสร้างระบบการทดสอบและตรวจสอบอัตโนมัติ นักพัฒนาเว็บไซต์ของ Lowe สามารถวัดประสิทธิภาพโดยอัตโนมัติในสภาพแวดล้อมก่อนการผลิตไม่ได้ เครื่องมือที่มีอยู่จะทำการทดสอบในสภาพแวดล้อมที่ใช้งานจริงเท่านั้น ด้วยเหตุนี้ เวอร์ชันที่ด้อยกว่าจึงถูกนำไปใช้งานจริง ทำให้ผู้ใช้ได้รับประสบการณ์การใช้งานที่ไม่ดี บิลด์ที่ด้อยกว่าเหล่านี้จะยังคงอยู่ในเวอร์ชันที่ใช้งานจริงจนกว่าทีมความเร็วไซต์จะตรวจพบและเปลี่ยนกลับโดยผู้เขียน
โซลูชัน
ทีมความเร็วไซต์ใช้เครื่องมือโอเพนซอร์สในการสร้างระบบการทดสอบและตรวจสอบประสิทธิภาพแบบอัตโนมัติสำหรับสภาพแวดล้อมก่อนใช้งานจริง ระบบจะวัดประสิทธิภาพของคำขอพุล (PR) ทั้งหมดและกำหนดเป้าหมาย PR จากการจัดส่งไปยังเวอร์ชันที่ใช้งานจริงหากไม่เป็นไปตามงบประมาณด้านประสิทธิภาพและเกณฑ์เมตริกของทีมความเร็วเว็บไซต์ นอกจากนี้ ระบบจะวัดการปฏิบัติตามข้อกำหนดของ SEO และ ADA ด้วย
มีอิทธิพล
จากตัวอย่างทีม 1 ทีมในช่วง 16 สัปดาห์ที่ใช้บิลด์ 102 บิลด์ ระบบทดสอบและตรวจสอบประสิทธิภาพอัตโนมัติได้ป้องกันไม่ให้บิลด์ 32 รายการที่มีประสิทธิภาพต่ำกว่ามาตรฐานเข้าสู่เวอร์ชันที่ใช้งานจริง
จากที่เคยใช้เวลา 3 ถึง 5 วันในการแจ้งให้นักพัฒนาซอฟต์แวร์ทราบว่าทีมได้ดำเนินการปรับปรุงประสิทธิภาพในการทำงานจริง ตอนนี้ระบบแจ้งให้นักพัฒนาซอฟต์แวร์ทราบถึงปัญหาด้านประสิทธิภาพโดยอัตโนมัติภายใน 5 นาทีหลังจากส่งคำขอพุลในสภาพแวดล้อมก่อนการผลิต
คุณภาพของโค้ดจะค่อยๆ เพิ่มขึ้นเมื่อเวลาผ่านไป โดยวัดจากข้อเท็จจริงที่ว่ามีการแจ้งว่าคำขอพุลน้อยลงเนื่องจากประสิทธิภาพถดถอย ทีมความเร็วไซต์กำลังค่อยๆ ปรับลดงบประมาณในการกำกับดูแลเพื่อปรับปรุงคุณภาพเว็บไซต์อย่างต่อเนื่อง
โดยทั่วไปแล้ว การมีการเป็นเจ้าของโค้ดที่เป็นปัญหาอย่างชัดเจนได้เปลี่ยนวัฒนธรรมวิศวกร แทนที่จะยินดีกับการแก้ไขในเชิงรับเนื่องจากไม่ทราบแน่ชัดว่าใครเป็นผู้นำเสนอปัญหา ทีมสามารถทำการเพิ่มประสิทธิภาพเชิงรุกโดยให้การเป็นเจ้าของโค้ดที่เป็นปัญหาระบุแหล่งที่มาได้อย่างเป็นกลาง
การใช้งาน
หัวใจของแอปการกำกับดูแลความเร็วไซต์ (SSG) คือ Lighthouse CI แอป SSG ใช้ Lighthouse เพื่อตรวจสอบประสิทธิภาพของหน้าเว็บของคำขอพุลทุกรายการ
แอป SSG จะทำให้การสร้างล้มเหลวหากไม่สามารถเข้าถึงงบประมาณด้านประสิทธิภาพและเป้าหมายเมตริกที่ทีมความเร็วเว็บไซต์กำหนดไว้ โดยไม่เพียงแค่เพิ่มประสิทธิภาพการโหลด แต่รวมถึง SEO, PWA และการช่วยเหลือพิเศษด้วย นอกจากนี้ยังรายงานสถานะให้ผู้เขียน ผู้ตรวจสอบ และทีม SRE ทราบได้ทันที นอกจากนี้ยังสามารถกำหนดค่าให้ข้ามการตรวจสอบเมื่อต้องมีข้อยกเว้นได้ด้วย
ขั้นตอนของกระบวนการกำกับดูแลความเร็วอัตโนมัติ (ASG)
Spinnaker
จุดเริ่มต้น นักพัฒนาซอฟต์แวร์ผสานรวมโค้ดเข้ากับสภาพแวดล้อมก่อนใช้งานจริง
- ทำให้สภาพแวดล้อมก่อนใช้งานจริงใช้งานได้ด้วยเนื้อหา CDN
- ตรวจสอบว่าติดตั้งใช้งานสำเร็จ
- เรียกใช้คอนเทนเนอร์ Docker เพื่อเริ่มสร้างแอปพลิเคชัน ASG หรือส่งการแจ้งเตือน (ในกรณีที่การติดตั้งใช้งานล้มเหลว)
Jenkins และ Lighthouse
- สร้างแอปพลิเคชัน 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