Yaws เว็บเซิร์ฟเวอร์ประสิทธิภาพสูงที่พัฒนาด้วยภาษา Erlang
สรุปใจความสำคัญ
- Yaws พัฒนาโดย Claes Wikström ด้วยภาษา Erlang
- สามารถทำงานได้ทั้งแบบ Standalone และแบบฝังในแอปพลิเคชัน Erlang อื่นๆ
- โดดเด่นด้านการรองรับ High Concurrency เนื่องจากใช้ Lightweight threading ของ Erlang
- ผลการทดสอบในปี 2002 แสดงให้เห็นว่า Yaws รองรับการเชื่อมต่อได้มากกว่า Apache ในสภาวะเดียวกันอย่างมีนัยสำคัญ
Yaws (ย่อมาจาก Yet another web server) คือซอฟต์แวร์เว็บเซิร์ฟเวอร์ที่พัฒนาขึ้นโดย Claes (klacke) Wikström โดยใช้ภาษา Erlang ซึ่งเป็นภาษาที่ออกแบบมาเพื่อการสื่อสารแบบขนานและระบบที่มีความพร้อมใช้งานสูง Yaws มีความยืดหยุ่นในการใช้งาน โดยสามารถติดตั้งเพื่อทำงานเป็นเว็บเซิร์ฟเวอร์แบบอิสระ (Standalone) หรือจะนำไปฝัง (Embed) ไว้ในแอปพลิเคชันอื่น ๆ ที่พัฒนาด้วยภาษา Erlang ก็ได้
ประสิทธิภาพและการรองรับการทำงานแบบขนาน
จุดเด่นสำคัญของ Yaws คือการใช้ประโยชน์จากระบบเธรดน้ำหนักเบา (Lightweight threading system) ของภาษา Erlang ซึ่งช่วยให้เซิร์ฟเวอร์สามารถจัดการกับการเชื่อมต่อจำนวนมากพร้อมกันได้อย่างมีประสิทธิภาพ (High Concurrency)
จากการทดสอบประสิทธิภาพ (Load Test) ในปี 2002 ซึ่งเปรียบเทียบระหว่าง Yaws และ Apache พบว่าภายใต้สภาพแวดล้อมการทดสอบเดียวกัน Apache เริ่มมีปัญหาในการทำงานเมื่อมีการเชื่อมต่อพร้อมกันถึง 4,000 รายการ ในขณะที่ Yaws ยังคงสามารถทำงานได้อย่างต่อเนื่องแม้จะมีจำนวนการเชื่อมต่อสูงกว่า 80,000 รายการ
การวิเคราะห์ด้านสถาปัตยกรรม
ผลการทดสอบดังกล่าวชี้ให้เห็นว่า ข้อจำกัดของ Apache ในขณะนั้นไม่ได้เกิดจากตัวรหัสคำสั่ง (Code) ของ Apache โดยตรง แต่เกิดจากวิธีการที่ระบบปฏิบัติการ (เช่น Linux) จัดการกับการทำงานแบบขนานผ่านเธรดและโปรเซสของ OS ซึ่งส่งผลให้เกิดคอขวดเมื่อมีการเชื่อมต่อจำนวนมหาศาล
ในทางกลับกัน Erlang ไม่ได้พึ่งพาเธรดหรือโปรเซสของระบบปฏิบัติการในการจัดการกลุ่มโปรเซสของตนเอง แต่มีระบบจัดการภายในที่แยกส่วนออกมา ทำให้ Yaws ก้าวข้ามข้อจำกัดด้านการขยายตัว (Scalability) ที่พบในเว็บเซิร์ฟเวอร์แบบดั้งเดิมที่พึ่งพา OS threads

คำถามที่พบบ่อย
Yaws คืออะไร?
Yaws คือเว็บเซิร์ฟเวอร์ที่เขียนด้วยภาษา Erlang ซึ่งออกแบบมาเพื่อรองรับการเชื่อมต่อจำนวนมากพร้อมกันได้อย่างมีประสิทธิภาพ
ทำไม Yaws ถึงรองรับการเชื่อมต่อได้มากกว่าเว็บเซิร์ฟเวอร์ทั่วไป?
เพราะ Yaws ใช้ระบบเธรดน้ำหนักเบาของ Erlang ซึ่งไม่ได้พึ่งพาเธรดของระบบปฏิบัติการ (OS threads) ในการจัดการโปรเซส ทำให้ลดข้อจำกัดด้านทรัพยากรและเพิ่มความสามารถในการขยายตัว
Yaws สามารถใช้งานในรูปแบบใดได้บ้าง?
สามารถใช้งานเป็นเว็บเซิร์ฟเวอร์แบบอิสระ (Standalone) หรือนำไปฝัง (Embed) ไว้ในแอปพลิเคชันที่พัฒนาด้วย Erlang ได้
