Technology

Netflix กระจาย Content ยังไง ?

By Arnon Puitrakul - 29 มีนาคม 2018

Netflix กระจาย Content ยังไง ?

ตกเย็นหลังเลิกงาน กลับบ้านมา Netflix ก็น่าจะเป็นกิจกรรมหนึ่งที่ใครหลาย ๆ คนทำกันหลังเลิกเรียน เลิกงานกันเลยละ (รวมถึงผมด้วย) อย่างที่เรารู้กันว่า Netflix เนี่ยให้บริการในหลากหลายประเทศทั่วโลก จากสถิติ Traffic ของ Netflix คิดเป็น 1 ใน 3 ของ Traffic ใน US แถม Headquarter ใหญ่ของ Netflix ก็ไม่ได้อยู่ใกล้ไทยเลยสักนิด แต่เราก็ยังสามารถดู Netflix ได้อย่างไม่สะดุด ถึงแม้เราจะดูในความละเอียดในระดับ 4K HDR เลยก็ตาม

Traditional Content Delivery

HTTP

ถ้าเรานึกถึงการ Steaming เราก็คงปฏิเสธไม่ได้เลยว่า ส่วนประกอบหลัก ๆ มันก็คือ Server ที่ถือวีดีโออยู่ใน Server เป็นจำนวนมาก กับ เครื่อง Client ที่เข้ามาเชื่อมต่อเพื่อส่ง Request เข้ามาขอวีดีโอจาก Server ไป

แต่วิธีนี้มันก็มีข้อเสียเหมือนกัน อย่างแรกคือ ถ้าเราบอกว่า ผู้ใช้เรามีไม่เท่าไหร่ Server ตัวนึงของเราก็คงป้อนข้อมูลให้กับ Client ได้สบาย ๆ อยู่แล้ว แต่ถ้าเราดันมี Client ที่เยอะมาก ๆ แล้วละก็ การขยาย Server Farm ไปเรื่อย ๆ ก็คงไม่ใช่เรื่องที่คุ้มค่าเท่าไหร่

ข้อถัดมา คนที่เล่นเกมออนไลน์น่าจะเคยสัมผัสกัน ลองสังเกตดูว่า ถ้าเราเล่นเกมออนไลน์ที่เราต้องเชื่อมต่อไป Server ในประเทศที่ไกลจากเรา Ping หรือ Latency มันจะสูงมาก ๆ จนบางทีเล่นไม่ได้เลยก็มี ทำให้เราต้องเลือกเล่นเกมออนไลน์ที่มี Server ใกล้ ๆ กับประเทศเราอย่าง สิงคโปร์ หรือในประเทศเราเองก็เช่นกัน

Latency คืออะไร ?

โดยปกติแล้ว เวลาเราจะส่งข้อมูลกันไปมา เราอาจจะคิดว่า ก็เอาความเร็วคูณด้วยขนาดแล้วตอบเลยสิ คำตอบคือ ไม่ได้ เพราะในการเชื่อมต่อจริง ๆ มันมีค่าอะไรหลายอย่างมาก ๆ

TCP Connection Scheme
TCP Connection Scheme

เช่นเราจะบอกว่า เราจะเปิด TCP/IP Connection เราก็ต้องมีกระบวนการ การเปิดและปิดการเชื่อมต่อมากมาย แต่ค่านึงที่อยากให้สนใจคือ RTT หรือ Round-Trip Time คือเวลาที่ข้อมูลถูกส่งออกไปจนได้รับการยืนยันจากปลายทางแล้วว่าได้รับแล้ว ถามว่ามัน สำคัญยังไง ?

via GIPHY

ลองนึกภาพเหมือนเราเล่นเกมออนไลน์ดู ว่าเราต้องการความ Real-time มากแค่ไหน เผลอ ๆ ถ้าเล่นเกมอย่าง CS:GO ที่เป็น FPS สัก ms นึงนี่ตัดสินแพ้ชนะได้เลยนะ (ใน Pro Player อะนะ ถ้าเป็นเราคือ จะน้อยจะมากก็แพ้เหมือนเดิม 😭) ในการ Steaming ก็เช่นกันที่มันต่างจากการโหลดทั้งไฟล์เข้ามาตรงที่ ถ้าเราโหลดทั้งไฟล์เข้ามา เราก็จะดูเมื่อมันโหลดเสร็จ เพราะฉะนั้น Real-time ก็ไม่ใช่ปัจจัยที่ส่งผลในการดูเลย แต่กลับกันถ้าเรา Steaming มันก็ต้องการความ Real-time มากกว่าแน่นอน เพราะเราต้องโหลดส่วนที่อยู่ข้างหน้าที่เราดูอยู่ เพื่อให้เราดูแล้วมันสะดุดตลอดเวลา กล่าวคือ Latency นั้นมีผลต่อการ Steaming มากอยู่พอสมควรเลย

