คุณพร้อมหรือยังที่จะเข้าสู่โลกของ Cloud Computing?
Latest update: Mar 08, 2015
Cloud Computingเป็นเหมือนจินตนาการหนึ่งของโลก IT เริ่มตั้งแต่ผู้ผลิตซอฟต์แวร์อิสระ (ISV), บริษัทที่กำลังพึ่งเริ่มต้น หรือบริษัทขนาดใหญ่ที่ต้องการลดค่าใช้จ่าย ดูเหมือนว่าจะมีจำนวนเพิ่มมากขึ้นของผู้ที่สนใจ เพื่อที่จะแก้ไขปัญหาต่างๆ ทางด้าน ITโดยใช้วิธีการของ Cloud Computing
สิ่งที่น่าแปลกอย่างหนึ่ง คือ ถ้าจะถามถึงคำอธิบายที่ชัดเจนของ Cloud Computing คงหาได้ยาก เพราะถ้าคุณลองไปถามคน 100 คน อาจจะได้คำตอบมา 150 คำตอบ (ผมเชื่อว่า บางคนต้องพยายามตอบสองครั้ง) ในบทความนี้ ผมจะอธิบายถึงคำอธิบายทั่วไป ที่คุณสามารถตอบได้ชัดเจนมากขึ้น
The Cloud หรือ Internet(ถ้าคุณจะหมายความว่าอย่างนั้นก็ยังได้) ซึ่งมีมานานกว่า 25 ปี ที่ผ่านมา ถ้างั้น Cloud ก็มีมาตั้งนานแล้วใช่ไหม?มีหลักฐานหนึ่งที่ยืนยัน ว่า Server แรกบน Internet มีอุปกรณ์จัดเก็บข้อมูล สำหรับข้อมูลและแอพพลิเคชั่น ที่มาการแชร์ใช้ร่วมกันทั่วโลก อาจจะเป็นเรื่องง่ายในการใช้งาน Cloud Computing จากที่ใดก็ได้ โดยปราศจากข้อจำกัดต่างๆ ในปัจจุบัน ความชัดเจนเริ่มมีมากขึ้นในการให้บริการทางด้านข้อมูล ,แอพพลิเคชั่น และการคอมพิวติ้งมากขึ้น ซึ่งทำให้ข้อจำกัดต่างๆได้หายไป เพราะเริ่มจะเห็นถึงความแตกต่างกันมากขึ้น...จริงหรือ?
ความแตกต่างที่เห็นเด่นชัด นั่นก็คือเราใช้เทคโนโลยีที่ใหม่ แต่ยืนบนพื้นฐานของคอนเซปต์เดิม Cloud Computing เป็นเหมือนการพัฒนา มากกว่าการปฏิวัติ ด้วยราคาที่ทุกคนสามารถเข้าถึงได้ ซึ่งคุณจ่ายเท่าที่ใช้เป็นพอ (Utility Model)
Utility Computing
Utility Computing หมายถึงการใช้งานทรัพยากรคอมพิวเตอร์ เช่น Infrastructure, Storage, Core Services แบบเดียวกับที่เราใช้ไฟฟ้า และประปา ซึ่งมีมาตรวัด ที่ทำให้คุณจ่ายเท่าที่ใช้ นั่นก็คือ Utility หรือ สาธารณูปโภคทำให้ทำลายความจำเป็นที่ต้องซื้อ, รัน, และบำรุงรักษา Hardware, Server และ Application ต่างๆ และรวมถึงการพัฒนา Core Services เช่น การทำ Billing หรือ การให้บริการด้าน Security เพื่อให้เห็นภาพมากขึ้น ผมจะยกตัวอย่างให้เห็นภาพ ดังนี้
สมมติมี ISV ที่พัฒนาระบบบน Web-basedต้องการสร้างคอมโพเนนต์ที่สามารถพร้อมใช้งานบน Facebook หรือ MySpace ซึ่งพวกเขาต้องพบกับปัญหาที่จะเจอมากมาย รวมถึงเขาต้องพยายามหารูปแบบที่สามารถยอมรับได้ อีกทั้ง ISV ส่วนใหญ่มีเงินทุนที่จำกัด และเขาต้องทุ่มเงินไปกับการพัฒนาและทำการซัพพอร์ตงานซอฟต์แวร์ของตนเองเสีย เป็นส่วนมาก
ซึ่งความไม่สมดุลนี้ ทำให้มีการผลิตซอฟต์แวร์ที่ไม่มีคุณภาพบนแพลตฟอร์มที่ดี หรือซอฟต์แวร์ชั้นเยี่ยมแต่ยากต่อการเข้าถึงของแพลตฟอร์มนั้นๆ เหตุการณ์แบบนี้อาจจะขัดต่อทางที่จะประสบความสำเร็จ ทำให้การใช้งานแบบ Utility-based Cloud ช่วยคุณได้ แพลตฟอร์ม Cloud Utility สามารถเป็นทางเลือกที่ต้นทุนต่ำ ที่สามารถเพียงพอต่อความต้องการของซอฟต์แวร์ที่ผลิตโดย ISV ซึ่งจะทำให้เขาสามารถใช้งานร่วมกับทรัพยากรที่มีคุณภาพ ซึ่งส่งผลต่อการสร้างซอฟต์แวร์ที่มีคุณภาพเช่นกัน
Cloud Service เป็นบริการที่พิเศษ คล้ายกับสาธารณูปโภค หากซอฟต์แวร์ที่ใช้งานผิดพลาด ISV เพียงแค่ปิดบริการ และหยุดการจ่ายค่าใช้จ่ายทั้งหมดที่เกี่ยวข้องกับซอฟต์แวร์นั้นๆ เป็นพอ
รูปแบบ Utility Model ยังช่วยให้องค์กรสามารถชดเชย ต้นทุนส่วนตัวในการใช้งานดาต้าเซนเตอร์ ซึ่งจะช่วยให้คุณใช้งานทรัพยากรได้มากขึ้นในเวลาที่ต้องการประมวลผลสูงสุด (Peak Load) ซึ่งเรียกว่า "Cloud Bursting"
โดยแต่เดิมนั้น การจะจัดการ Peak Load ได้นั้น ทางองค์กรจำเป็นต้องออกแบบให้ดาต้าเซนเตอร์รองรับการประมวลผลเพื่อรองรับ Peak Load ที่เกิดขึ้น ซึ่งหมายความว่าเวลาส่วนใหญ่ที่ใช้งานดาต้าเซนเตอร์ไม่ได้ใช้งานถึง Peak Load ทุกครั้ง หากใช้ Cloud Bursting องค์กรสามารถสร้างดาต้าเซนเตอร์ให้รองรับ Peak Load เฉพาะวัน หรือช่วงของวันที่มีการประมวลผลสูงๆได้ จากการใช้งานปกติทั่วไป โดยที่ผู้ให้บริการ Cloud จะเป็นคนจัดการ Peak Load เหล่านั้นเอง
Utility Computingเกี่ยวข้องกับแพลตฟอร์มเสมือน (Virtualized Platform) ซึ่งเกือบจะทำให้ไม่มีข้อจำกัด เรื่องของพื้นที่การเก็บข้อมูล และ/หรือ ทรัพยากรที่ใช้ในการประมวลผล ซึ่งจะทำให้ผู้ใช้งานสามารถเข้าถึงการใช้งานในดาต้าเซนเตอร์ที่มีขนาดใหญ่ วิวัฒนาการในปัจจุบันได้ทำให้คำว่า Utility Computing มีความชัดเจนมากขึ้น เพราะมีบริการที่เกี่ยวข้องมากขึ้น
แล้ว Application ทั้งหมดควรย้ายไปที่ Cloud หรือไม่?
แล้ว Application ทั้งหมดควรย้ายไปที่ Cloud จริงหรือไม่? แล้วเราควรพัฒนา Application ให้เชื่อมต่อกับ Cloud ได้อย่างไร? หรือว่าเราต้องพัฒนา Application ใหม่บน Cloud? ตกลงแล้ว Cloud มันเป็นอะไรกันแน่? นี่คือส่วนหนึ่งของคำถาม เมื่อคุณเริ่มนึกถึงคำว่า CloudServices
จริงๆ แล้วบาง Application สามารถเชื่อมต่อ Cloud ได้ หรือพัฒนาบนแพลตฟอร์ม Cloud ได้ หรือแม้กระทั่งสามารถที่จะโฮสต์บน Cloud Infrastructure ได้ ขณะที่บาง Application ก็ไม่สามารถเชื่อมต่อกับ Cloud ได้เลย ซึ่งในกรณีนี้ ถ้าจะตอบให้เป็นคำตอบมาตรฐาน ผมคงตอบว่า "ต้องขึ้นอยู่กับงาน" ซึ่งบาง Application อาจจำเป็นต้องมีการประมวลผลบน Cloud บางส่วนหรือทั้งหมดก็ได้ ซึ่งต้องขึ้นอยู่กับการตัดสินใจของคุณว่าต้องการส่วนใดบ้าง
ในบทความนี้จะช่วยคุณในการไกด์ไอเดีย ถึงคุณลักษณะพื้นฐานของ Application ที่เหมาะสมในการเชื่อมต่อกับ Cloud และคุณสมบัติพื้นฐานของ Cloud รวมถึงข้อควรพิจารณา ที่จะช่วยคุณในการตัดสินใจรัน Application ของคุณบน Cloud Computing
Mapping Application to the Cloud
Figure 1: Attributes map ของ Application
ทุกๆ Application จะถูกออกแบบมาเพื่อช่วยแก้ปัญหาในการทำงานบางอย่าง เช่น ระบบบริหารการสั่งซื้อสินค้า, ระบบจองตั๋วเครื่องบิน, ระบบ CRM หรืออื่นๆ การที่จะอิมพลีเมนต์ฟังก์ชั่นของระบบจำเป็นต้องขึ้นอยู่กับแอดทริบิวต์ที่ ใช้งานในปัจจุบัน เช่น ระบบบริหารการสั่งซื้อสินค้า ทรานแซกชั่นในเรื่องการสั่งสินค้า หรือการโอนเงินเป็นเรื่องที่สำคัญสำหรับ Application นั้นๆ ถ้าเป็น Cloud Storage อาจจะไม่เหมาะสมในการเก็บข้อมูลที่มีความเสี่ยง ดังนั้นในการกำหนดคุณลักษณะที่สำคัญของโปรแกรมหรือระบบย่อยของระบบขนาดใหญ่ จึงเป็นขั้นตอนที่สำคัญในการกำหนดให้โปรแกรมนั้นทำงานร่วมกับ Cloud
จาก Figure 1 ได้แสดงถึงคุณสมบัติที่สำคัญที่มีส่วนเกี่ยวข้องกับ Application (ในกรอบสีฟ้า) ซึ่งคุณสมบัติทั้งหมดนี้ Application ของคุณไม่จำเป็นต้องมีทั้งหมด แต่คุณก็ควรระบุได้ว่าคุณสมบัตินั้นเป็นคุณสมบัติที่สำคัญที่สุดของ Application ของคุณ ซึ่งถ้าคุณสามารถทำการระบุได้ จะทำให้ง่ายต่อการจัดการ วางแผนบน Cloud จากที่ผมเลือกคือ Data Management ยกตัวอย่างเช่น ให้แสดงถึงรายละเอียดของแอดทริบิวต์ในขั้นที่สอง โดยเป็นการบอกความละเอียดมากขึ้นสำหรับแอดทริบิวต์ที่มีความสำคัญสูง หรือทำการเลือกการเข้าถึงว่าคุณต้องการเข้าถึงแบบออนไลน์หรือออฟไลน์ หรือทั้งสองแบบในการเข้าถึง Data Source ของคุณ
ยกตัวอย่างเช่น Data Access คุณสามารถเริ่มต้นเพื่อดูว่าคุณสมบัตินี้มีผลต่อการตัดสินใจของคุณหรือไม่ใน การใช้บริการ Cloud Storage จาก Cloud Provider หรือไม่ หากข้อมูลของคุณจำเป็นต้องมีการ Online ตลอดเวลา การเลือกใช้บริการ Cloud เป็นตัวเลือกที่เหมาะสม แต่หากข้อมูลของคุณมีการใช้งานเป็นแบบ Offline ปัจจัยนี้อาจจะไม่เหมาะสมต่อการใช้บริการ Cloud และถ้าหากคุณตัดสินใจได้ว่าคุณจำเป็นต้องใช้ทั้งสองแบบ ค่าใช้จ่ายในการพัฒนา Application เพื่อทำการซิงโครไนซ์ข้อมูลระหว่าง Application และ Cloud จำเป็นจะต้องมีการพิจารณาก่อน
หากต้องการเลือกที่จะรองรับได้ทั้ง Offline และ Online สำหรับผู้ใช้งาน อาจจำเป็นต้องเพิ่มค่าใช้จ่ายเข้าไปในโปรเจ็คด้วย แต่อย่างไรก็ตาม ควรจะมองถึงคุณสมบัติ High-Scalability เป็นสำคัญเพราะเป็นข้อดีของการใช้งาน Cloud ซึ่งสามารถใช้งานได้ง่ายดายกว่าแบบ Offline และชดเชยค่าใช้จ่ายของคุณในส่วนนี้ สามารถอ่านรายละเอียด ได้ใน ตอนที่ 3จะแสดงตัวอย่างของแอดทริบิวต์ที่เหมาะสมต่อ Application
What Makes Up the Cloud?
หลังจากที่คุณสามารถระบุถึงคุณสมบัติ Application ที่สำคัญของคุณแล้ว คุณสามารถที่จะเริ่มฝึกการใช้งาน Cloud ได้ทันที (ในการใช้งานกับผู้ให้บริการ Cloud) แอดทริบิวต์ของ Cloud แบ่งออกได้เป็นหลากหลายประเภทขึ้นกับกระบวนการดำเนินงานของคุณ ผมได้ยกตัวอย่างการแบ่งประเภท เป็นดังนี้ Cloud Infrastructure, Cloud Storage, Cloud Platform, Cloud Applications และ Core Cloud Services
คุณสามารถที่จะวางแผนคุณสมบัติของ Application คุณให้เหมาะสมกับการจัดประเภทที่ผมได้กล่าวในข้างต้นมากกว่าหนึ่งประเภท ก็ได้ ซึ่งแสดงใน Figure 2
Figure 2: Mapping application attributes to cloud attributes
Cloud Infrastructure
โดยทั่วไปคือ โครงสร้างพื้นฐานหรือเวอร์ชวลเซิร์ฟเวอร์ (Virtual Server) บน Cloud ของผู้ให้บริการ โดยที่โครงสร้างพื้นฐานนี้จะมอบขุมพลังสำหรับการประมวลผลและ Application ที่มีขนาดใหญ่ สำหรับ Application ที่มีขนาดใหญ่ลองนึกถึง Facebook หรือ MySpace หากนึกถึงการประมวลที่มีขนาดใหญ่ให้ถึงเครื่องคลัสเตอร์ที่ High-Performance ไว้สำหรับในการคิดคำนวณเชิงวิศวกรรมยากๆ เช่น ในอุตสาหกรรมยานยนต์ หรือ อากาศยาน เป็นต้น
แกนหลักของโครงสร้าง Cloud คือ เวอร์ชวลไลเซชั่น (Virtualization) โดยเฉพาะอย่างยิ่งการใช้เวอร์ชวลเซิร์ฟเวอร์ในดาต้าเซนเตอร์ที่มีขนาดใหญ่ จำเป็นต้องมีการลงทุนและการบำรุงรักษาที่สูงในส่วนของฮาร์ดแวร์ แต่ก็มีข้อดีคือเป็นการใช้ทรัพยากรร่วมกัน แพลตฟอร์มเวอร์ชวลไลเซชั่น สามารถแบ่งเป็น Full-Virtualization กับ Para-Virtualization สามารถศึกษารายละเอียดได้ในตอนที่ 4
Cloud Storage
เป็นการบันทึกข้อมูลแล้วเก็บไว้ภายในเมฆ ซึ่งรวมถึงการให้บริการที่รวมถึงฟังก์ชั่นที่เกี่ยวกับการจัดการฐานข้อมูล เช่น การจัดเก็บไฟล์ดิจิตอลมีเดีย, การให้บริการซิงโครไนซ์ของข้อมูล หรือ Network Attached Storage(NAS) โดยที่การให้บริการด้านข้อมูลจะเป็นการจ่ายเท่ากับที่คุณใช้งาน (pay-as-you-go) ซึ่งในปัจจุบันเป็นการจ่ายแบบ pay-per-GB ทั้งข้อมูลที่จัดเก็บและข้อมูลที่มีการถ่ายโอน
Cloud Storage มีประโยชน์มากมาย เช่น คุณสามารถจัดเก็บข้อมูลและเรียกใช้ข้อมูลได้เป็นจำนวนมากจากทุกๆที่ และทุกๆเวลา การให้บริการ Data Storage ทั้งเร็วและมีราคาไม่แพง อีกทั้งยังมีขนาดไม่จำกัด อย่างไรก็ตามความน่าเชื่อถือเป็นสิ่งที่สำคัญที่สุด เพราะการให้บริการที่ดีเยี่ยมอาจจะมีการผิดพลาดเกิดขึ้นได้ การให้ความช่วยเหลือจึงเป็นประเด็นที่สำคัญในการใช้งานระบบ Data Storage ปัญหาที่สำคัญคือจะต้องสามารถระบุที่จัดเก็บข้อมูลขององค์กรที่ใช้บริการได้
Cloud Platform
จริงๆ แล้ว คือ ความสามารถในการสร้าง, ทดสอบ, ดีพลอย์, รัน และจัดการ Application บน CloudPlatform เป็นทางเลือกอีกประเภทหนึ่ง ยกตัวอย่างเช่น ช่วยให้คุณสามารถทำงานเฉพาะบนโลก Online อย่างเดียว, Offline อย่างเดียว หรือทั้งสอง ขณะที่เครื่องมือในการทดสอบ Application อาจจะต้องขึ้นอยู่กับแพลตฟอร์มใดแพลตฟอร์มหนึ่ง
กฏทั่วไปของ Cloud Platform คือ ค่าใช้จ่ายที่ต่ำ, Highly-Scalable ทั้งโฮสติ้งและสภาพแวดล้อมในการพัฒนาบนเว็บเบส และมีความเป็นไปได้ที่ Cloud Platform จะเป็นอีกก้าวหนึ่งของการทำ Web Hosting ที่มีความ Scalability และ Availability มากกว่าโฮสติ้งที่มีอยู่ในปัจจุบัน ซึ่งอาจจะเป็นข้อดีและข้อเสียในทางเทคเทคโนโลยีได้ ซึ่งข้อเสียก็คือ หากมีการพัฒนาบน Cloud ของที่ใดที่หนึ่ง หากจะทำงานย้ายข้ามผู้ให้บริการอาจจะเป็นการยากมากกว่าการใช้โฮสติ้งแบบ ปัจจุบัน
Cloud Application
สามารถใช้งานบางส่วนหรือทั้งหมดบน Cloud ได้ หรือแม้กระทั่งอิมพลีเมนต์ฟังก์ชั่นหลักบน Cloud ก็เป็นได้ สถาปัตยกรรมของ Cloud Application จะแตกต่างจาก Application เดิมๆ เช่น การอิมพลีเมนต์ Cloud Application อาจจำเป็นต้องปรับเปลี่ยนกระบวนการคิดที่แตกต่างจากเดิมออกไป
Cloud Application จะกำจัดการ Install และ Run เหมือน Application ทั่วๆไป อีกทั้งยังช่วยลดในการบำรุงรักษาซอฟต์แวร์, ดีพลอย์เมนต์, การจัดการ และการช่วยเหลือ ซึ่งจากที่ได้กล่าวข้างต้น เป็นคุณสมบัติของ Software-as a Service (SaaS)
ทางเลือกนี้ใช้โมเดลแบบ Software + Services เป็นการผสมผสานระหว่างการพัฒนา Application แบบเดิมและการอิมพลีเมนต์แบบ SaaSโดยที่ Application แบบ S+S จะเป็นการสร้าง Application แบบ Rich-Client Application ซึ่งจะเป็นต้องมีการติดตั้งลงบนเครื่องของผู้ใช้งาน ที่จะเป็นอินเตอร์เฟสให้เชื่อมต่อสู่การให้บริการภายนอก S+S สามารถที่จะทำการโต้ตอบ Application แบบ Offline ก็ได้ หรือทำการ Sync ข้อมูลในภายหลังเหมือนมีความต้องการที่จะเชื่อมต่อก็สามารถทำได้
Core Cloud Services
เป็นการให้บริการเพื่อสนับสนุน Cloud-Based Solution เช่น Identity Management (ระบบการจัดการตัวตน),Service-to-Service Integration, Mapping, ระบบ Billing/Payment, Search, Messaging, Business Process Management, Workflow และอื่นๆ Core Cloud Services สามารถที่จะทำงานเพียงลำพัง หรือทำงานผ่านการทำงานร่วมกันแบบระบบต่อระบบ
วิวัฒนาการของ Cloud Service เป็นการเลียนแบบอุตสาหกรรมโทรค
มนาคม ภายใต้การบริการต่างๆเช่น ระบบ Business Support (BSS) หรือ ระบบ Operational Support (OSS)
การบริการประเภท BSS เป็นการจัดการที่มีการโต้ตอบกันระหว่างลูกค้า เช่น
- การสั่งซื้อ
- กระบวนการออกบิล
- การเก็บค่าใช้บริการ
การบริการประเภท OSS เป็นการบริการด้วยตนเองและการรับผิดชอบต่องานนั้นๆ เช่น
- การตรวจสอบการให้บริการ
- การให้บริการสำรอง
- การให้บริการในการตั้งค่าคอนฟิค
Figure 3: Cloud ทั้ง 5 ประเภท และแอดทริบิวต์ที่อยู่ใน Cloud Storage
Credit: http://www.microsoft.com/thailand/technet/cloud1.aspx