← กลับไปยังบทความทั้งหมด

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

โลโก้ LYME software bundle
โลโก้ของชุดซอฟต์แวร์ LYME ซึ่ง Yaws เป็นส่วนหนึ่งของระบบนิเวศนี้

คำถามที่พบบ่อย

Yaws คืออะไร?

Yaws คือเว็บเซิร์ฟเวอร์ที่เขียนด้วยภาษา Erlang ซึ่งออกแบบมาเพื่อรองรับการเชื่อมต่อจำนวนมากพร้อมกันได้อย่างมีประสิทธิภาพ

ทำไม Yaws ถึงรองรับการเชื่อมต่อได้มากกว่าเว็บเซิร์ฟเวอร์ทั่วไป?

เพราะ Yaws ใช้ระบบเธรดน้ำหนักเบาของ Erlang ซึ่งไม่ได้พึ่งพาเธรดของระบบปฏิบัติการ (OS threads) ในการจัดการโปรเซส ทำให้ลดข้อจำกัดด้านทรัพยากรและเพิ่มความสามารถในการขยายตัว

Yaws สามารถใช้งานในรูปแบบใดได้บ้าง?

สามารถใช้งานเป็นเว็บเซิร์ฟเวอร์แบบอิสระ (Standalone) หรือนำไปฝัง (Embed) ไว้ในแอปพลิเคชันที่พัฒนาด้วย Erlang ได้