ทำไมเว็บใหญ่ๆ โหลดเร็วทั่วโลก
YouTube มาจากอเมริกา แต่ดูในไทยไม่หน่วงเลย เพราะ YouTube มีสาขากระจายอยู่ใกล้เรา เปรียบเหมือน 7-Eleven ที่มีร้อยสาขา ฝรั่งเรียกว่า CDN
YouTube มาจากอเมริกา ส่วนเรานั่งดูในกรุงเทพ ห่างกันครึ่งโลก ทำไมเปิด video ใน YouTube จากบ้านเรา ถึงโหลดเรียบ เลื่อน slider กลับไปกลับมา ก็ไม่หน่วง
คำตอบอยู่ที่ระบบที่เรียกว่า CDN
ปัญหาของ server ที่อยู่ที่เดียว
สมมติ YouTube มี server อยู่ที่อเมริกาที่เดียว ทุกคนทั่วโลกที่ดู YouTube ต้องส่งคำขอข้ามไปที่อเมริกา แล้วรอ video ส่งกลับมา
ปัญหาคือ ระยะทางไกล ข้อมูลเดินทางช้า ข้อมูลในอินเทอร์เน็ตวิ่ง ด้วยความเร็วใกล้แสง ก็จริง แต่จากกรุงเทพไปอเมริกายังต้องใช้เวลาเป็นเศษวินาที การดู video ที่ต้องส่งข้อมูลเป็นเมกะไบต์ทุกวินาที จะหน่วงทันที
ปัญหาที่สอง server หลักรับโหลดไม่ไหว ถ้าคนทั่วโลกเปิด YouTube พร้อมกันเป็นพันล้านคน server ตัวเดียวตอบไม่ทันแน่นอน
CDN คือสาขาของร้านที่กระจายไปทั่ว
ลองนึกถึง 7-Eleven ครับ ถ้าทั้งประเทศมีสาขาเดียวที่กรุงเทพ คนต่างจังหวัดต้องบินมาซื้อขนม ลำบากมาก แต่ของจริง 7-Eleven กระจายสาขาไปทั่ว ทุกซอยมีสาขาใกล้บ้าน เดินไปซื้อได้สบาย
CDN ทำงานแบบเดียวกัน ฝรั่งเรียกเต็มว่า Content Delivery Network เป็นเครือข่ายของ server ที่กระจายไปทั่วโลก แต่ละจุดเก็บ copy ของ video รูป และเนื้อหาเว็บเอาไว้
เวลาคนไทยเปิด YouTube ระบบเลือก CDN ที่ใกล้ที่สุด อาจอยู่ที่สิงคโปร์หรือฮ่องกง ส่ง video จากที่นั่นกลับมา ไม่ต้องวิ่งข้ามมหาสมุทร เลย
ลองดูความต่างเอง
ในกล่องข้างล่าง สลับว่าใช้ CDN หรือไม่ใช้ ดูว่าระยะทางต่างกันแค่ไหน
ตัวเลขระยะทางและ latency เป็นค่าประมาณ ใช้แสดงความต่างระหว่าง 2 แบบ
เห็นไหมครับ ระยะทางต่างกันราว 8 เท่า ความรู้สึกเลยต่างกันชัดเจน คนอเมริกาดู YouTube ใกล้ server หลัก คนไทยดูจาก CDN ที่สิงคโปร์ ทั้งสองรู้สึก เร็วเหมือนกัน
CDN ทำได้กับของที่ "ไม่เปลี่ยน" เท่านั้น
CDN เก็บ copy ของไฟล์ที่ไม่ค่อยเปลี่ยน เช่น video รูป ไฟล์เว็บ ของไม่กี่ขนาด copy ไปไว้ทั่วโลกได้
แต่บางอย่างเปลี่ยนทุกวินาที เช่น feed Facebook ยอดเงินในแอปธนาคาร แชต LINE พวกนี้ CDN เก็บไม่ได้ ต้องคุยกับ server หลักทุกครั้ง
เว็บใหญ่ๆ เลยใช้ CDN กับของที่ไม่ค่อยเปลี่ยน และคุยตรงกับ server หลักเฉพาะ ของที่เปลี่ยนตลอด ผสมกันให้ทั้งเร็วและสด
เว็บที่ไม่ใช้ CDN เปิดในไทยจะรู้สึกได้
ถ้าเปิดเว็บที่ host ใน server เล็กๆ ที่อเมริกาและไม่ได้ใช้ CDN จะสังเกตว่า
- เปิดครั้งแรกช้า รอ 2 ถึง 3 วินาทีถึงเริ่มเห็นหน้า
- โหลดรูปทีละรูป ค่อยๆ โผล่
- เลื่อนหน้าจะมีบางส่วนที่ยังไม่โหลดเสร็จ
ต่างจากเว็บที่ใช้ CDN ที่เปิดมาเร็วทันที เพราะข้อมูลส่วนใหญ่อยู่ใน CDN ใกล้บ้าน อยู่แล้ว
สรุปบทนี้
- CDN คือเครือข่ายของ server ที่กระจายทั่วโลก เก็บ copy ของเนื้อหาเว็บไว้
- เวลาเราเปิดเว็บ CDN เลือก node ที่ใกล้บ้านที่สุดให้อัตโนมัติ ทำให้เร็วขึ้นเป็นเท่าตัว
- เหมาะกับเนื้อหาที่ไม่ค่อยเปลี่ยน เช่น video รูป ไฟล์เว็บ ส่วนของที่เปลี่ยนตลอด ยังคุยตรงกับ server หลัก
- เว็บใหญ่ๆ ทุกวันนี้ใช้ CDN เกือบหมด เลยรู้สึกเร็วทั่วโลก
เหลืออีก 2 บทที่จะเอาความรู้ทั้งหมดมาใช้ในชีวิตจริง บทต่อไปเรื่อง Wi-Fi ฟรีในร้านกาแฟ ใช้ได้ไหม ใช้ยังไงให้ปลอดภัย