จาก Grid Computing ไปถึง Cloud Computing ตอนที่ 1

Timeline จาก Grid ไป Cloud ตัดจากสไลด์ในงาน Intel Blogger Day 2008

เนื่องจากมีคนถามผมมาเยอะเหลือเกินว่า Grid ต่างจาก Cloud อย่างไร ? ผมก็ได้ให้คำตอบไปแล้ว จนท้ายที่สุด เหมือนเป็น FAQ ของคำถามเรื่อง Cloud เลยก็ว่าได้ครับ แต่ผมไม่เคยได้เขียนลง blog ซะที ครั้งนี้ก็ขอซะหน่อยแล้วกัน ก่อนที่ blog ผมจะกลายเป็นแนะนำอาหารการกินไปซะก่อน อย่างไรก็ดี บทความนี้จะไม่ใช่การเปรียบเทียบ Grid ต่างจาก Cloud อย่างไร แต่ผมจะขอย้อนเวลาไปเมื่อต้น 1990 (จริงๆอยากย้อนไปมากกว่านี้ แต่มันจะยาวกว่านี้ด้วย) แล้วจากนั้น ก็จะชี้ให้เห็นถึงวิวัฒนาการจาก Grid ไปถึง Cloud แม้ไม่ได้ลงละเอียดไปมากเท่าไหร่ เดี๋ยวจะกลายเป็น lecture ไปในที่สุด แต่ผมขอการสาธยายสิ่งได้ร่ำเรียนและได้ประสบพบเห็นมากับตัวเองนะครับ

ก่อนหน้านี้ ผมได้เข้าประชุมกับ director ของ HP Labs ชื่อ Chris Whitney เขาได้มาพูดถึงงานวิจัยที่ HP กำลังทำ เป็นเรื่องที่เกี่ยวกับ Cloud Computing ผมรู้สึกว่า เอ … มันก็ Grid Computing นี่เอง มากไปกว่านั้น ผมเคยคิดเหมือน Ellision จาก Oracle ที่เคยเหน็บแนมว่า Cloud เป็นเหมือนแฟชัน เป็นเพียงแค่คำฮิต

การได้ดูตัวอย่างบริการและผลิตภัณฑ์ที่เรียกว่า Cloud Computing จนได้ไปสัมผัสบริการและผลิตเหล่านั้น เมื่อไปเทียบกับสิ่งที่ Grid Computing เคยเป็นมา เราก็พบแล้วว่ามันแตกต่างจาก Grid Computing รวมไปถึงการได้ใกล้ชิดกับบริษัท/ทีมงานที่เขาพัฒนาผลิตภัณฑ์และบริการเหล่านั้น ยิ่งย้ำความเข้าใจเรามากขึ้นแล้วว่า เราเข้าใจถูกแล้ว อาจารย์ของผม (ฟรานซิส) และผม  เรามองว่ามีความเหมือนระหว่าง Grid กับ Cloud และเราก็เห็นอะไรที่แตกต่าง ส่วนที่แตกต่างมีนัยสำคัญมากกว่าที่จะมาบอกว่านี่ยังเป็น Grid Computing อยู่ Cloud Computing จึงไม่ใช่การบัญญัติคำศัพท์ขึ้นมาใหม่เพื่อใช้เรียกแทน Grid Computing อย่างไรก็ดี เรามองว่า Cloud Computing เป็นวิวัฒนาการด้วยการบูรณาการ ดังนั้น ไม่ใช่เรื่องแปลกเลย ที่เราไปนึกว่า Cloud Computing เหมือนกับหลักการอื่นๆที่เคยมีมา อย่างเช่น Grid Computing

