High Scale Web Infrastructure 2012

porsche cayenne งามจริงๆ 🙂

สวัสดีครับ ช่วงนี้ ผมมักจะพูดถึงแต่เรื่อง Web Security ไม่ค่อยได้พูดถึงเรื่อง
การวาง Web Infrastructure มากนัก เพราะว่า ถ้าวางแผน วางครั้งแรก ดีๆ
มีการ monitor และ มีระบบ alert เมื่อ service มีปัญหา ก็จะทำให้ ปัญหาจุกจิกไม่มี

วันนี้ ผมจะมาพูดถึง technology ของเว็บในปี 2012 ว่า เราสามารถใช้ Open Source
ตัวไหนมาช่วยได้บ้าง ในที่นี้ผมจะพูดถึงเว็บทั่วๆ ไป และอ้างอิง technology ที่ใช้กัน
กับเว็บใหญ่ๆ ระดับโลกเช่น Facebook, Youtube และอื่นๆ ..
Varnish ตัวนี้ เป็น caching อย่างดี สำหรับเว็บในยุคนี้ คือจะสามารถ cache
ได้หลายระดับมาก และยังเขียน VCL (Varnish Configuration Language) ได้ละเอียด
ผมชอบตัวนี้มากๆ มันทำได้ดีและง่ายกว่าพวก hardware หรือ load balancer ราคาแพงๆ
เสียอีก เหมาะอย่างยิ่งกับเว็บที่เป็น static page ล้วนๆ แทบจะไม่ต้องไปเรียก web server
กันเลยทีเดียว หรือ dynamic page ก็สามารถ caching ได้ แต่เวลาที่มีการ update page
ใหม่ ต้องมีการ purge/ban URL หรือ page หรือ file ที่ไม่ต้องการให้ cache ออกไป
nginx (Engine X) ตัวนี้เป็น web server ที่ผมชอบมากๆ ส่วนตัวแล้ว ผมเอามาทำ
เป็น web server สำหรับ static file เพราะถ้าเทียบกับ web server รุ่นเก๋าอย่าง Apache22
แล้ว nginx เองทำงานเบากว่ามากๆ เรียกได้ว่า แทบไม่เปลือง memory ของเครื่องเลย
หรือถ้าเป็นไปได้ เอามาใช้กับเว็บที่ใช้ PHP แทน Apache22 ได้ ก็จะทำให้ web server
ทำงานบำลง แต่ได้ประสิทธิภาพเพิ่มขึ้นมาก ..
memcached เป็นอีกตัวนึงที่ใช้ร่วมกันเวลาเขียนโปรแกรม แล้วไม่ต้องเก็บ data เล็กๆ
บางอย่างลง file หรือเวลา query data มาจาก database ก็สามารถ เก็บลงบน memcached
ที่เป็น memory ก่อน ก็จะทำให้ ทำงานได้เร็วขึ้นมาก ..
FlashCache อันนี้ผมพูดถึงระดับ Kernel ของเครื่องที่ใช้ทำ File Server ตัวนี้ จะช่วยได้มาก
เวลาที่มีการเรียก file ต่างๆ ซ้ำๆ กัน จะไม่ต้องไปเรียก จาก file จริงๆ แต่จะมีการเรียกที่ระดับ
cache ของ Kernel แทน ตรงนี้ เป็นข้อดีของ Linux ที่ออกแบบโครงสร้างของ OS มาได้ดีมาก
PHP ผมจะไม่พูดถึงก็เป็นไปไม่ได้ เพราะว่าเว็บประมาณกว่า 90% ของโลก ใช้ PHP เขียน
สำหรับ PHP เอง ก็มีวิธีการที่ให้ทำงานได้เร็ว และมีประสิทธิภาพมากขึ้น โดยไม่ต้องทำอะไรมาก
เราสามารถใช้พวก Alternative PHP Cache (APC) มาลดการใช้งาน CPU ในการ compile code
ของ PHP ลงได้ ตัวนี้ ต้องลองใช้กันดูครับ สำหรับเว็บที่มีการใช้งาน PHP หนักๆ ..

สำหรับในเรื่องของส่วนอื่นๆ ที่ไม่ใช่ส่วนของ web server กันบ้าง แต่ก็มีความเกี่ยวข้องกัน
MySQL ผมว่าเป็น Database ที่ดีมากๆ ตัวนึง อยู่ที่ว่าเราออกแบบโครงสร้างและ optimize
ได้ดีเพียงใดเท่านั้น การทำ index ก็เป็นเรื่องที่สำคัญ บางครั้ง ผมเจอ load จำนวนมหาศาล
และทำงานได้ช้ามาก พอเข้ามาดูพบว่า ไม่มีการทำ index ที่ดี พอทำไป load หายไปหมด
และทำให้ทำงานได้เร็วขึ้นมากๆ ด้วย ตรงนี้ เป็นส่วนที่สำคัญมากครับ ..
noSQL มีอยู่หลายตัวที่นิยมนำมาใช้กัน แต่ผมจะไม่ได้พูดถึงในที่นี้ เพราะต้องยอมรับว่า
ที่ผ่านมา งานผมแค่ MySQL+Memcached ก็เอาอยู่แล้ว เลยยังไม่จำเป็นต้องใช้พวก
noSQL ต่างๆ พวกนี้ มาช่วยลดภาระของ Database หลัก ..
Wowza ตัวนี้ ไม่ถือว่าเป็น Open Source แต่ราคาก็ถือว่าไม่แพงมาก ถ้าเทียบกับ
Software ที่ใช้ทำ Streaming Server ตัวอื่น และประสิทธิภาพ เท่าที่ผมได้ทดลองใช้
ถือว่ายอดเยี่ยมเลยทีเดียว รองรับจำนวนผู้ใช้งานจำนวนมากได้พร้อมๆ กัน และยัง
มี format ในการ stream ได้รองรับทุก OS ทุก browser ไม่ว่าจะเป็น iOS, Android

ที่พูดมานี้ ก็เป็น technology ของยุคนี้ ที่เกี่ยวกับ web service, web application ต่างๆ
จริงๆ แล้วยังมี software อีกหลายๆ ตัวที่น่าสนใจ แต่ยังไม่ได้ใช้เป็นส่วนหลักๆ
วันหลังผมจะมาเขียนถึงแนวคิดต่างๆ ที่ควรคำนึงถึงในการวางระบบใหญ่ๆ ว่า มีอะไรบ้าง
ที่จะทำให้ระบบของเรามีประสิทธิภาพ รองรับกับการใช้งานของคนจำนวนมากได้ และสามารถ
ตรวจสอบปัญหา และแก้ไข ได้เร็ว ทันที ตลอดเวลา ..

Facebook Comments

Leave a Reply

Your email address will not be published. Required fields are marked *