เรื่องที่ควรรู้เกี่ยวกับ HPC, Grid, และ Cloud Computing
ถาม - ตอบ ในเรื่องพื้นฐานเกี่ยวกับ HPC
- Cluster คืออะไร
- Cluster ใช้ทำอะไรบ้าง
- Grid คืออะไร ต่างจาก cluster อย่างไร
- HPC คืออะไร ใช้ทำอะไรบ้าง
- HA (High Availablitlity)
- Virtualization คืออะไร
- Virtualization มีประโยชน์อะไรบ้าง
- Cloud Computing คืออะไร
Cluster คืออะไร
Cluster คือกลุ่มของคอมพิวเตอร์ที่ตั้งค่าให้ทำงานร่วมกัน เพื่อให้ได้ประสิทธิภาพในการทำงานสูงขึ้น ในทางกายภาพ Cluster จะประกอบด้วยคอมพิวเตอร์หลายเครื่อง ส่วนใหญ่แล้วมักจะอยู่ในพื้นที่เดียวกัน(ตู้ rack เดียวกัน, ห้องเดียวกัน) และเชื่อมต่อกันด้วย ethernet ความเร็วสูง
สถาปัตยกรรมโดยทั่วไปของ ระบบคลัสเตอร์ จะประกอบด้วยเครื่อง Frontend ที่ทำหน้าที่เป็นส่วนติดต่อรับงานจากผู้ใช้ (User Manangement) จัดการงาน (Job Scheduler) และติดตามสถานะขเองเครื่องลูกในระบบ(Node Management)
เพื่อให้การตั้งค่าและดูแลระบบเป็นไปอย่างมีประสิทธิภาพ จึงมีระบบปฏิบัติการณ์เฉพาะสำหรับระบบ Cluster เช่น ROCKS ซึ่งพัฒนาต่อจาก CentOS หรือ Windows Server 2008 HPC ซึ่งอยู่บนพื้นฐานของ Windows Server 2008
Cluster ทำอะไรได้บ้าง
ตัวอย่างแอพพลิเคชั่นของ Cluster
HPC (High Performance Computing) Cluster - ในงานประมวลผลประสิทธิภาพสูงที่ต้องใช้เวลาในการคำนวณนาน Cluster สามารถเพิ่มประสิทธิภาพในการประมวลผล สำหรับอัลกอรึทึมที่มีการทำงานแบบขนาน (Parallel Computing) โดยการแบ่งปัญหาออกเป็นชิ้นๆ แล้วนำปัญหาที่ได้จากการแบ่งไปคำนวณยังหน่วยประมวลผลหลายๆ ตัวในเวลาเดียวกัน เพื่อลดเวลาที่ต้องใช้แก้ปัญหาลงได้
Render Farm - ในการสร้างภาพยนตร์ด้วยคอมพิวเตอร์กราฟฟิกนั้น จะต้องอาศัยพลังการคำนวณของคอมพิวเตอร์จำนวนมาก ในภาพยนตร์หนึ่งวินาทีประกอบด้วยภาพถึง 30 เฟรม อีกทั้งแต่ละภาพ ยังต้องอาศัยการเรนเดอร์ 3 มิติที่มีการคำนวณซับซ้อน ในการคำนวณ Algorithm ต่าง ๆ เช่น Radiosity, ray tracing, metropolis light transport, ambient occlusion, photon mapping, และ image based lighting เพื่อ ใช้สร้างภาพยนตร์ที่มีความสวยงามสมจริง ในตัวอย่างนี้เราสามารถใช้ Cluster ที่ประกอบด้วยคอมพิวเตอร์หลายเครื่อง แบ่งงานกันเรนเดอร์เพื่อลดเวลาที่ใช้ในการสร้างภาพยนตร์ลงได้ ช่วยให้นักออกแบบสามารถออกแบบภาพยนตร์ได้สวยงามตามจินตนาการ โดยไม่ต้องกังวลถึงข้อจำกัดทางด้านประสิทธิภาพ
Web Server Farm - สำหรับเว็บไซต์นั้น ความมั่นใจว่า เว็บไซต์สามารถเปิดได้ตลอดหรือไม่เป็นเรื่องสำคัญ เจ้าของเว็บไซต์ย่อมต้องการให้เว็บไซต์รองรับผู้ชมได้มากที่สุด และมี Down Time น้อยที่สุด ด้วยเทคโนโลยีคลัสเตอร์ เราสามารถสร้างระบบคงอยู่สูง (High Availability) ที่ให้คอมพิวเตอร์ในระบบมากกว่าหนึ่งเครื่อง เป็น Fail Safe ให้กันและกัน ทำให้สามารถสร้างเว็บเซิร์ฟเวอร์ที่มีควาความคงอยู่สูงและรองรับผู้เข้าชม ได้มากขึ้นด้วย
Grid คืออะไร ต่างจาก cluster อย่างไร
Grid คือเทคโนโลยีที่มุ่งเน้นในการรวบรวมทรัพยากรระบบคอมพิวเตอร์ในเครือข่ายขนาด ใหญ่ ให้มาใช้งานร่วมกันได้ ผู้ใช้จะมองเห็นเสมือนหนึ่งว่าเป็นระบบเดียวหรือระบบเสมือน (Virtual Organization)
ความต่างของ Cluster กับ Grid ในเชิงกายภาพคือ เน็ตเวิร์กที่ใช้เชื่อมต่อซึ่งโดยปกติแล้วภายใน Cluster มักจะเชื่อมต่อกันด้วย ethernet ความเร็วสูงภายใน ต่างจากระบบกริด ที่สามารถกระจายกันอยู่ได้ และเชื่อมต่อกันอย่างหลวม ๆ โดยมีลักษณะในการจัดการที่ต่างกัน
HPC คืออะไร ใช้ทำอะไรบ้าง
HPC ย่อมาจาก High Performance Computing บางครั้งเรียกว่า High Productivity Computing
มัก ใช้กล่าวถึงในงานคำนวณของแอพลิเคชั่นที่มีความซับซ้อน เช่น การพยากรณ์อากาศ แบบจำลองทางกลศาสตร์ ชีวสารสนเทศ การจำลองสถานการณ์แบบสุ่ม หรือการเรนเดอร์ภาพยนตร์แอนนิเมชั่น งานเหล่านี้ต้องใช้อัลกอรึทึมที่อาศัยพลังการประมวลผลมาก จนเครื่องคอมพิวเตอร์ธรรมดาไม่สามารถประมวลผลได้ หรือใช้เวลานานเกินกว่าจะยอมรับได้ จึงส่งผลให้เกิดแนวคิดที่จะเพิ่มประสิทธิภาพของงานเหล่านี้ ด้วยการสร้างระบบคอมพิวเตอร์ประสิทธิภาพสูง
ในยุคแรกนั้น มีการสร้างระบบ Supercomputer สำหรับงานเฉพาะทางเหล่านี้ ซึ่งมักมีสถาปัตยกรรมของหน่วยประมวลผลที่ออกแบบมาเฉพาะทาง จึงมักมีข้อจำกัดในเรื่องของงานที่สนับสนุนที่ใใช้ในวงแคบเท่านั้น อีกทั้งยังมีระบบยังมีราคาสูงด้วย ปัจจุบันมีทางเลือกของระบบ HPC มากขึ้น หนึ่งในนั้นคือ การสร้างระบบประมวลผลประสิทธิภาพสูงจากคอมพิวเตอร์ธรรมดาหลายๆ เครื่องมาเชื่อมต่อกันหรือที่เรียกว่า Cluster ซึ่งเป็นทางเลือกที่ดีสำหรับงานประมวลผลประสิทธิภาพสูงในราคาที่สมเหตุสมผล
HA (High Availability) คืออะไร
High Availability คือระบบที่ออกแบบมาเพื่อให้มีความคงอยู่สูง โดยมีการสนับสนุนการทำงานแทนกันเมื่อระบบใดระบบหนึ่งผิดพลาด จะมีอีกระบบที่เตรียมพร้อมอยู่แล้วทำงานแทน
ในงานระบบข้อมูลที่ต้องการความมั่นคงสูง อย่างเช่น เว็บเซิร์ฟเวอร์ ฐานข้อมูลที่สำคัญมากๆ อย่างเช่น การเงินการธนาคาร หรือระบบสาธารณูปโภค หากเกิดความผิดพลาดจะเกิดผลกระทบที่เสียหายต่อผู้ใช้เป็นจำนวนมาก จึงมีความจำเป็นที่จะต้องเพิ่มความมั่นคงของระบบให้มากที่สุด โดยจะใช้หน่วย Uptime ซึ่งเป็นเปอร์เซ็นของเวลาที่ระบบให้บริการได้ อย่างเช่น 99.999% หมายถึงว่า ระบบนี้หยุดทำงานรวมไม่เกิน 5 นาทีต่อหนึ่งปี
เพื่อให้ระบบมี Uptime สูงสุด เราสามารถใช้เทคโนโลยีคลัสเตอร์ เพื่อเพิ่ม Uptime ของระบบได้ โดยการสร้างคลัสเตอร์ที่มีมากกว่าหนึ่งเครื่อง และตั้งค่าแบบ High Availability เพื่อคอมพิวเตอร์ในระบบทำงานแทนกัน ในกรณีที่เครื่องใดเครื่องหนึ่งผิดพลาดขึ้น ระบบโดยรวมจะยังคงทำงานได้ด้วยการทำงานของอีกเครื่อง
Virtualization คืออะไร
การจำลองเครื่องเสมือนด้วยซอฟต์แวร์ ที่ทำให้คอมพิวเตอร์หนึ่งเครื่อง สามารถทำงานเป็นเครื่องเสมือนหลายๆ ระบบได้ โดยแต่ละรบบมีทรัพยากรหน่วยความจำ, ฮาร์ดดิสก์ และอุปกรณ์เน็ตเวิร์กเสมือนที่เป็นอิสระต่อกัน เครื่องเสมือนแต่ละเครื่องจึงสามารถมีระบบปฏิบัติการและซอฟต์แวร์เป็นของตนเองโดยอิสระ
Virtualization มีประโยชน์อะไรบ้าง
ประโยชน์ที่สำคัญของ Virtualization คือ การลดจำนวนเครื่องคอมพิวเตอร์ที่ต้องใช้เป็นเซิร์ฟเวอร์ได้
พิจารณา จากหลายๆ เซิร์ฟเวอร์ขององค์กร ที่ต้องใช้เครื่องคอมพิวเตอร์จริงหนึ่งเครื่องต่อหนึ่งเซอร์วิส ทั้งๆ ที่ ในความเป็นจริงนั้น เซิฟเวอร์แต่ละเครื่องยังไม่ได้ถูกใช้อย่างเต็มที่ ทำให้ต้องสูญเสียทรัพยากรคอมพิวเตอร์ขององค์กรในการจัดซื้อและดูแลรักษา อย่างเปล่าประโยชน์
Virtualization สามารถลดจำนวนเครื่องเซิร์ฟเวอร์ที่จะต้องใช้ได้ โดยการรวมศูนย์การทำงานของระบบ (Server Consolidation) ด้วยการติดตั้งเครื่องเซิร์ฟเวอร์แต่ละระบบขององค์กรด้วยเครื่องเสมือน (Virtual Machine) เครื่องหลักหนึ่งเครื่องจะสามารถบริการเครื่องเสมือนได้หลายเครื่อง เป็นการใช้ทรัพยากรระบบอย่างคุ้มค่า อีกทั้งยังอำนวยความสะดวกในการดูแลระบบทั้งด้วย
นอกจากนี้ Virtualization ยังสามารถประยุกต์ใช้ได้อีกหลายด้าน ยกตัวอย่างเช่น
การทำ Migration เพื่อย้ายการทำงานของเครื่องเซิร์ฟเวอร์ไปยังอีกเครื่องได้อย่างรวดเร็ว ช่วยลด Downtime จากเวลาที่ใช้ในการติดตั้งใหม่ และแก้ปัญหาความไม่เข้ากันของฮาร์ดแวร์ได้
ระบบ virtual desktop สำหรับพนักงานในองค์กร แทนที่เครื่องสำนักงานด้วย virtual machine อำนวยความสะดวกและปลอดภัยในการดูแลข้อมูลขององค์กร
ทดสอบแอพพลิเคชั่น ในหลายๆ สภาพแวดล้อมการทำงาน โดยใช้ Virtual Machine เพื่อจำลองสภาพแวดล้อมงานต่าง ๆ ไม่ว่าจะเป็น Windows หรือ Linux
Cloud Computing คืออะไร
Cloud Computing หรือ ระบบการประมวลผลแบบกลุ่มเมฆ คือ แนวทางการประมวลผลที่พลังของโครงสร้างทางไอทีขนาดใหญ่ที่ขยายตัวได้ถูกนำเสนอยังลูกค้าภายนอกจำนวนมหาศาลในรูปแบบของบริการ