หมายเหตุ ผมขอเอาภาพจากสไลด์ของผมที่ใช้บรรยายในงาน Intel Blogger Day 2008 ในหัวข้อ Blogging in the Clouds มาใช้ประกอบบทความนี้นะครับ และก่อนอื่น ขอบอกก่อนว่า ขอแบ่งบทความออกเป็น 2 ตอน ตอนที่ 1 นี้เป็นการย้อนยุคไปหา Volunteer Computing ในช่วงกลางทศวรรษ 90 แต่จะไปหาแบบคร่าวๆ จากนั้นค่อยบินไปหา Grid Computing ในช่วงก่อนขึ้นศตวรรษใหม่ในปี 2000 ครับ

(แจ้งข่าว สำหรับท่านที่กำลังค้นหาหัวข้อวิจัยและพัฒนาเกี่ยวกับ Cloud Computing สามารถไปอ่านบทความของผมได้ในหัวข้อชื่อ หมวดงานวิจัยเกี่ยวกับ Cloud Computing)

ย้อนไปหา Volunteer Computing

การประมวลผลแบบอุทิศ (Volunteer Computing) คือรูปแบบหนึ่งของการกระจายการประมวลผล (distributed computing) โดยผู้คนสามารถอุทิศทรัพยากรคอมพิวเตอร์ส่วนตัวเพื่อใช้ในการประมวลผลงาน (หรือโปรแกรม) ของโครงการหนึ่งๆได้ [แปลและเรียบเรียงจาก Wikipedia]

สาเหตุที่ผมต้องกล่าวถึง Volunteer Computing ก่อน Grid Computing ก็เพราะว่า Grid Computing มีความเกี่ยวดองกับ Volunteer Computing อย่างมากเลยทีเดียวครับ

โดยสถาปัตยกรรมพื้นฐานของ Volunteer Computing จะประกอบไปด้วยคอมพิวเตอร์เซิร์ฟเวอร์หนึ่งเครื่องหรือหนึ่งกลุ่ม ที่ทำหน้าที่ในการกระจายการประมวลผลไปให้คอมพิวเตอร์ที่อุทิศตัวเองอยู่บนเครือข่าย นอกจากนี้เซิร์ฟวเวอร์ยังทำหน้าที่ในการรวบรวมและบันทึกผลลัพธ์จากการประมวลผลอีกด้วย

โครงการแรกๆที่จัดได้ว่าเป็น Volunteer Computing คือ Great Internet Mersenne Prime Search (GIMPS) สำหรับค้นหาจำนวนเฉพาะประเภท Mersenne Prime โครงการนี้เปิดตัวเมื่อปี 1996 จากนั้นในปี 1999 ก็เกิดโครงการ SETI@home ขึ้นมา ซึ่งถือว่าเป็นโครงการที่สร้างความโด่งดังให้กับการประมวผลแบบ Volunteer Computing เลยทีเดียว

หลัง SETI@home โครงการอื่นๆที่เป็น Volunteer Computing ก็เกิดขึ้นตามมา หลายโครงการทีเดียวลงท้ายด้วยคำว่า @home ลองเข้าไปดูรายชื่อโครงการส่วนหนึ่งได้ที่ Wikipedia อย่างไรก็ดี โครงการ @home ส่วนใหญ่ใช้โปรโตตอลและไลบราลีในการพัฒนาของโครงการที่ชื่อว่า BOINC นอกจากนี้แล้ว ยังมีซอฟต์แวร์อื่นๆที่มีลักษณะเช่นเดียวกับ BOINC อาทิเช่น Xgrid ของ Apple และ Grid MP ของ United Devices

ผมมีบทความที่เคยเขียนเกี่ยวข้องกับ Volunteer Computing ภายใต้หัวข้อ Peer-to-Peer กับการเก็บเกี่ยว CPU

ย้อนไปหา Grid Computing