และเหตุผลสุดท้ายที่ทำให้การใช้ Server เครื่องเดียวส่งข้อมูลให้เครื่องเป็นจำนวนมากคือ Single Point of Failure หรือถ้าให้พูดง่าย ๆ คือ ถ้าล่ม ก็คือ ใช้ไม่ได้เลยนั่นเอง นึกภาพว่า เรามีเครื่อง Server เครื่องเดียว แล้วถ้าเครื่องนั้นมันเกิดล่มขึ้นมา ก็ชิบหายกันเลย ไม่มีใคร Steam อะไรได้เลยนะ เพราะ Server ตัวเดียวที่คอยป้อนไฟล์มันล่มไปแล้วนั่นเอง

Content Delivery Network (CDN)

Netflix CDN Location
Netflix CDN Locations source: How Netflix Works With ISPs Around the Globe to Deliver a Great Viewing Experience

Content Delivery Network หรือ CDN จะเข้ามาเป็นพระเอกขี่ม้าขาว เข้ามาช่วยในเรื่องนี้ โดยหลักการของ CDN คือ มันจะ Cache ข้อมูลไว้บน Server ตัวอื่น ๆ หลาย ๆ ตัว เพื่อให้เวลา Client เรียกมันก็สามารถวิ่งไปหา Server ที่ใกล้ที่สุดเพื่อลด Latency ได้ และเพราะว่า CDN คือการเอา Data ไป Cache อยู่ใน Server เครื่องอื่น ๆ ทำให้ Load ของ Server หลักก็จะน้อยลง และเวลาล่ม Client ก็ยังเข้าใช้ผ่าน CDN ที่ใกล้ที่สุดได้อยู่ ทำให้ปัญหา Single Point of Failure หายไปทันควัน

ซึ่งจริง ๆ แล้ว CDN ไม่ได้ถูกนำมาใช้ใน Netflix อย่างเดียวนะ แต่ Service หลาย ๆ อย่างในปัจจุบันก็มีการใช้ CDN กันไปหมดแล้ว รวมถึงเว็บนี้ด้วยที่ทำงานอยู่บน Google CDN และ Cloudflare ที่ทำให้ถึงแม้ว่า Host ที่ผมใช้อยู่จะล่ม แต่ทุกคนก็ยังเข้าเว็บผ่าน CDN ได้อยู่ดี

กับอีกเรื่องที่สำคัญคือการ Scale ที่ Content มันถูกกระจายไปตาม Server ตลอดเวลา ทำให้ Load มันไม่กระจุกอยู่กับ Server หลักมากเกินไป ทีนี้ถ้าเราจะขยาย เราก็ไปใช้ CDN Server ที่ใหม่ซะเลย มันก็ช่วยประหยัด Cost ได้ เพราะ Cost ในการขยาย Server มันก็มีข้อจำกัดเหมือนกันทั้งในเรื่องของสถานที่ และพลังงานต่าง ๆ

แต่ Netflix อลังกว่านั้น !!

ด้วยความที่ Netflix เป็นบริการ Steaming ที่ใหญ่มาก ๆ ทั้งในเรื่องของจำนวนวีดีโอ และผู้ใช้ ทำให้ CDN ทั่ว ๆ ไปโยน Content ให้กับ Client ไม่พอแน่นอน Netflix เลยมีอะไรที่เด็ดกว่านั้นนั่นคือ Netflix Open Connect

Netflix Open Connect
Netflix Open Connect

นั่นคือมันเป็น Hardware ตัวนึงที่ตั้งอยู่บน ISP หรือ Internet Service Provider เพื่อใช้สำหรับโยน Content ของ Netflix โดยเฉพาะเลย โดยที่ Hardware ตัวนี้เหมือนสมองของ Netflix เลยที่มันจะทำตัวเป็น CDN Server ที่เก็บหนังและซีรีส์ของ Netflix ทั้งหมดลงไป และพอคนต้องการจะดู มันก็จะไปดึงจาก Open Connect ตัวที่ใกล้ที่สุดมาให้

จาก Hardware ทำให้ Bandwidth ไม่ต้องปนกับ Bandwidth ของ Content อื่น ๆ อีกอย่างคือ ทำให้ Uplink Bandwidth ของ ISP ไม่เยอะมากด้วย เพราะ Content ของ Netflix มันไม่ต้องวิ่งออกจาก ISP เพราะมันโยนจากใน ISP โดยตรงเลย ก็ทำให้เร็วขึ้นอีก

