By: DH Team
อัปเดตล่าสุด May 4, 2024
บทความนี้ ทางทีมงาน devhub.in.th จะพาเพื่อน ๆ มาทำความเข้าใจว่า CDN คืออะไร หลักการทำงานของ CDN เป็นอย่างไร และบริษัทผู้ให้บริการ CDN ที่สำคัญมีใครบ้างครับ
CDN (ย่อมาจาก Content Delivery Network) คือเครือข่ายเซิร์ฟเวอร์แบบกระจายที่ทำงานร่วมกันเพื่อส่งมอบ (serve) เนื้อหาและข้อมูลให้แก่ผู้ใช้งานได้อย่างรวดเร็วและมีประสิทธิภาพ โดย CDN จะเก็บสำเนาของเนื้อหา (Content) เช่น ไฟล์ HTML, รูปภาพ, วิดีโอ, และสคริปต์ต่าง ๆ ไว้ในเซิร์ฟเวอร์ที่กระจายอยู่ในหลาย ๆ แห่งทั่วโลก เมื่อผู้ใช้งานได้ทำการ request เนื้อหาจากเว็บไซต์ที่ใช้บริการ CDN จากนั้นระบบจะเลือกส่งเนื้อหาจากเซิร์ฟเวอร์ที่ใกล้กับผู้ใช้งานมากที่สุด ทำให้ผู้ใช้งานได้รับเนื้อหาอย่างรวดเร็ว และลดภาระบนเซิร์ฟเวอร์หลัก (Origin Server) ของเว็บไซต์
จากภาพด้านล่างก็คือ CDN ของ Bootstrap สุดยอด CSS เฟรมเวิร์คยอดนิยม จะเห็นว่าเราสามารถ copy ลิงก์เหล่านี้ไปวางบนเว็บและเรียกใช้งาน CSS และ JS ผ่าน CDN ได้เลยครับ โดยไม่ต้องดาวน์โหลดไฟล์หรือซอร์สโค้ดมาวางในเครื่องเราให้ยุ่งยาก
Bootstrap CDN
ส่วนตัวอย่างง่าย ๆ ของการใช้งาน CDN เช่น หากเว็บไซต์ของบริษัทในประเทศไทยมีผู้ใช้งานจากทั่วโลก การใช้ CDN จะช่วยให้ผู้ใช้งานในสหรัฐอเมริกาสามารถเข้าถึงเนื้อหาได้จากเซิร์ฟเวอร์ใน CDN ที่ตั้งอยู่ในสหรัฐฯ แทนที่จะต้องดึงข้อมูลจากเซิร์ฟเวอร์หลักในประเทศไทย ช่วยลดระยะเวลาในการโหลดเว็บไซต์และปรับปรุงประสบการณ์ของผู้ใช้งาน
เมื่อเว็บไซต์ที่ใช้บริการ CDN มีการอัปเดตเนื้อหาใหม่ เนื้อหาเหล่านั้นจะถูกส่งไปยังเซิร์ฟเวอร์ของ CDN ที่กระจายอยู่ในหลาย ๆ ตำแหน่งทั่วโลก เพื่อให้พร้อมสำหรับการเผยแพร่แก่ผู้ใช้งาน
เมื่อผู้ใช้งานเข้าถึงเว็บไซต์ที่ใช้บริการ CDN ผู้ใช้งานจะส่งคำร้องขอ (Request) ไปยัง DNS (Domain Name System) เพื่อแปลงชื่อโดเมนเป็นหมายเลข IP ที่ใช้ในการเชื่อมต่อ
ระบบ DNS ของ CDN จะวิเคราะห์ตำแหน่งของผู้ใช้งานและเลือกเซิร์ฟเวอร์ในเครือข่าย CDN ที่ใกล้กับผู้ใช้งานมากที่สุด เพื่อให้การส่งมอบเนื้อหาเป็นไปอย่างรวดเร็ว
เซิร์ฟเวอร์ของ CDN ที่ถูกเลือกจะส่งมอบเนื้อหาที่ผู้ใช้งานร้องขอผ่านเครือข่ายของ CDN ไปยังอุปกรณ์ของผู้ใช้งาน โดยใช้เทคนิคต่างๆ เพื่อเร่งความเร็วในการส่งมอบ เช่น การบีบอัดข้อมูล และการใช้โปรโตคอลที่เหมาะสม
เซิร์ฟเวอร์ของ CDN จะเก็บสำเนาของเนื้อหาที่มีการร้องขอบ่อยไว้ในแคช เพื่อให้สามารถส่งมอบเนื้อหาได้อย่างรวดเร็วยิ่งขึ้นในครั้งต่อ ๆ ไป โดยไม่จำเป็นต้องไปดึงข้อมูลจากเซิร์ฟเวอร์หลักของเว็บไซต์
6. การอัปเดตเนื้อหา (Content Update)
เมื่อเนื้อหาบนเว็บไซต์มีการเปลี่ยนแปลง CDN จะทำการอัปเดตเนื้อหาในเซิร์ฟเวอร์ทั้งหมดในเครือข่าย เพื่อให้มั่นใจว่าผู้ใช้งานจะได้รับเนื้อหาที่เป็นปัจจุบันเสมอ
CDN ล่มคือปัญหาหลักที่เราอาจจะหลีกเลี่ยงไม่ได้เลยครับ ไม่วันใดก็วันหนึ่ง (แต่ก็เป็น trade-off เนอะ) และ CDN อาจล่มได้ด้วยหลายสาเหตุ เช่น เซิร์ฟเวอร์ CDN เกิดปัญหาทางเทคนิค, มีการโจมตีทาง DDoS, ปัญหาการเชื่อมต่อเครือข่าย, ความผิดพลาดในการอัปเดตหรือบำรุงรักษาระบบ เป็นต้น
เมื่อ CDN ล่ม เว็บไซต์ที่พึ่งพา CDN ในการส่งมอบเนื้อหาจะได้รับผลกระทบอย่างหลีกเลี่ยงไม่ได้ เนื้อหาต่าง ๆ เช่น รูปภาพ, CSS, JavaScript อาจจะโหลดช้าหรือไม่แสดงผลเลย ส่งผลให้ประสบการณ์ผู้ใช้แย่ลงอย่างมาก
แนวทางแก้ปัญหาเบื้องต้น คือการตั้งค่า Fallback หรือ Backup ให้เว็บไซต์สามารถโหลดไฟล์จากแหล่งอื่นได้ หากไม่สามารถเรียกใช้จาก CDN ได้ตามปกติ เช่น กำหนดให้ระบบโหลดไฟล์ CSS หรือ JS จากเซิร์ฟเวอร์ Origin โดยตรง แทนการพึ่งพา CDN เพียงอย่างเดียว นอกจากนี้ การเลือกใช้บริการ CDN ที่มีความน่าเชื่อถือ มี Uptime สูง และมีเครือข่าย PoP ที่กระจายตัวทั่วโลก ก็ช่วยลดความเสี่ยงจากปัญหา CDN ล่มได้เช่นกัน
ตัวอย่างกรณีศึกษาที่เกิดขึ้นจริง คือเมื่อเดือนพฤษภาคม 2021 ที่ผ่านมา jsDelivr ซึ่งเป็น Open Source CDN ชื่อดัง ประสบปัญหาล่มเป็นวงกว้าง ส่งผลกระทบต่อเว็บไซต์กว่า 10 ล้านเว็บทั่วโลก ที่ใช้งาน jsDelivr ในการ Serve ไฟล์ CSS และ JavaScript ต่างๆ ซึ่งรวมถึง Bootstrap ซึ่งเป็น Front-end Framework ที่ได้รับความนิยมสูงสุดด้วย ทำให้หลายเว็บไซต์แสดงผลผิดพลาด ปุ่มหรือเมนูใช้งานไม่ได้ จนกระทั่งลูกค้าต้องโทรเข้ามาสอบถามปัญหากันอย่างมากมาย
ส่วนภาพด้านล่างก็คือสด ๆ ร้อน ๆ เลยครับ เกิดขึ้นเมื่อวาน (ช่วงเช้าวันที่ 2 พฤษภาคม 2567 ตามเวลาประเทศไทย) ตัว jsdelivr CDN ล่ม สามารถอ่านเพิ่มเติมได้ในโพสต์บน Facebook ของ devhub.in.th เราได้เลยครับ
เหตุการณ์นี้ชี้ให้เห็นถึงความเสี่ยงของการพึ่งพา CDN แหล่งเดียว และความจำเป็นในการมีแผนสำรองเพื่อรับมือกับปัญหาที่อาจเกิดขึ้น ไม่ว่า CDN จะดีหรือเสถียรแค่ไหน ก็ยังมีโอกาสล่มได้เสมอ การวางแผนรองรับไว้ล่วงหน้า จะช่วยลดผลกระทบที่เกิดขึ้นและทำให้เว็บไซต์ของเราให้บริการได้อย่างต่อเนื่อง แม้ในยามที่ CDN มีปัญหา
ปัจจุบันมีผู้ให้บริการ CDN หลายรายทั่วโลก ทั้งบริษัทขนาดใหญ่และผู้ให้บริการเฉพาะด้าน บางส่วนของผู้ให้บริการ CDN ชั้นนำ ได้แก่
CDN หรือ Content Delivery Network คือเครือข่ายเซิร์ฟเวอร์ที่กระจายอยู่ในหลายๆ ตำแหน่งทั่วโลก ทำงานร่วมกันเพื่อส่งมอบเนื้อหาและข้อมูลให้แก่ผู้ใช้งานอย่างรวดเร็ว มีประสิทธิภาพ และเสถียรภาพ ด้วยการเลือกเซิร์ฟเวอร์ที่ใกล้กับผู้ใช้งานมากที่สุดในการส่งมอบเนื้อหา CDN ช่วยลดระยะเวลาในการโหลดเว็บไซต์ ปรับปรุงประสบการณ์ของผู้ใช้งาน และลดภาระบนเซิร์ฟเวอร์หลักของเว็บไซต์
การใช้บริการ CDN เป็นทางเลือกที่น่าสนใจสำหรับเว็บไซต์ที่มีผู้ใช้งานจากทั่วโลก หรือมีการ traffic ปริมาณมาก ไม่ว่าจะเป็นเว็บไซต์สำหรับธุรกิจ บล็อก สื่อสตรีมมิ่ง หรือแม้แต่แอปพลิเคชันมือถือ โดยผู้ใช้งานสามารถเลือกจากผู้ให้บริการ CDN ที่หลากหลาย ทั้งรายใหญ่อย่าง Akamai, Cloudflare หรือผู้ให้บริการคลาวด์อย่าง Amazon และ Google โดยพิจารณาจากความต้องการ งบประมาณ และลักษณะการใช้งานของบริษัทหรือเว็บตัวเอง เป็นต้น
อ้างอิง
เปิดโลกการเขียนโปรแกรมและ Software Development ด้วย online courses ที่จะพาคุณอัพสกิลและพัฒนาสู่การเป็นมืออาชีพ เรียนออนไลน์ เรียนจากที่ไหนก็ได้ พร้อมซัพพอร์ตหลังเรียน
เรียนเขียนโปรแกรม