เรามักจะได้ยินว่า SETI@home รวมถึงซอฟต์แวร์ในตระกูล Volunteer Computing เป็น Grid Computing แม้กระทั่งชื่อก็ยังมีคำว่า Grid เลย อย่างเช่น Xgrid กับ Grid MP เป็นต้น ถ้าผมจะพูดประชดประชันหน่อย คงถามไปว่า ทำไมเราไม่ใช้คำว่า Volunteer Computing แทน Grid Computing ล่ะ มาบัญญัติคำศัพท์คำคำว่า Grid Computing นี้เพื่ออะไร ?

คำตอบคือ Grid Computing ไม่เหมือนกับ Volunteer Compuing ซะทีเดียวครับ เพราะ Volunteer Computing หมายถึงการอุทิศที่เกิดจากคนที่ต้องการเข้ามามีส่วนร่วมในโครงการ ต่างจาก Grid Computing โดย Grid Computing สามารถจัดการทรัพยากรที่แชร์ระหว่างองค์กร (หรืออาจจะบุคคลก็ได้) ซึ่งทรัพยากรเหล่านี้จะถูกควบคุมให้ผู้ที่มีสิทธิ์เท่านั้นที่สามารถเข้ามาใช้งานได้

ถ้าเรามองในมุมมองเรื่องความเป็นเจ้าของทรัพยากรคอมพิวเตอร์แล้ว จะพบว่า Volunteer Computing คนที่เป็นผู้ใช้ทรัพยากรคือ โครงการ (เซิร์ฟเวอร์ที่จ่ายการประมวลผลของโครงการ) ส่วนเจ้าของทรัพยากร คือ ผู้อุทิศ (Volunteer) แต่ถ้าเป็น Grid Computing แล้ว จะมีองค์กรรวมตัวกันเป็นกลุ่มเพื่อแชร์ทรัพยากร แต่ละองค์กรมีทรัพยากรเป็นของตน และก็แชร์ทรัพยากรเหล่านั้นร่วมกับองค์กรอื่นๆในกลุ่ม โดยแต่ละองค์กรก็เป็นเจ้าของทรัพยากรของตนเองเท่านั้น (ไม่ใช่ของทั้งหมด) ส่วนผู้ใช้อาจจะเป็นสมาชิกขององค์กรที่แชร์ทรัพยากรร่วมกัน หรืออาจจะเป็นบุคคลภายนอกองค์กรที่ไม่ได้แชร์ทรัพยากรอะไรให้เลยก็ได้ แต่ Grid Computing จะมีกลไกในการกำหนดสิทธิ์ผู้ใช้ เพื่อความปลอดภัยของทรัพยากร

ผมขอให้แหล่งอ้างอิงสำหรับความหมายของคำว่า Grid Computing นะครับ

  1. What is the Grid ? A Three Point Checklist โดย Ian Foster [อ้างอิง]
  2. Introduction to Grid Computing โดย Bart Jacob และทีม IBM Redbooks [อ้างอิง]
  3. ความหมายจาก Wikipedia [อ้างอิง]

ถ้าไม่มีเวลาอ่านไม่เป็นไรครับ ผมสรุปให้ ผมขอยึดความหมายในอ้างอิงแรกของ Ian Foster ซึ่งเป็นเจ้าพ่อด้าน Grid Computing แล้วกันนะครับ ขอเอาความหมายที่เป็นที่ยอมรับกันอย่างกว้างขวาง นิยามในปี 2000 โดย Ian Foster, Carl Kesselman, และ Steve Tuecke ว่า Grid Computing คือสิ่งต่อไปนี้

“The sharing that we are concerned with is not primarily file exchange but rather direct access to computers, software, data, and other resources, as is required by a range of collaborative problemsolving and resource-brokering strategies emerging in industry, science, and engineering. This sharing is, necessarily, highly controlled, with resource providers and consumers defining clearly and carefully just what is shared, who is allowed to share, and the conditions under which sharing occurs. A set of individuals and/or institutions defined by such sharing rules form what we call a virtual organization.”

โดยทั้งสามท่านนี้ได้เน้นไปที่

  1. Coordinated resource sharing
  2. Problem solving in dynamic, multi-institutional organization

