0155 | 1 กิโลกรัมหนักเท่ากับอะไร?
Tuesday, April 2nd, 2013 Posted in Misc | No Comments »เคยสงสัยกันมั้ยครับว่าไอ้ 1 กิโลกรัมนี่มันมีที่มามาจากไหน? หน่วยกิโลกรัมถูกนิยามโดยหน่วยงานฝรั่งเศษที่ชื่อว่า Le Système international d’unités (International System of Unit) ที่คุ้นเคยกันดีในชื่อมาตรฐาน metric นั่นเองครับ
หน่วยงานนี้ได้กำหนดมาตรฐานของหน่วยวัดหลักๆ ไว้ที่ใช้กันอยู่ปัจจุบันก็เช่น ระยะทาง (เมตร) , น้ำหนัก (กิโลกรัม) , เวลา (วินาที) , กระแสไฟ (แอมแปร์) , อุณหภูมิ (เคลวิน) แล้วก็อีกหลายๆ อย่างครับ ทีนี้สำหรับหน่วยทั่วๆ ไปอย่างเช่นเวลาหรือระยะทางเนี่ย เป็นการกำหนดโดยการ “นิยาม” อ้างอิงจากค่าคงที่ต่างๆ เช่นเวลาก็เป็นจำนวนรอบการเปลี่ยนสถานะของอะคอมซีเซียม-133 ที่มีจำนวนครั้งแน่นอน หรือระยะทาง ก็ใช้นิยามจากสัดส่วนความเร็วแสงในสุญญากาศ ซึ่งพิสูจน์แล้วว่าเป็นค่าคงที่เสมอ แต่สำหรับน้ำหนักเนี่ย ปัจจุบัน (อันที่จริงก็ตั้งแต่ปี 1889) เป็นการนิยามค่าโดยยึดตามมวลต้นแบบของตัวเทียบกิโลกรัม ที่เป็นวัตถุที่จับต้องได้ แล้วเกิดปัญหาว่า เมื่อเวลาผ่านไป นำมวลต้นแบบมาวัดค่าน้ำหนักเทียบกับของเดิมแล้วมวลเปลี่ยน ! ทำให้น้ำหนัก 1 กิโลกรัมจะเปลี่ยนแปลงไปเสมอ หรือถ้าทำมวลต้นแบบหายไปก็ซวยกันเลยทีเดียว… แถม มีหน่วยวัดอีกหลายอย่างที่อิงกับมวล 1 กิโลกรัม แม้แต่น้ำหนัก 1 ปอนด์ที่บางประเทศใช้อยู่ก็นิยามจากน้ำหนัก 1 กิโลกรัม (0.45359237 เท่าของ 1 กิโลกรัม) ก็เลยเกิดแนวคิดที่จะสร้างนิยามใหม่ขึ้นมาครับ
0152 | Full site CDN for upic.me
Tuesday, February 26th, 2013 Posted in Misc | No Comments »อดีตเมื่อปี 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 ชั่วคราว (แต่ก็เร็วกว่าส่งกลับมาไทยเยอะ)