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

ลองคิดดูว่า
ถ้าเปิด app ใช้เวลานานมาก
ถ้า app ทำการดึงข้อมูลต่าง ๆ นานมาก
ถ้าใช้งาน app ไป ๆ มา ๆ ดัน crash หรือปิดตัวเองไป
ถ้า app ใช้ resource ต่าง ๆ ของเครื่องเยอะ เช่น CPU, Memory และ Battery

คำถามคือ ผู้ใช้งานส่วนใหญ่ยังจะใช้งานมันอยู่หรือไม่ ?

ดังนั้นมาดูกันหน่อยว่ามีอะไรที่นักพัฒนา Mobile app ควรใส่ใจ

เรื่องของ Latency ของ End-to-End (Low Latency, Fast Response time)

ความเร็วเป็นสิ่งจำเป็นมาก ๆ สำหรับ Mobile app
บ่อยครั้งจะเป็นตัวชี้วัดหลาย ๆ อย่าง

ผลการวิจัยพบว่า
ถ้า app เปิดช้า จะทำให้ผู้ใช้งานไม่ชอบและลบ app นั้นทิ้งไป
โดยมีถึง 59% ของผู้ถูกสำรวจไม่ชอบ app ที่ช้า
รวมทั้งคาดหวังว่า app จะใช้เวลาในการเปิดไม่เกิน 2 วินาที

การทำงานของ Mobile app นั้นมักจะช้าจากการดึงข้อมูลจาก API ต่าง ๆ ผ่านระบบ network
ซึ่งถ้านักพัฒนามองแค่นั้นมันคงยังไม่พอ
ต้องดูให้ลึกในรายละเอียดอีกว่า
แต่ละ API มีการทำงานภายในอย่างไร มี End-to-End Latency อย่างไร
เพื่อทำให้เห็นถึงปัญหาจริง ๆ ที่ต้องแก้ไขและปรับปรุงกันต่อไป เช่น

  • ใช้เวลาในการดึงข้อมูลจาก database เท่าไร
  • ใช้เวลาในการเขียน log เท่าไร
  • ใช้เวลาในการบันทึกข้อมูลลง database เท่าไร
  • ใช้เวลาในการติดต่อไปยังระบบ A, B, C เท่าไร

นั่นคือการเข้าไปดูในทุก ๆ hop ของการทำงานนั่นเอง
วันนี้คุณมีระบบแบบนี้หรือยัง ?

มีตัวอย่างสวย ๆ จาก AppDynamic มาให้ดู

เรื่องที่สองคือ User Session หรือเวลาที่ผู้ใช้งานตั้งแต่เปิดยันปิด app

ในบาง app อาจจะไม่สนใจ
แต่ app ส่วนใหญ่ต้องการให้ผู้ใช้งานใช้งาน app นานขึ้น
เพื่อเพิ่มโอกาสต่าง ๆ ทางธุรกิจ เช่นยอดการสั่งซื้อเป็นต้น
โดยจากสถิติพบว่า

  • เกมส์จะใช้เวลาใน app ประมาณ 7 นาที
  • e-commerce ใช้เวลาใน app ประมาณ 3 นาที

ดังนั้นสิ่งที่เราต้องรู้คือ ผู้ใช้งานอยู่ใน app ของเรานานเท่าไร ?
และเราคาดหวังหรือมีเป้าหมายอย่างไร ?

แต่ค่านี้จะใช้ไม่ได้เลย ถ้า network ที่เชื่อมต่อมายัง API มันช้า
ซึ่งอาจจะทำให้ค่าของ User session ตกลงไปอย่างมาก

เป็นสิ่งที่ทำให้เราเข้าใจพฤติกรรมการใช้งาน app มากยิ่งขึ้น
เพื่อนำมาใช้ในการปรับปรุงและแก้ไขต่อไป
ไม่ใช่ทำแบบคิดเอง เออเอง หรือ คิดไปเอง !!

ข้อมูลจาก AppsFlyer บอกว่า

  • หลังจากใช้งาน Android app ไป 30 วัน มีผู้ใช้งานเพียง 3.3% ที่ยังคง active หรือใช้งาน
  • หลังจากใช้งาน Android app ไป 30 วัน มีผู้ใช้งานเพียง 3.2% ที่ยังคง active หรือใช้งาน

คำถามที่น่าสนใจคือ
เราในฐานะนักพัฒนารู้ค่าต่าง ๆ ของ app ที่พัฒนาหรือไม่ ?
และจะทำการปรับปรุงค่าต่าง ๆ เหล่านี้อย่างไร ?

เรื่องที่สาม การจัดการเรื่อง Crash Report ต่าง ๆ ของ app

เรารู้หรือไม่ว่า app มัน crash หรือมีปัญหาไหนบ้าง ?

ผู้ใช้งานเขาไม่ report กลับมาหรอกนะ
ถ้าไม่จำเป็นจริง ๆ ผู้ใช้งานเมื่อเจอ app ที่ crash หรือ พังประจำก็คงไม่อยากใช้งาน
คำถามที่น่าสนใจคือ เราในฐานนะนักพัฒนา รู้หรือไม่ว่า app ของเรานั้นเกิด crash ตรงไหนบ้าง ?
เพื่อใช้ในการปรับปรุงประสิทธิภาพการทำงาน
รวมทั้งทำให้ผู้ใช้งานใช้งานอย่างราบรื่นไม่สะดุด

ตัวเลขง่าย ๆ เช่น ทุก ๆ ครั้งที่ทำการ release app ออกไปนั้น
มีจำนวนของการ crash เป็นอย่างไร ?

ทุก ๆ ครั้งที่ app มันพังคามือผู้ใช้งาน เรารู้หรือไม่ ?
หรือต้องไปถามผู้ใช้งานว่า ทำอย่างไร app ถึงพัง อย่างนั้นหรือ ?

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

สุดท้ายคำถามง่าย ๆ คือ คุณรู้ตัวเลขต่าง ๆ เหล่านี้แล้วหรือยัง ?

ขอให้สนุกกับการพัฒนาครับ

Reference Websites
https://dzone.com/articles/3-mobile-app-performance-issues-you-cant-ignore