กล่าวรวบยอดเป็นไทยเลยแล้วกันคือ เป็นการแชร์ทรัพยากรร่วมกันระหว่างบุคคลและองค์กร (หรือสถาบัน) โดยกลุ่มขององค์กรและสถาบันที่ใช้หรือแชร์ทรัพยากรร่วมกันนั้น จะถูกกำหนดและควบคุมภายใต้กฎขององค์กรที่เรียกว่า “องค์กรเสมือน” (Virtual organization)

ผมเรียบเรียงให้สามัญอีกนิดนึง ได้ความหมายว่า

การประมวผลแบบกริด (Grid Computing) คือ การแชร์ทรัพยากรร่วมกันระหว่างองค์กรเพื่อให้เกิดระบบสารสนเทศระบบเดียวกัน

องค์กรเสมือนเป็นไงหรือ ?

องค์กรเสมือน เกิดจากองค์กรหรือบุคคลจริงๆที่เป็นผู้แชร์ทรัพยากร ตลอดไปถึงเป็นผู้ดูแลและใช้ทรัพยากร

ยกตัวอย่างแล้วกัน มีองค์กร 2 องค์กร เป็นคนละองค์กรกันเลย เช่น บริษัท A กับ มหาลัย B ถ้าทั้ง A และ B อยากแชร์ทรัพยากรร่วมกัน เพื่อให้ได้ทรัพยากรขนาดใหญ่ขึ้นมา ทรัพยากรอาจจะเป็น CPU, Storage, Software, Database, … ฟังดูง่ายๆนะไอ้แค่คำว่าแชร์กันเนี่ย เราอาจจะเห็นแค่ว่า อ่อมันก็แค่ใช้ Telnet หรือ SSH ล็อกอินเข้าไปใช้เครื่องของอีกฟาก … แต่เวลาทำน่ะมันยาก เพราะทั้ง A และ B มีนโยบายต่างกัน, user/user group ก็ต่างกันแล้ว, การกำหนดสิทธิของ user ก็ต่างกัน, มีเทคโนโลยีต่างกัน ยิ่งถ้ามีทรัพยากรจำนวนมาก ผู้ใช้มีมากด้วย แล้วองค์กรทั้ง 2 จะทำอย่างไร ยิ่งไปกว่านั้น ถ้าไม่ได้มีแค่ A กับ B ล่ะ มีองค์กรเข้ามาร่วมกันเป็นสิบๆราย (หรือร้อยราย) คงโกลาหลน่าดู

Grid Computing สามารถเชื่อมโยง (ทรัพยากรของ) องค์กรให้เกิดเป็นองค์กรเสมือนเดียวกันขึ้นมาได้ แต่ด้วยวิธีอะไร ผมไม่ขอลงรายละเอียด ท่านใดสนใจก็ไปศึกษาเพิ่มเติมเอาเองครับ เริ่มที่เว็บไซต์ Globusเลยก็ได้ มีเอกสารให้อ่านจำนวนหนึ่ง

Grid Computing มีหลายระดับ

ในทางวิชาการ เรามองว่า Grid Computing เป็นการแชร์ทรัพยากรระหว่างองค์กร แต่ในทางธุรกิจแล้ว Grid Computing กลับมีลักษณะที่แยกย่อยเป็นระดับขั้นของการแชร์ทรัพยากร มีหลายบริษัทออกผลิตภัณฑ์ภายใต้ชื่อที่ลงท้ายหรือขึ้นต้นว่า Grid อาทิเช่น Grid Enabled และ Grid Ready เป็นต้น ส่วนใหญ่แล้วเป็นผลิตภัณฑ์เพื่อการใช้งานในระดับองค์กรเดี่ยวๆ คือเป็นการแชร์ระหว่างหน่วยงาน แผนก หรือสาขาขององค์กร

