JioSaavn ก่อตั้งขึ้นในปี 2007 และเป็นบริการสตรีมมิงเสียงชั้นนำสำหรับเพลงและพอดแคสต์ โดยมีพาร์ทเนอร์ค่ายเพลงกว่า 900 รายและสตรีมแทร็กกว่า 80 ล้านแทร็กใน 16 ภาษา นอกจากนี้ แอป JioSaavn ยังพร้อมให้บริการใน 6 ภาษาท้องถิ่นของอินเดียด้วย
JioSaavn มีเทคโนโลยีที่รองรับผู้ใช้ที่ใช้งานอยู่รายเดือน (MAU) กว่า 100 ล้านคน จึงสามารถให้บริการได้อย่างรวดเร็วและมีประสิทธิภาพ โดยปกติแล้ว กลุ่มเป้าหมายนี้มักใช้โทรศัพท์ Android ที่มีทรัพยากรจำกัด ซึ่งทำให้ประสบการณ์การใช้งานของผู้ใช้มีความสำคัญอย่างยิ่งต่อทีม JioSaavn
ความท้าทาย
การเพิ่มประสิทธิภาพในสภาพแวดล้อมที่มีข้อจำกัด เช่น อุปกรณ์เคลื่อนที่ระดับล่างถึงระดับกลาง อาจเป็นทั้งความท้าทายและความตื่นเต้นในมุมมองด้านวิศวกรรม ความท้าทายที่ JioSaavn เผชิญคือการเพิ่มประสิทธิภาพประสบการณ์ของผู้ใช้สำหรับกลุ่มเป้าหมายหลักที่ใช้อุปกรณ์เคลื่อนที่ระดับล่างถึงระดับกลาง และส่วนใหญ่อาศัยอยู่ในเมืองระดับ 2 และ 3 ของอินเดีย
การวิเคราะห์ Funnel แสดงให้เห็นว่ามีผู้ใช้จำนวนมากที่เปิดแอปแต่ไม่ได้ฟังเพลง ทีมระบุว่าสาเหตุของปัญหานี้คือเวลาเริ่มต้นของแอป ดังนั้น การปรับปรุงเวลาเริ่มต้นของแอปจึงเชื่อมโยงกับการเพิ่มจำนวนผู้ฟังในแอป
วิธีที่พวกเขาทำ
JioSaavn ใช้การวิเคราะห์ที่ครอบคลุมและชุดเครื่องมือที่มีประสิทธิภาพ เช่น Perfetto, dumpsys ฯลฯ เพื่อวิเคราะห์ปัญหานี้และหาโซลูชันที่ยั่งยืน ทีมได้เข้าถึงความท้าทายนี้โดยใช้หลักการ 2 ข้อ ได้แก่ การทำงานแบบคู่ขนานและการขี้เกียจ
ทีมจัดลำดับความสำคัญของงานโดยใช้การวิเคราะห์ของ Google
- ใช้ systrace และ perfetto เพื่อศึกษาโฟลว์ของแอป วิเคราะห์จุดที่ทำให้เกิดความเจ็บปวด และตรวจสอบการปรับปรุงเวลาเริ่มต้นของแอป
- การเริ่มต้นที่ล่าช้า: ระบุการเริ่มต้นของ Fragment/อินสแตนซ์/คลาสที่อาจล่าช้าจนกว่าหน้าแรกจะแสดง -
- โฆษณา
- บริการเพลง (บริการที่ทำงานอยู่เบื้องหน้า) และทรัพยากรของเพลเยอร์ (เช่น Exoplayer, คิวเพลเยอร์ที่แคชไว้ ฯลฯ)
- Player Fragment ซึ่งย่อขนาดไว้ตอนเปิดตัว
- การเริ่มต้นตามต้องการ: ของไลบรารีต่างๆ เมื่อใดก็ตามที่จำเป็นต้องใช้ไลบรารี (เช่น ไลบรารี Facebook)
- viewStubs: View Inflation and resource loading was heavy. ทีมได้ปรับเลย์เอาต์ให้แบนราบโดยใช้ ViewStub และแปลงรูปภาพเป็น WebP
- Worker Thread: ย้ายงานบางอย่างที่ไม่ต้องใช้ UI Thread ไปยัง Thread ในเบื้องหลังเพื่อเพิ่มพื้นที่ว่างให้กับ UI Thread
- แยกข้อมูลแคช - การอ่านและแยกวิเคราะห์ข้อมูลแคชขนาดใหญ่จากไฟล์ใช้เวลานานมาก ทีมได้แบ่งข้อมูลออกเป็นข้อมูลที่สำคัญ (จำเป็นต่อการแสดงหน้าแรก) และข้อมูลที่ไม่สำคัญ
- Async LayoutInflater: ระบบจะขยายมุมมองบางอย่างที่จำเป็นสำหรับ RecyclerView ในหน้าแรกไว้ล่วงหน้าโดยใช้ Async LayoutInflater
เครื่องมือที่ใช้ - Perfetto, Systrace, Google Play Vitals, Android Studio Profiler, Firebase Performance SDK
ผลลัพธ์
ทีม JioSaavn ได้เปิดตัวการเปลี่ยนแปลงเหล่านี้ในแอปหลายเวอร์ชันเพื่อรักษาความเสถียรของแอป โดยได้รับผลลัพธ์ดังนี้
- เวลาเริ่มต้นแอปในอุปกรณ์ทั้งหมดเร็วขึ้น 30% และในอุปกรณ์ระดับล่างถึงปานกลางเร็วขึ้น 35-40%
- ปรับปรุงผู้ดูหน้าจอหลัก/ DAU ได้ 5% จึงทำให้อัตราตีกลับลดลง
การเพิ่มประสิทธิภาพนี้ช่วยให้ทั้งทีมได้ทำงานร่วมกัน เราได้จัดทำคำแนะนำแบบทีละขั้นตอนโดยละเอียดเพื่อให้ทีมคุ้นเคยกับการเปลี่ยนแปลง และปลูกฝังแนวทางที่มุ่งเน้นประสิทธิภาพของแอป
"JioSaavn มุ่งมั่นที่จะปรับปรุงประสบการณ์การฟังของผู้ใช้ที่มาจากภูมิภาค
และเมืองต่างๆ ในอินเดีย รวมถึงครอบคลุมทุกกลุ่ม ในแง่ของความสามารถในการจ่าย ดังนั้นการก้าวข้ามโครงสร้างพื้นฐานการเชื่อมต่อมือถือในภูมิภาคของตน และการเพิ่มประสิทธิภาพประสบการณ์ของผู้ใช้ในความสามารถของอุปกรณ์ของผู้ใช้จึงเป็นความท้าทายที่เราต้องเผชิญอยู่เสมอ คำแนะนำด้านความสัมพันธ์กับนักพัฒนาแอปของ Google ช่วยให้เราสามารถก้าวไปในทิศทางนี้ได้อย่างแน่นอน"- ทีมผลิตภัณฑ์ JioSaavn