ไขข้อข้องใจ ทำไม LINE ล็อกอินหลายเครื่องพร้อมกันไม่ได้ คำตอบจากวิศวกร LINE สำนักงานใหญ่

หัวข้อกระทู้ ใน 'เทคโนโลยี' เริ่มโพสต์โดย iPokz, 26 พฤศจิกายน 2019.

  1. iPokz

    iPokz ~" iPokz "~ Staff Member

    ประเด็นสำคัญที่ผู้ใช้ LINE คาใจกันมานานคือ "ทำไมไม่สามารถล็อกอินพร้อมกันในสมาร์ทโฟน 2 เครื่องได้" และ "ทำไมไม่เซฟรูปหรือแชททั้งหมดไว้ให้" ซึ่งที่ผ่านมาก็ไม่เคยมีคำตอบจริงๆ จังๆ จาก LINE ในเรื่องนี้เช่นกัน

    ผมมีโอกาสเข้าร่วมงาน LINE Developer Day 2019 และได้สัมภาษณ์วิศวกรของ LINE ประเทศญี่ปุ่นคือคุณ Shunsuke Nakamura และคุณ Masakuni Oishi ในเรื่องนี้พอดี และได้คำตอบมาฝากผู้ใช้ LINE ในไทยกันครับ (คำตอบสั้นๆ เป็นภาษาเทคนิคคือ technical debt)

    [​IMG]

    คุณ Shunsuke Nakamura มีหัวข้อที่พูดในงานสัมมนาเกี่ยวกับสถาปัตยกรรมของ LINE พอดี โดยใช้หัวข้อว่า LINT (LINE Improvement for Next Ten years)

    ประเด็นสำคัญคือ LINE เริ่มพัฒนาขึ้นในปี 2011 ในยุคที่ผู้ใช้ยังน้อย (เพียง 1 ล้านคน) ทุกอย่างยังเพิ่งเริ่มต้น สถาปัตยกรรมของ LINE จึงออกแบบมาสำหรับผู้ใช้ 1 คน 1 อุปกรณ์ (1 user 1 device 1 session) และงานฝั่งเซิร์ฟเวอร์รันอยู่บนคลัสเตอร์ของ LINE เองที่มีประมาณ 10 ตัวเท่านั้น

    [​IMG]

    ตลอดเวลา 8 ปีที่ผ่านมา LINE มีผู้ใช้เติบโตขึ้นสูงมาก (ประมาณ 200 ล้านคน) มีบริการจำนวนมากที่พัฒนาขึ้นบนสถาปัตยกรรมเดิมของ LINE เช่น เกม เพลง วิดีโอ ฯลฯ ในขณะเดียวกัน ก็มีอุปกรณ์ชนิดใหม่ๆ เกิดขึ้นมากมาย เช่น แท็บเล็ตหรือนาฬิกาอัจฉริยะ

    [​IMG]

    การที่จำนวนผู้ใช้เติบโตอย่างรวดเร็ว โฟกัสของทีมงาน LINE จึงต้องสนใจเรื่องเสถียรภาพ (reliability) เป็นหลัก เพราะเคยเจอปัญหาเรื่องเสถียรภาพช่วงราวปี 2013 ทำให้เกิดภาวะส่งข้อความไม่ไป/ไปไม่ถึงผู้รับ เมื่อโฟกัสหลักของทีมวิศวกรอยู่ที่เสถียรภาพ จึงไม่เคยมีโอกาสได้มาปรับปรุงตัวสถาปัตยกรรมที่ออกแบบไว้ตั้งแต่ราวปี 2011 เลย

    LINE จึงเกิดภาวะ technical debt หรือการเป็น "หนี้" เชิงเทคนิค ที่สถาปัตยกรรมในอดีตมีปัญหาบางจุด แต่ตอนนั้นไม่ได้แก้ และตามหลอกหลอนมายังปัจจุบัน

    [​IMG]

    ทีมวิศวกรของ LINE บอกว่ารับทราบปัญหาเหล่านี้เป็นอย่างดี แต่ตลอดหลายปีที่ผ่านมาไม่เคยมีความพยายามตั้งใจแก้ปัญหานี้กันอย่างจริงจัง ทำให้ปี 2019 นี้ LINE จึงตั้งทีม LINT (Line Improvement for Next Ten years) มาทำหน้าที่นี้

    [​IMG]

    เนื่องจากปัญหาทางสถาปัตยกรรมมีจำนวนมาก ทีม LINT จึงโฟกัสแก้ไขเฉพาะบางปัญหาก่อน ที่แก้ไปแล้วในปี 2019 มีด้วยกัน 4 อย่างคือ

    1. เปลี่ยนระบบการส่งข้อความมายังไคลเอนต์ จากเดิมที่พัฒนาบนสเปก SPDY ที่ไม่เป็นมาตรฐาน หาไลบรารียาก เปลี่ยนมาเป็น HTTP/2 แทน และเปลี่ยนจากการเปิดคอนเนคชั่นแบบ long polling มาเป็น push
    2. เปลี่ยนระบบดึง (fetch) ข้อความสำหรับเครื่องที่ไม่ได้ล็อกอินนานๆ ที่เปิดมาแล้วต้องซิงก์ข้อความนานมาก มาใช้ระบบใหม่ที่ทำงานรวดเร็วและประหยัดการประมวลผล-สตอเรจฝั่งเซิร์ฟเวอร์มากขึ้น
    3. ปรับเรื่องการออก token ยืนยันตัวตนใหม่ (ไม่ได้พูดในงาน)
    4. ปรับการตั้งค่าสตอเรจทั้งไคลเอนต์/เซิร์ฟเวอร์ (ไม่ได้พูดในงาน)

    หมายเหตุ: รายละเอียดในสไลด์ของคุณ Nakamura มีเรื่องสถาปัตยกรรมทางเทคนิคแบบลงลึก (มากๆ) จึงไม่ขอเขียนถึงในที่นี้ แต่ผู้สนใจสามารถดาวน์โหลดสไลด์ กันได้

    [​IMG]

    ถึงแม้โครงการ LINT ของปี 2019 ไม่ได้แก้เรื่องการล็อกอินหลายเครื่องพร้อมกัน แต่ผมเห็นในแผนการของ LINT ในอนาคตมีระบุเรื่องนี้ไว้ชัดเจน (3 อันบนในภาพ) ผมจึงได้สอบถามทั้งคุณ Nakamura และ Oishi เพื่อขอขยายความในประเด็นนี้

    คำตอบที่ได้เป็นเหมือนในสไลด์แรกคือ สถาปัตยกรรมของ LINE วางไว้ตอนแรก มองแค่ 1 user 1 device 1 session จึงไม่รองรับการล็อกอินหลายเครื่องพร้อมกัน ถ้าจะทำให้รองรับได้ (เช่น กรณีของ iPhone + iPad หรือกรณีของมือถือ+พีซี) ต้องใช้ท่าแฮ็กเป็นกรณีพิเศษ ต้องทำการ migrate ข้อมูลระหว่างฐานข้อมูลไปมา ซึ่งเปลืองทรัพยากรมาก ตรงนี้ LINE จึงเปิดให้ใช้หลายเครื่องเป็นกรณีๆ ไป และจำกัดเฉพาะอุปกรณ์เป็นชนิดเท่านั้น นี่จึงอธิบายได้ว่าทำไมเราไม่สามารถล็อกอินใน LINE บนสมาร์ทโฟนหลายเครื่องได้พร้อมกัน

    คุณ Oishi บอกว่าทีมงานตั้งใจรองรับการใช้งานหลายอุปกรณ์ให้ดีกว่านี้ เพราะคิดว่าโลกในปัจจุบัน พฤติกรรมของผู้ใช้เปลี่ยนไป ผู้ใช้มีหลายเครื่องหลายบัญชีกว่าเดิม และส่งข้อมูลเป็นปริมาณต่อคนเยอะขึ้น ทำให้ระบบเซิร์ฟเวอร์หลังบ้านของ LINE เองก็ต้องก้าวตามให้ทันด้วย

    [​IMG]

    ส่วนประเด็นเรื่องสตอเรจว่าทำไมไม่เก็บข้อมูลแชทหรือรูปภาพให้ตลอดไป คำตอบก็ตรงไปตรงมาว่าเป็นเรื่องของต้นทุนฝั่งเซิร์ฟเวอร์นั่นเอง (LINE ใช้ระบบคลาวด์ภายในของตัวเองชื่อ Verda ที่พัฒนาบน OpenStack แต่ก็มีส่วนที่เขียนเองอยู่เยอะ) ด้วยต้นทุนการเก็บข้อมูลที่สูงมาก ทำให้ LINE ไม่สามารถรองรับข้อมูลทั้งหมดได้ และต้องปล่อยให้ข้อมูลแชทที่เก่าเกินไปนั้นหมดอายุและถูกลบทิ้งไป

    กล่าวโดยสรุปคือ ปัญหาเหล่านี้เป็นเรื่องที่ LINE รับทราบดี แต่ต้องใช้เวลาอีกสักระยะในการแก้ไขผ่านโครงการ LINT และยังไม่สามารถระบุได้ว่าจะเห็นผลกันเมื่อไร ตอนจบการสัมภาษณ์ ผมจึงถือโอกาสเป็นตัวแทนผู้ใช้ LINE ในไทย จับมือให้กำลังใจกับวิศวกรทั้งสองท่านเพื่อให้แก้ปัญหาโดยเร็วครับ

    [​IMG]

    คุณ Shunsuke Nakamura (ซ้าย) และคุณ Masakuni Oishi (ขวา)

    Topics: LINEDevelopmentIn-Depth
     

แบ่งปันหน้านี้