Sun Microsystems ได้แบ่งระดับการแชร์ทรัพยากรใน Grid Computing เป็น 3 ระดับคือ

  1. Cluster Grid
  2. Campus Grid (บางที่เรียก Corperate Grid)
  3. Global Grid

รายละเอียดเรื่องนี้ผมเคยเขียนไว้ที่หัวข้อ ความแตกต่างระหว่างคลัสเตอร์กับกริด

ความปลอดภัยคือหัวใจสำคัญของ Grid

หัวใจสำคัญของ Grid computing ไม่ได้อยู่แค่เพียงแค่การเชื่อมโยงทรัพยากรจากหลากหลายองค์กร ทำให้เกิดระบบสารสนเทศระบบเดียวกันตัวใหม่ขึ้นมา แต่ว่าอยู่ที่ความปลอดภัย เนื่องจากแต่ละองค์กรมีโดเมนหรือขอบเขตในการรักษาความปลอดภัยให้กับทรัพยากรคอมพิวเตอร์แตกต่างกันไป อาทิเช่น การกำหนดผู้ใช้ของทรัพยากร และการจำกัดสิทธิ์ในการใช้งานทรัพยากรของผู้ใช้แต่ละราย ตลอดจนการเข้ารหัสข้อมูล เป็นต้น

ผมจะไม่ลงรายละเอียดในส่วนนี้ ถ้าใครสนใจเรื่องนี้ ก็ไปหาเอกสารที่เกี่ยวข้องได้ที่เว็บ Globus

คำว่า Grid ยืมมาจาก Power Grid

จะว่าไปแล้วคำว่า Grid Computing เขาไปยืมคำและไอเดียมาจากคำว่า Power Grid ของการจ่ายไฟฟ้าไปตามครัวเรือน โดย Power Grid คือการเชื่อมโยงโรงงานไฟฟ้าหลายๆแห่งเข้าด้วยกัน เพื่อที่จะได้เข้าถึงไฟฟ้ากำลังมหาศาลจากหลายๆที่ได้ และในขณะที่คนเราใช้ไฟฟ้า เราไม่เคยสนเลยว่า “ไฟฟ้า” ที่วิ่งเข้ามาในบ้านมาจากโรงงานไหน ถ้าหากว่าในชุมชนหนึ่งต้องการไฟฟ้ามากๆ จนกระทั่งโรงงานไฟฟ้าของชุมชนนั้นผลิตไฟให้ไม่ไหว ก็ต้องไปยืมไฟฟ้าจากโรงงานอื่นมาอีกทอด แต่ถามว่า ตอนใช้ไฟหรือจ่ายค่าไฟ ผู้คนในชุมชนต้องรู้ไหมว่าเขาใช้ไฟจากที่ไหน … ไม่ต้องรู้เลยครับ มีไฟฟ้าให้ใช้ก็พอแล้ว

เปลี่ยนมุมมองมาที่ไอทีบ้างครับ องค์กรหนึ่งๆมีทรัพยากรคอมพิวเตอร์ระดับหนึ่ง เวลาเราต้องการใช้ซีพียู เพื่อประมวลผลงานสักงานหนึ่ง หรือต้องการเก็บข้อมูลใหญ่ๆก้อนหนึ่ง เราอาจจะไม่ต้องทราบเลยก็ได้ว่าจริงๆแล้วงานของเราไปประมวลผลที่ไหน หรือข้อมูลไปเก็บที่แห่งใด

Grid Computing ทำให้ผู้ใช้สามารถเข้าถึงทรัพยากรคอมพิวเตอร์ที่อยู่กระจัดกระจายไปตามที่ต่างๆ (องค์กรต่างๆ) ได้ ให้นึกภาพง่ายๆอย่างนี้ คุณล็อกอินเข้าระบบกริดผ่านเครื่องคอมพิวเตอร์หน้าด่าน (อาจจะเรียกว่า Head node, Frond end, หรือ Portal เป็นต้น) จากนั้น เราสามารถส่งโปรแกรมไปรันยังเครื่องต่างๆในเครือข่ายขององค์กรเสมือน ผ่านโปรแกรมระบบที่ติดตั้งบนเครื่องหน้าด่านนั่นเอง