ปัญหาที่น่าจะเกิดขึ้นคือ เมื่อ Client เยอะเกินจนทำให้ตัว Netflix Open Connect มันรับมือไม่ไหว วิธีง่าย ๆ คือ ก็แค่เพิ่มตัว Open Connect เข้าไปใน ISP เข้าไป ก็ทำให้รับ Bandwidth ได้มากขึ้นละ


Amazon Web Services

แต่เรื่องของระบบอื่น ๆ อย่างพวก Member หรือ Recommendation ต่าง ๆ ที่ไม่ได้ใช้ Bandwidth สูงอะไรมาก ก็จะรันอยู่บน AWS หรือ Amazon Web Services ที่เป็น Cloud จากทาง Amazon ที่ทำให้ Netflix พร้อมจะทำ Scaling เมื่อ Server ตรงส่วนนี้คนใช้เยอะขึ้น

สรุป

Netflix เป็นบริการ Steaming ที่ใหญ่เป็นอันดับต้น ๆ ของโลกที่ได้รับความนิยมโคตรสูงมากในปัจจุบัน น่าจะทุก ๆ เย็นหลาย ๆ คนก็คงกลับบ้านมานอนตีพุงดู Netflix กัน แต่ถามว่า Netflix ทำยังไง ถึงสามารถทำให้คนสามารถ Steam พร้อม ๆ กันได้พร้อมกันเป็นจำนวนมากขนาดนี้ นั่นเพราะ Netflix ใช้หลักการของ CDN ในการกระจาย Content ไปตาม CDN Server ในหลาย ๆ ประเทศทั่วโลก เพื่อให้เพียงพอกับความต้องการของผู้ใช้ Netflix ทั่วโลกนั่นเอง

Read Next...

ปัญหาการโอนเงินไม่ผ่านแต่ผ่านกับ Two Generals' Problem

ปัญหาการโอนเงินไม่ผ่านแต่ผ่านกับ Two Generals' Problem

หลายวันก่อนไปซื้อชานมมา จ่ายเงินด้วย QR Code ปรากฏว่า จ่ายไม่ได้ แต่เครื่อง EDC บอกว่า จ่ายผ่านเฉยทำให้คิดถึงปัญหานึงที่น่าสนใจคือ Two Generals' Problem วันนี้เราจะมาเล่าให้อ่านกันว่า มันคืออะไร และเกี่ยวอะไรกับการโอนเงิน...

Stream Apple Music อย่างไรให้ได้คุณภาพสูงสุด

Stream Apple Music อย่างไรให้ได้คุณภาพสูงสุด

เรื่องของเรื่องคือ เราทดลองเล่นเพลงผ่าน AirPlay 2 เข้ากับลำโพงแล้วเสียงมันแปลก ๆเลยไปหาข้อมูลมา เลยทำให้โป๊ะว่า อ้าว.... ชิบหาย Hi-Res ทิพย์นี่หว่า ทำไม เราไปดูเหตุผลในบทความนี้กัน...

ซิงค์ลม vs ชุดน้ำ แบบไหนเหมาะกับใคร

ซิงค์ลม vs ชุดน้ำ แบบไหนเหมาะกับใคร

เมื่อไม่กี่วันมานี้เราเอาเครื่องไปเปลี่ยน CPU มา เป็นตัวที่ดุเดือดขึ้น ทำให้เกิดคำถามว่า เอ๋ เราควรจะใช้เป็นชุดน้ำไม่ว่าจะเปิดหรือปิด หรือจะเป็นซิงค์ลมแบบที่เราใช้งานกันมานาน หลังจากไปหาข้อมูลต่าง ๆ วันนี้เรามาเล่าให้อ่านกันว่า แต่ละอันมันจะเหมาะ หรือไม่เหมาะกับใคร...

Calibrate หน้าจอไปทำไมและทำอย่างไร

Calibrate หน้าจอไปทำไมและทำอย่างไร

เรื่องของเรื่องคือ เราซื้อจอ Dell Ultrasharp 32 นิ้วมาใหม่ และมักนำมาใช้ทำงานพวก Colour Grading และ แต่งรูป ด้วย เรื่องสีเป็นเรื่องสำคัญมาก ๆ ไปนั่งคุยกับเพื่อนก็คือ เพื่อนมาทำเลยให้ค่าาา วันนี้เราจะมาเล่าให้อ่านกันว่า ทำไม เราจำเป็นต้องทำ Display Calibration และ หลักการเบื้องหลังคืออะไร...