Zomato เป็นบริษัทรวบรวมร้านอาหารและจัดส่งอาหารข้ามชาติของอินเดียที่ให้บริการแก่ลูกค้าใน 500 เมืองในอินเดีย มีลูกค้าที่ใช้งานอยู่กว่า 43 ล้านคนและมียอดสั่งซื้อเฉลี่ยมากกว่า 1.5 ล้านรายการต่อวัน ทำให้เป็นหนึ่งในบริการสั่งอาหารและนำส่งอาหารที่ได้รับความนิยมมากที่สุดในประเทศ ซึ่งหมายความว่าลูกค้าใช้อุปกรณ์ที่หลากหลายและมีความพร้อมใช้งานของเครือข่ายที่แตกต่างกัน นอกจากจะจัดส่งได้อย่างรวดเร็วแล้ว การมอบประสบการณ์การใช้งานแอปที่ราบรื่นและไร้รอยต่อก็เป็นสิ่งสำคัญเช่นกัน
ผู้ใช้คาดหวังเวลาในการเปิดแอปและการตอบสนองที่รวดเร็ว การปรับปรุงเมตริกนี้ไม่เพียงแต่ส่งผลต่อ App Vitals โดยตรง แต่ยังช่วยให้การสั่งซื้อเสร็จสมบูรณ์มากขึ้นและสนับสนุนกลยุทธ์ของ Zomato ในการขยายไปยังตลาดใหม่ๆ และมอบประสบการณ์การใช้งานที่ดีขึ้นในอุปกรณ์ระดับล่างถึงระดับกลาง ซึ่งจะช่วยให้ Zomato ได้ผู้ใช้รายต่อไปอีก 1, 000 ล้านคน เวลาเปิดแอปยังเป็นตัวบ่งชี้ขนาด Funnel ที่เพิ่มขึ้นเนื่องจากผู้ใช้จะเดินทางลงไปใน Funnel การขาย
และ Zomato ก็ได้รับผลลัพธ์ที่น่าประทับใจจากการมุ่งเน้นที่ App Vitals เช่น การเพิ่มความเร็วในการโหลดแอปขึ้น 30% ส่งผลให้การคงลูกค้าไว้ในวันที่ 1 ดีขึ้นประมาณ 90%
ความท้าทาย
การพัฒนาอย่างรวดเร็วของ Zomato และการมุ่งเน้นที่การเพิ่มฟีเจอร์ แม้ว่าจะเป็นประโยชน์ต่อลูกค้า แต่ก็ทำให้ต้องเพิ่มประสิทธิภาพโค้ดเบสและ UX ในขณะที่พยายามเพิ่มฟีเจอร์ใหม่ๆ Zomato ก็ต้องการรักษาระดับประสิทธิภาพให้ดีเช่นกัน เนื่องจาก SDK หลายรายการใช้ทรัพยากรที่ไม่จำเป็นเสมอไป จึงจำเป็นต้องเพิ่มประสิทธิภาพและปรับฐานของโค้ดให้เหมาะสม
ทั้งหมดนี้เป็นผลมาจากการขยายธุรกิจของ Zomato ไปยังเมืองระดับ 2 และระดับ 3 ในอินเดีย ซึ่งผู้คนส่วนใหญ่ใช้อุปกรณ์ระดับล่างถึงระดับกลางที่มีความสามารถในการประมวลผลค่อนข้างจำกัด การรวมอุปกรณ์เหล่านี้ทำให้ทีมต้องรับประกันว่าผู้ใช้จะได้รับประสบการณ์ระดับโลกเช่นเดียวกับในอุปกรณ์ระดับสูง
แล้วเขาแกล้งคนยังไงบ้างล่ะ
Zomato ใช้เกณฑ์การให้คะแนนแบบง่ายเพื่อวิเคราะห์ค่าใช้จ่าย ซึ่งโซลูชันใดที่ให้ผลตอบแทนจากการลงทุนที่ดีที่สุดเมื่อเทียบกับความพยายามของทีมพัฒนา ทีมจึงเริ่มเส้นทางการเพิ่มประสิทธิภาพและการปรับปรุงเป็นเวลา 4 เดือนโดยใช้เกณฑ์การให้คะแนนนี้
ขั้นตอนแรกคือการตรวจสอบการติดตามระบบเพื่อค้นหาปัญหา การวิเคราะห์ตามเวลา และจัดลําดับความสําคัญตามนั้น Perfetto เป็นเครื่องมือที่เหมาะสำหรับการวิเคราะห์ การสร้างโปรไฟล์ และการติดตามกระบวนการของ Android Zomato ใช้เครื่องมือนี้เพื่อติดตาม SDK ทั้งหมดที่เริ่มต้นในระหว่างการเริ่มต้นแอป และระบุ SDK ที่สามารถนำออกหรือโหลดแบบ Lazy ได้
การนำ SDK เดิมและไลบรารีของบุคคลที่สามที่ไม่ได้ใช้ออกเป็นสิ่งที่เราให้ความสำคัญเป็นอันดับแรก เนื่องจากเป็นงานที่ใช้ความพยายามน้อยแต่ได้ผลลัพธ์สูง วิธีนี้ช่วยให้ Zomato ประหยัดเวลาในการเริ่มต้นแอปได้ถึง 20%
ไลบรารีของบุคคลที่สามจำนวนมากใช้ Content Provider เพื่อเริ่มต้นเมื่อแอปเริ่มทำงาน ซึ่งส่งผลต่อเวลาเริ่มต้นของแอป Zomato ใช้ Facebook SDK สำหรับการเข้าสู่ระบบ แต่ผู้ใช้ก็มีตัวเลือกการเข้าสู่ระบบอื่นๆ ด้วย ดังนั้นการเริ่มต้น SDK เมื่อเริ่มต้นจึงไม่มีประสิทธิภาพ เมื่อเปิดตัวไลบรารีการเริ่มต้นแอป Zomato จะโหลด SDK ก็ต่อเมื่อผู้ใช้เลือกตัวเลือกการเข้าสู่ระบบด้วย Facebook เท่านั้น ซึ่งช่วยให้ลดเวลาเริ่มต้นได้ประมาณ 6%
ขั้นตอนถัดไปคือการปรับปรุงเวลาที่ใช้ในการเพิ่มจำนวนการดู เนื่องจากเวลาในการแสดงผลและการเพิ่มจำนวนการดูเองอาจใช้เวลานานมากในโครงสร้าง UI ที่ซับซ้อน เช่น ของ Zomato Viewstub ช่วยเพิ่มประสิทธิภาพเนื่องจากอนุญาตให้สร้างมุมมองได้ แต่จะเพิ่มลงในลำดับชั้นของมุมมองไม่ได้ เว้นแต่จะจำเป็น Viewstub มีประสิทธิภาพมากกว่าการใช้ View GONE เนื่องจากแม้ว่ามุมมองจะอยู่ในสถานะ GONE แต่ก็จะยังคงขยายและใช้หน่วยความจำและ CPU Zomato ลดลำดับชั้นของมุมมองและผสานเลย์เอาต์พร้อมกับ ViewStub ในกิจกรรมการเข้าสู่ระบบ การเปลี่ยนแปลงเหล่านี้ช่วยปรับปรุงเวลาในการขยายให้ดีขึ้นอย่างมากถึง 7%
Android Profiler ช่วยในการเพิ่มประสิทธิภาพการใช้หน่วยความจำ เนื่องจากช่วยให้ติดตามกิจกรรมของ CPU, หน่วยความจำ และเครือข่ายได้แบบเรียลไทม์ Profiler ช่วยให้ทีมระบุปัญหาหลักสำหรับสถานการณ์การล็อกและค่าใช้จ่ายด้านหน่วยความจำ รวมถึงแก้ไขปัญหาดังกล่าวได้ นอกจากนี้ Zomato ยังปรับปรุงกลไกการแคชเพื่อให้ปัญหาหน่วยความจำหมดลดลงอย่างมากถึง 60%
การทำงาน | ก่อน (วินาที) | หลังจาก (วินาที) | การปรับปรุง |
---|---|---|---|
นำ SDK รุ่นเดิมและไลบรารีของบุคคลที่สามที่ไม่ได้ใช้ออก | 4.873 | 3.813 | 21.74% |
ไลบรารีการโหลดแบบ Lazy Loading | 3.814 | 3.577 | 6.2% |
การปรับปรุงเลย์เอาต์ การแสดงผล | 2.529 | 2.348 | 7.15% |
เวลาเริ่มต้นของแอป = เวลาเริ่มต้นของแอป + เวลาในการโหลดไลบรารี + เวลาในการขยายมุมมอง
ผลลัพธ์
การเพิ่มประสิทธิภาพของ Zomato ช่วยให้บริษัทสร้างประสบการณ์การใช้งานที่ราบรื่นยิ่งขึ้นได้ ปรับปรุง UI และการแคชเพิ่มเติม รวมถึงลดความกระตุกด้วย