ความสำเร็จของ Grid Computing คือวงการศึกษา/ วิจัย

สำหรับ Grid Computing ผมอยากใช้คำว่า แบ่งปัน มากกว่าใช้คำว่าการ “แชร์” ทรัพยากร  จริงๆคำว่า แชร์ กับ แบ่งปัน น่าจะใช้แทนกันได้ แต่แบ่งปันให้ความรู้สึกถึงการอุทิศกว่า ผมมองว่า Grid Computing ที่เราใช้กันอยู่ทั่วไป ยังมีความเป็น Volunteer Computing อยู่ เนื่องจากเป็นการแชร์แบบไม่ใช่เพื่อการค้า ที่ผ่านมาเราจะพบว่าเครือข่าย Grid Computing ส่วนใหญ่แล้วเอาไปใช้ในงานวิจัยหรือในสถาบันศึกษา แม้แต่บริษัทเพื่อการค้าที่บอกว่ามีเครือข่าย Grid Computing ใช้ในองค์กร ก็ยังใช้เพื่อการวิจัยเลยครับ มีองค์กรที่หวังผลกำไรน้อยรายมากๆ ที่บอกว่าตนเองมี Grid Computing เพื่อใช้สำหรับหาเงิน หรือเปิดเครือข่าย Grid Computing ขึ้นมาเพื่อให้ลูกค้าเช่าทรัพยากรและเก็บเงินจากลูกค้า

ที่ผ่านมา เคยมีงานวิจัยและพัฒนาหลายงานที่พยายามเสนอให้ Grid Computing มีระบบ Billing หรือ Account สำหรับเก็บเงิน แต่เอาเข้าจริงๆ ท้ายที่สุดแล้ว ระบบเก็บเงินก็เป็นเงินแบบเครดิต เป็นเงินสมมติ เป็นเงินเสมือน หรือเป็นโควต้าของการประมวลผลงาน มากกว่าที่จะระบุไปว่าเป็นเงินกี่บาท กี่ดอลล่า

ถ้าหาก Grid Computing ว่าด้วยเรื่องการแชร์หรือแบ่งปันทรัพยากรเพียงอย่างเดียวแล้ว Grid Computing คงยากต่อการขายให้ได้ (เงิน) เพราะการอยู่รอดขององค์กรที่หวังผลกำไรเป็นตัวเงินนั้น คงไม่แบ่งปันทรัพยากรคอมพิวเตอร์ให้ใครมาใช้เพื่อเครดิตทางสังคมเพียงอย่างเดียว เพราะกำไรหรือตัวเงินคือความอยู่รอด แต่ในมุมของสถาบันการศึกษาหรือหน่วยงานวิจัย ต้องการความร่วมมือ ร่วมแรง ร่วมใจ รวมพลังสมองกัน ต้องการการแชร์หรือการแบ่งปัน ใครมีมากแชร์มาก ใครมีน้อยแชร์น้อย นอกจากนี้ องค์กรเสมือนบางเครือข่ายอาจจะได้รับการสนับสนุนจากภาครัฐ หรือเป็นสมาคมขนาดใหญ่ที่ร่วมกันวิจัยในงานที่ต้องใช้พลังในการประมวลผลมหาศาล อาจจะมีทั้งรัฐและเอกชนให้การสนับสนุน

ผมขอจบตอนที่ 1 ตรงนี้ ส่วน จาก Grid Computing ไปถึง Cloud Computing ตอนที่ 2 จะกล่าวถึง utility computing เป็นหลักครับ

About these ads

10 thoughts on “จาก Grid Computing ไปถึง Cloud Computing ตอนที่ 1

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s