ระบบจะประกอบไปด้วยกลุ่มเมฆของเซอร์ฟเวอร์ (cloud server) ซึ่งเป็นเซอร์ฟเวอร์จำนวนมหาศาลนับหมื่นเครื่องที่ตั้งอยู่ในที่เดียวกัน กลุ่มเมฆนี้ต่อเชื่อมเข้าหากันด้วยเครือข่ายเป็นระบบกริด ในระบบนี้จะใช้ซอฟต์แวร์เวอร์ช่วลไลเซชั่นในการทำงานเพื่อให้โปรแกรมประยุกต์ขึ้นกับระบบน้อยที่สุด สำหรับโครงสร้างของระบบจะมีส่วนติดต่อกับผู้ใช้ ( User interaction interface) ที่รับคำขอบริการจากผู้ใช้ในรูปแบบเวบ
ในมุมมองของผู้ใช้ระบบประมวลผลแบบกลุ่มเมฆจะหายไปเหลือเพียงบริการหรือ เซอร์วิสเท่านั้น ซึ่งโมเดลหลักตอนนี้จะมีสองแนวทางด้วยกัน โมเดลแรก คือ SaaS (Software As A Services) ซึ่งบริการทุกอย่างรวมถึง User Interface ทำจากระบบประมวลผลแบบกลุ่มเมฆหมด ตัวอย่างเช่น กูเกิ้ลsearch, กูเกิ้ลapp เป็นต้น ข้อดีคือ ผู้ใช้สามารถใช้ระบบโดยไม่ต้องลงซอฟต์แวร์ใดๆ นอกจากเวบบราวเซอร์ และยังง่ายต่อการพัฒนาใน Mobile Device แต่อาจต้องการเครือข่ายที่เร็วและเสถียร ส่วนอีกโมเดลหนึ่ง คือ Software+Services ของไมโครซอฟต์ซึ่งต้องลงซอฟต์แวร์บนเครื่องของผู้ใช้ แต่การประมวลผลขนาดใหญ่หรือขีดความสามารถเพิ่มเติมจะทำจาก กลุ่มเมฆแทน ข้อดีคือ การทำงานจะตอบสนองได้ดีกว่าและสามารถประมวลผลเองได้บางส่วนโดยไม่ต้องมีเครือข่าย อย่างไรก็ตามผู้ใช้ต้องบำรุงรักษาซอฟต์แวร์ที่ลงไว้ทำให้เกิดความซับซ้อนมากกว่าในส่วนนี้