Thursday 31 May 2012

Introduction to Gearman

ก่อนจะทำความเข้าใจกับ Gearman เราควรเริ่มทำความเข้าใจเกี่ยวกับเรื่องการกระจายงานกันก่อน ยกตัวอย่างกรณีของ YouTube ซึ่งในแต่ละวัน มีคน Upload Video ไปที่ YouTube เป็นจำนวนมากมาย  ซึ่งแต่ละ Clip นั้น YouTube ต้องทำการ convert ให้เสร็จเรียบร้อยก่อนจึงจะนำมาสามารถบน web ให้เราดูได้  ถ้าหาก YouTube มี Server เพียงแค่เครื่องเดียว คงไม่สามารถ เพียงพอต่อการให้บริการอย่างแน่นอน ซึ่งจาก ยอดคนใช้งานวันละเป็นล้านคน เราก็คงจินตนาการไม่ออกว่า YouTube มี server ที่คอยให้บริการมากมายแค่ไหน... ?

จากตัวอย่างดังกล่าว จะเห็นได้ว่า YouTube น่าจะมีการกระจายงานไปยัง Server เครื่องต่างจำนวนมาก เพื่อให้ช่วยกัน convert video เพื่อที่จะลดเวลาการรอของ user ลง และสามารถเพียงพอต่อความต้องการใช้งานของ user จำนวนมากด้วย ถ้าหากเรามีพัฒนา Web Application ที่ต้องประมวลผลจำนวนมาก และเราต้องการให้มีการกระจายการทำงานคล้ายๆกับ YouTube เราจะทำอย่างไร ? พัฒนาขึ้นมาเอง ก็อาจจะเป็นตัวเลือกนึง แต่มันคงใช้เวลาไม่น้อยในการพัฒนากว่าที่มันจะ Stable ....ถ้าหากไม่พัฒนาเองแล้วเราจะทำอย่างไร ? ซึ่งคำตอบก็คือ "Gearman" นั่นเอง