INC

Blog

Azure Content Delivery Network (CDN) - แนะนำ Azure CDN

คอนเทนต์ (content) ที่อยู่ในดาต้าเซ็นเตอร์ 1 หรือ 2 ที่ อาจทำให้การเข้าถึงจากต่างประเทศ หรือต่างทวีปมีความล่าช้า แอพลิเคชั่นที่เก็บคอนเทนต์ไว้กับตัวเองก็อาจจะมีประสิทธิภาพการทำงานลดลง Content Deliver Network หรือ CDN จะช่วยแคช (cache) ข้อมูลเอาไว้ตามโหนดต่างๆ ที่กระจายอยู่ในดาต้าเซ็นเตอร์ทั่วโลก ช่วยให้เราสามารถเข้าถึงคอนเทนต์ได้รวดเร็วยิ่งขึ้นครับ

โดยทั่วไป เจ้าของคอนเทนต์จะเสียค่าใช้จ่ายให้กับผู้ให้บริการ CDN ซึ่งผู้ให้บรืการ CDN ก็จะเสียค่าใช้จ่ายให้กับ ISP, ผู้ให้บริการเครื่อข่าย, และ data center ตามจุดต่างๆ เพื่อวางเซิร์ฟเวอร์ของตนอีกต่อนึง กลุ่มของเซิร์ฟเวอร์ ณ จุดที่ให้บริการนี้เราเรียกว่า "Points of Presences" หรือ PoPs


Photo : ตัวอย่างผู้ให้บริการ Akamai มีจำนวน server มากกว่า 200,000 เครื่องกระจายอยู่ใน 120 กว่าประเทศ ขอบพระคุณภาพจาก IBM cloud ครับ _/\_ https://www.ibm.com/cloud/cdn ^^
Azure CDN คือบริการ Content Delivery Network ใน Microsoft Azure โดยส่วนใหญ่บริการแบบนี้จะมีประโยชน์กับคอนเทนต์แบบ static มากกว่า เช่น ไฟล์ทั่วไป รูปภาพ วิดีโอ หรือหน้าเวปเพจ เป็นต้น ไมโครซอฟท์ไม่ได้ใช้เครือข่ายของตน แต่ใช้เครือข่ายของ Verizon และ Akamai เพื่อให้บริการด้านนี้ครับ (Youtube กับ Facebook ก็ใช้อยู่ครับ)

ตัวอย่างการทำงาน

Photo : ตัวอย่างการทำงาน - ภาพจาก https://docs.microsoft.com/en-us/azure/cdn/cdn-overview
ในระบบ CDN จะมีแหล่งที่เก็บคอนเทนต์ต้นทาง เรียกว่า "origin" ซึ่งอาจเป็น Azure Web App, Azure Cloud Service, Azure Storage account, หรือ web server ที่ใดก็ได้ Geo-DNS จะทำให้ผู้ใช้งานเข้าไปหา PoP ที่ใกล้ที่สุด ซึ่งเซิร์ฟเวอร์ใน PoP ก็จะขอคอนเทนต์จาก origin มาแคชเก็บไว้ คอนเทนต์ที่ถูกแคชจะหมดอายุลงใน 7 วันหากไม่มี HTTP header ระบุ Time-to-Live (TTL) เอาไว้

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

เนื่องจากไมโครซอพท์ใช้ PoP ของ Akamai ในประเทศไทยด้วย (อ้างอิงจาก Azure CDN POP Locations) ดังนั้นวันนี้เราจะลองเก็บคอนเทต์ใน Azure blob storage ที่สิงคโปร์ดู แล้วจะเลือกเครือข่ายของ Akamai เพื่อทดสอบการเข้าถึงคอนเทนต์จาก CDN โหนดในประเทศไทยกันดูครับ

1. วาง content ไว้ใน storage account

Photo : Azure Storage account
หากเรามี Azure storage account อยู่แล้ว ก็อัพโหลดคอนเทนต์ไปไว้ใน Azure blob storage ได้เลยครับ

2. สร้าง CDN profile

Photo : CDN profile
จากนั้นสร้าง CDN profile ใน Azure portal เพื่อเริ่มใช้งาน วันนี้เราเลือก S2 Standard Akamai นะครับ

3. สร้าง CDN endpoint
วันนี้เราจะใช้ Azure blob storage (ซึ่งเราได้อัพโหลดวิดีโอของเราขึ้นไปแล้ว) เป็น endpoint ค่าดีฟอลต์ของ endpoint URL จะลงท้ายด้วย azureedge.net ในกรณีของเราผมตั้งชื่อว่า fabrikamCDN1.azureedge.net นะครับ


Photo : CDN endpoint
ผู้ใช้งานจะใช้ URL นี้เข้าถึงคอนเทนต์ ส่วน CDN ก็จะใช้ URL นี้เข้าไปดึงคอนเทนต์จาก origin มาแคชไว้ที่ตัวเอง (หากต้องการเปลี่ยน URL จาก azureedge.net ไปเป็น custom domain เช่น contoso.com สามารถดูรายละเอียดเพิ่มเติมได้ที่ Link นี้ครับ)

ทดสอบจาก Laptop ในกรุงเทพฯ
เมื่อสร้าง CDN endpoint แล้ว จะพบว่า Geo-DNS จะพาเราไปหา endpoint ที่ IP 23.194.41.23


Photo : Geo-DNS lookup
ลองเข้าถึงวิดีโอผ่าน https://fabrikamcdn1.azureedge.net/<container>/<filename.mp4> ก็จะพบว่า Laptop ของเรากำลังเข้าถึงคอนเทนต์จาก CDN node นี้


Photo : Network activity
เมื่อลองตรวจสอบด้วย IP Location ก็จะพบว่า IP นี้เป็น CDN node ในกรุงเทพฯ ครับ


Photo : Akamai CDN node in Thailand
ทดสอบจาก Azure VM ใน US
สำหรับการทดสอบจากจากทวีปอื่น เราอาจสร้าง Azure VM ไว้ที่อเมริกา Geo-DNS จะพาเราไปหา IP ของ endpoint ที่แตกต่างออกไป (23.219.22.173)


Photo : Geo-DNS lookup
Network activity จาก resource monitor แสดงให้เห็นการเชื่อมต่อจาก Azure VM ในอเมริกามาที่ CDN node นี้


Photo : Network activity
ซึ่ง IP นี้เป็น CDN node ในอเมริกานั่นเองครับ


Photo : CDN node in US
สำหรับตัวอย่างการสร้าง Azure CDN จะอยู่ในวิดีโอนี้นะครับ


***

Content Delivery Network ช่วยแคชคอนเทนต์ไว้ตามจุดต่างๆ (PoPs) ที่ใกล้กับผู้ใช้งาน นักพัฒนาโปรแกรมจะใช้วิธีนี้สำหรับการให้บริการคอนเทนต์แบบ "low latency" และ "fast delivery"

Azure CDN ใช้เครื่อข่ายของ Verizon และ Akamai เป็นตัวเลือกนึงสำหรับท่านที่กำลังมองหา CDN ที่สามารถอินทิเกรตเข้ากับบริการต่างๆ ใน Azure เช่น storage, cloud services, web apps, และ media services ได้ง่ายครับ

อ้างอิงจาก

Overview of the Azure Content Delivery Network
Content Delivery Network
เครดิตภาพปกจาก Photo by Denys Nevozhai on Unsplash

INCComment