แอปไปยังหน้าแรก (การคลิกไอคอนแอปไปยังหน้าแรกที่โหลดเต็มและใช้งานได้) เป็นเมตริกทางธุรกิจที่สำคัญซึ่ง Zomato ติดตามภายใน หลังจากใช้การปรับปรุงแล้ว ก็พบว่าเมตริกนี้เพิ่มขึ้นอย่างมีนัยสำคัญ ลูกค้าที่เข้าถึงหน้าเว็บที่โหลดเสร็จสมบูรณ์แล้วเพิ่มขึ้นประมาณ 20% ในช่วงเวลานี้
ซึ่งส่งผลให้การรักษาลูกค้าในวันที่ 1 เพิ่มขึ้นประมาณ 90% การปรับปรุงเหล่านี้ยังส่งผลต่อ Funnel การส่งต่อด้วย โดยอัตราการสั่งซื้อโดยรวม (หน้าแรก -> เมนู -> รถเข็น -> สั่งซื้อ) เพิ่มขึ้นประมาณ 1.5 เปอร์เซ็นต์ หรือประมาณ 600,000 รายการสั่งซื้อต่อเดือน
เมตริกการเริ่มต้นแอปแบบเย็นของประสิทธิภาพ Firebase แสดงให้เห็นว่ามีการปรับปรุงโดยเฉลี่ย 25% และสำหรับอุปกรณ์ระดับล่าง/กลาง เวลาเริ่มต้นแอปแบบเย็นมีการปรับปรุงถึง 30%
ประสิทธิภาพเวลาเริ่มต้นของแอปเป็นเมตริกสําคัญที่ส่งผลต่อการรับรู้ของผู้ใช้ และการลงทุนเพื่อเพิ่มประสิทธิภาพอาจส่งผลต่อธุรกิจอย่างมากด้วย
"ที่ Zomato การมอบและสร้างประสบการณ์ที่ยอดเยี่ยมให้แก่ลูกค้าเป็นหัวใจสำคัญของอุดมการณ์ของเราเสมอ เราเชื่อว่าประสิทธิภาพเป็นหนึ่งในคันโยกสำคัญ ทีมของเราจึงมุ่งมั่นที่จะสร้างความเป็นเลิศด้านวิศวกรรมเพื่อปรับปรุงเวลาในการโหลดแอปโดยใช้เครื่องมือสำหรับนักพัฒนาแอปของ Google และเห็นผลลัพธ์ที่สำคัญแบบเรียลไทม์ เราหวังว่าแอปนี้จะตอบโจทย์ความต้องการในการสั่งซื้อออนไลน์ในอินเดียได้อย่างรวดเร็ว และเป็นมาตรฐานสำหรับการพัฒนาในอนาคต"
— Sajal Gupta ผู้จัดการด้านวิศวกรรมของ Zomato