Facebook Lite มีผู้ใช้ 100 ล้านคน, อธิบายสถาปัตยกรรมเบื้องหลัง ทำอย่างไรแอพแค่ 1MB

by mk
10 March 2016 - 02:41

Facebook เปิดตัว Facebook Lite เมื่อเดือนกรกฎาคม 2015 เวลาผ่านมายังไม่ครบปี ตอนนี้ Facebook Lite มีคนใช้เกิน 100 ล้านคนแล้ว (บริษัทบอกว่าเป็นแอพที่เติบโตเร็วที่สุด ใช้เวลาแค่ 9 เดือนทำยอด 100 ล้านคนได้)

Facebook Lite ออกแบบมาเพื่อคนที่ยังใช้เน็ต 2G หรือใช้มือถือรุ่นเก่า ส่วนใหญ่อยู่ในประเทศกำลังพัฒนา โดยประเทศที่ Facebook Lite ได้รับความนิยมสูงคือ บราซิล อินเดีย อินโดนีเซีย เม็กซิโก ฟิลิปปินส์

Facebook อธิบายเงื่อนไขของการพัฒนาแอพ Facebook Lite ว่าต้องผ่านเกณฑ์ 3 ข้อ ดังนี้

ไฟล์ APK มีขนาดไม่เกิน 1MB

เป้าหมายของการลดขนาดแอพให้เล็ก เพื่อให้ดาวน์โหลดแอพได้เร็วบนเครือข่าย 2G และไม่เปลืองปริมาณข้อมูลตอนอัพเดตแอพในภายหลัง

แนวคิดของตัวแอพ Facebook Lite เป็นลักษณะ thin client งานประมวลผลส่วนใหญ่จะอยู่ที่ "Lite Server" ของ Facebook เอง ที่ดึงข้อมูลมาจากเซิร์ฟเวอร์หลักของ Facebook อีกต่อหนึ่ง (ดูภาพประกอบ)

ตัวไฟล์ APK จะทำหน้าที่ติดต่อสื่อสารกับ Lite Server และเข้าถึงฮาร์ดแวร์ผ่าน OS เท่านั้น ไม่มีโค้ดการทำงานของตัวผลิตภัณฑ์ (product code) อยู่เลย รวมถึงไฟล์ภาพ (resource) ทั้งหลายก็ดึงจากเซิร์ฟเวอร์ทั้งหมด แล้วค่อยมาแคชในเครื่องทีหลัง

ใช้งานได้บนเครือข่ายที่ช้า ไม่เปลืองปริมาณข้อมูล

Facebook Lite แก้ปัญหาเรื่องเครือข่าย โดยไม่ใช้โพรโทคอล HTTPS ตามปกติ แต่สร้างโพรโทคอลใหม่ขึ้นมาวิ่งบน TLS (บน TCP อีกต่อหนึ่ง) แทน

ปัญหาของการต่อเน็ต 2G คือช่วงเวลาเริ่มเชื่อมต่อ (establishing a connection) จะช้ามาก ทางแก้จึงเป็นการเปิดการเชื่อมต่อเพียงช่องเดียว (single connection) เพื่อลด overhead ลงมา

Facebook Lite ยังบีบอัดข้อมูลด้วยอัลกอริทึมแบบ LZMA2 ซึ่งตอบโจทย์ทั้งเรื่องอัตราการบีบอัดข้อมูล และการไม่เปลืองพลังประมวลผลในการคลายการบีบอัด

ประเด็นเรื่องปริมาณข้อมูล ส่วนใหญ่เกิดจาก "ภาพ" เทคนิคของ Facebook Lite คือตัวแอพรู้ขนาดหน้าจออยู่แล้ว แอพจะแจ้งขนาดหน้าจอไปยัง Lite Server จากนั้น Lite Server จะดึงภาพจาก CDN มาปรับขนาดให้พอดีก่อนส่ง ตัวเซิร์ฟเวอร์ยังปรับความละเอียดและคุณภาพของภาพ JPEG ให้ด้วยเลย กรณีที่ภาพมีขนาดใหญ่ เซิร์ฟเวอร์ยังจะตัดแบ่งภาพเป็นส่วนๆ เพื่อส่งข้อมูลทีละส่วน และจัดการเรื่องแคชให้ด้วย

การส่งข้อมูลผ่าน Lite Server ยังส่งให้น้อยที่สุด เฉพาะแค่ diff เท่านั้น เช่น ถ้าเรา refresh หน้า News Feed แล้วมีโพสต์ใหม่ไม่กี่อัน ตัวเซิร์ฟเวอร์ก็จะส่งข้อมูลเฉพาะโพสต์ใหม่มาให้เราเท่านั้น

รองรับ Android รุ่นเก่า

Facebook ตั้งเป้าให้ Facebook Lite รันได้บน Android รุ่นเก่าที่ถอยไปถึงปี 2009 (เช่น Samsung Galaxy Y) ดังนั้นตัวแอพต้องเบาและประมวลผลให้น้อยที่สุด แอนิเมชันจะถูกตัดออกทั้งหมด และขนาดของแคชก็จะถูกจำกัดเพียงไม่กี่สิบ MB เพื่อให้พอดีกับขนาดสตอเรจของเครื่อง แอพจะใช้แรมให้น้อยและคืนหน่วยความจำถ้าย้ายไปทำงานเบื้องหลัง

ที่มา - Facebook Code

Blognone Jobs Premium