0152 | Full site CDN for upic.me

อดีตเมื่อปี 2010 : หลังจากเป็น reverse proxy ธรรมดาๆ มาได้พักนึง ตอนนี้ก็ขยายระบบเป็น full site cdn เรียบร้อยแล้วฮับ :) พร้อมกับเพิ่ม node ขึ้นมาหลายประเทศเลย

ก่อนทำ response time เฉลี่ย 1.55 วินาที

หลังทำ response time เฉลี่ยลดลงมาเหลือแค่ 0.56 วินาที !! (ลดลง 0.99 วินาที)

จริงๆ ระบบหลักที่เคยเขียนไว้ก็สามารถทำ read/write splitting ได้แล้ว แถมทำ async write สำหรับการ update สถิติและข้อมูลการเข้าดูไว้แล้วด้วย แต่ปัญหาใหญ่สุดคือ maintain code ยากขึ้น ต้องทำ versioning กับ code environment detection ใหม่ให้ดีๆ อีกที แล้วก็มีบางส่วนจำเป็นต้องเป็น synchronous writing ก็เลยต้องพึ่ง proxy กลับไปให้ทำงานที่ node เดียวเพื่อไม่ให้มีปัญหาอีกที (comment / up รูปก็อืดเหมือนเดิมไปละกัน)

รายการ node ตอนนี้ แผนที่คร่าวๆ ได้แบบนี้ครับ Node หลักอยู่ที่ไทย เส้นม่วงเป็น Cache ธรรมดา ส่วนเส้นชมพูเป็น Full CDN ยิงรอบสามประเทศคือ TH,US,DE แบ่งโครงข่ายได้ตามคำอธิบายด้านล่างฮะ

  • 3x Thailand รับผิดชอบ traffic ภายในประเทศไทยทั้งหมด
  • 2x TH-Inter เนื่องด้วยมันมี capacity ต่ำแต่ bandwidth inter สูง ก็ให้มันรับภาระส่งต่อข้อมูลไปให้ node ต่างประเทศ + รับการใช้งานแถวๆ SEA นิดหน่อย
  • 1x Singapore รองรับการใช้งานย่าน SEA และ Australia รวมถึงเป็นเส้นทางหลักสำหรับส่งต่อข้อมูลให้ US
  • 2x Hong Kong รองรับการใช้งานจากจีน ญี่ปุ่น เกาหลี เอเชียใต้ รวมถึงเป็นเส้นทางหลักสำหรับส่งต่อข้อมูลให้ DE และเส้นทางรองสำหรับ US
  • 1x US (Missouri) รองรับการใช้งานทวีปอเมริกาทั้งหมด (ทั้งเหนือกลางใต้) รับภาระจาก googlebot / facebook / msnbot ด้วย แล้วก็เป็น Full CDN Node คือ script เว็บทำงานที่ตัวเอง ดึงฐานข้อมูลจากตัวเองเลย ไม่ต้องส่งคำร้องมาไทย
  • 1x Germany รองรับการใช้งานทั้งยุโรป เอเชียตะวันตก รัสเซีย และแอฟริกา แถมเป็น Full CDN ด้วย แต่ยัง sync ข้อมูลไม่เสร็จ ตอนนี้ส่งต่อไปให้ US ชั่วคราว (แต่ก็เร็วกว่าส่งกลับมาไทยเยอะ)