วันเสาร์ที่ 22 สิงหาคม พ.ศ. 2552

อ้างอิง

บทความ Scientific Cloud Computing: Early Definition and Experience ของ Lizhe Wang and Gregor von Laszewski
บทความ Cloud computing: utility computing over the Internet ของ Taneli Korri
บทความ Community Cloud Computing ของ Alexandros Marinos และ Gerard Briscoe
http://en.wikipedia.org/wiki/Cloud_computing
http://www.cloudessential.com/cloudcomputing/types_of_cloud_computing.html
http://docs.amazonwebservices.com/AWSEC2/latest/DeveloperGuide/concepts-flow.html

ความคิดเห็นเกี่ยวกับ Cloud Computing

   คิดว่า Cloud Computing จะทำให้เกิดการเปลี่ยนแปลงทางด้านไอที ไม่ว่าจะเป็นด้านซอฟท์แวร์และฮาร์ดแวร์ โดยอนาคตคอมพิวเตอร์ของผู้ใช้งานโดยทั่วไปจะเป็นเพียงแค่เทอร์มินอลแล้วแต่ละคนก้อใช้บริการCloud ของ Vendor ทำให้ผู้ใช้ลดความซับซ้อนและค่าใช้จ่ายอย่างเช่น ไม่จำเป็นจะต้องอัพเดทฮาร์ดแวร์ของเราให้ทันสมัยเพื่อรองรับกับ Application ที่เปลี่ยนไป ค่า Software ที่ต้องจ่ายค่าลิขสิทธิ์ที่ซื้อมาใช้ โดยเราอาจจะจ่ายค่าใช้งานทรัพยากรตามจริงคล้ายกับโทรศัพท์มือถือ เราสามารถเลือกทรัพยากรได้ตามความต้องการเราเช่น ตอนนี้เราพิมพ์งาน หรือใช้ Application ที่ต้องการใช้ Computing Resource น้อยเราก็จ่ายในราคาถูกในเวลาถัดมาเมื่อเราต้องการใช้งาน Application ที่ต้องการ Resource มากขึ้น ณ เวลานั้น เราก็จ่ายเพิ่มขึ้น เช่นเดียวกันกับ network ที่ยุคหนึ่งเราใช้ leased line ต่อมาเราเปลี่ยนมาใช้ Virtual Circuit แทน

Eucalyptus

EUCALYPTUS (Elastic Utility Computing Architecture for Linking Your Programs To Useful Systems)
โครงการจาก UCSD เป็น software infrastructure ที่เป็นโอเพ่นซอร์สสำหรับนำไปสร้าง Elastic/Utility/Cloud computing โดยใช้ computing clusters และหรือ workstation ฟาร์ม ตัว EUCALYPTUS นั้นมีฟีเจอร์ต่างๆที่น่าสนใจ เช่น สามารถทำงานร่วมกับ interfaces ของ Amazon EC2, ติดตั้งและจัดการได้ง่าย รวมถึงรองรับ virtual privet network ของผู้ใช้



รูป The Eucalyptus architecture



จากรูปข้างบนแสดงให้เห็นว่าสถาปัตยกรรม EUCALYPTUS ที่เข้ากันกับ Amazon EC2 อินเตอร์เฟส.
โดย EUCALYPTUS ได้อิมพลีเมนท์ Service ตัวกลางเพื่อที่จะแปลความต้องการของผู้ใช้ไปยังส่วนของ Cloud Back Ends: ส่วน client-side API translator และ cloud controller

Amazon EC2

Amazon Elastic Compute Cloud (EC2) จัดเว็ปเซอร์วิสอิทเตอร์เฟสที่ให้ความสามารถในการคำนวณซึ่งปรับขนาดได้แก่ผู้ใช้ใน Compute Cloud โดยผู้ใช้นั้นสามารถที่จะเช่าและตั้งค่า Virtual Machines รวมทั้ง Data Storage ได้อย่างง่าย และใช้ความสามารถในการคำนวณจากระยะไกล
รายละเอียดเพิ่มเติมนั้น User สามารถ
  • สร้าง Amazon Machine Image (AMI) ซึ่งประกอบด้วยแอพพลิเคชั่น ไลบรารี ข้อมูล และ การตั้งค่าที่ เกี่ยวเนื่อง หรือ ใช้การตั้งค่าเริ่มต้น รวมทั้งอิมเมจเท็มเพล็ทเพื่อที่จะเริ่มและใช้งานได้ในทันที

  • อัพโหลด AMI ไปใน Amazon Simple Storage Service(S3) ซึ่งปลอดภัย เชื่อถือได้ และเป็นคลังข้อมูลที่รวดเร็วในการเก็บอิมเมจของ Virtual machine และตัวข้อมูล

  • ให้ Amazon EC2Web service สำหรับการตั้งค่าความปลอดภัยและการเข้าถึงผ่านเน็ตเวิร์ค

  • เลือกประเภทของ Instance ที่ผู้ใช้ต้องการใช้งาน

  • เริ่ม ปิด หรือ มอนิเตอร์ Instance ได้โดยผ่าน Web service API




รูป Amazon อธิบาย Basic flow ของการใช้งาน EC2
ภาพจาก http://docs.amazonwebservices.com/AWSEC2/latest/DeveloperGuide/concepts-flow.html

สถาปัตยกรรม Cloud Computing

สถาปัตยกรรม Cloud Computing เป็น System Architecture ของ Software System ที่เกี่ยวข้องการจัดการ Cloud Computing ประกอบทั้งด้วยฮาร์ดแวร์และซอฟต์แวร์ที่ออกแบบโดย Cloud Architect ผู้ที่ทำหน้าที่เพื่อจะการ integrate cloud รวมทั้งการติดต่อระหว่าง cloud component กับ application programming interface ซึ่งโดยทั่วไปเป็น web service

นอกจากนั้นยังคล้ายกับหลักของ Unix ที่มีหลายโปรแกรมทำงานซึ่งทำงานร่วมกันผ่าน universal interface ความซับซ้อนจึงถูกควบคุมและส่งผลให้มีระบบการจัดการดีกว่า แบบกว่า monolithic counterpart

สถาปัตยกรรม Cloud ยังรวมไปถึง เว็บเบราเซอร์และ / หรือซอฟท์แวร์แอพพลิเคชั่นเพื่อใช้ในการเข้าถึง Cloud Application

สถาปัตยกรรม Cloud Storage คือการดำเนินการ metadata เพื่อให้เป็นลักษณะศูนย์กลางของ data node
ที่สามารถ scale ได้และมีอิสระในการรับส่งข้อมูลไปยังแอพพลิเคชั่นหรือ User




รูปตัวอย่าง GrepTheWeb Architecture

ประเภทของ Cloud Computing

Public cloud เป็น Cloud computing แบบที่ใช้ทรัพยากรที่ได้เตรียมเอาไว้ให้บริการผ่านทางอินเทอร์เน็ต เว็บแอพพลิเคชั่น หรือเว็บเซอร์วิส ซึ่งให้บริการการแชร์ทรัพยากรและยูทีลิตี้ขั้นพื้นฐาน ตัวอย่าง Amazon Web Service แต่ก็มีข้อจำกัดในด้าน SLA และในบริษัทขนาดใหญ่ต่างมี Data center เป็นของตนเองแล้วพวกเข้ายังไม่ต้องการที่จะย้ายไปใช้ Public cloud ในเวลาอันสั้น

Private cloud เป็นการจำลอง Cloud computing ขึ้นมาเพื่อใช้งานบนเน็ตเวิร์กส่วนตัวสำหรับบริษัทระดับ Enterprises และ Coporates ขนาดใหญ่ โดยมีประโยชน์ทำให้เกิด Data center รวมกันเป็นแหล่งเดียว (consolidation) และเกิดความยืดหยุ่นในเรื่อง Cycle times และ internal Quality of Services

Hybrid cloud คือ Private Cloud ที่ต่ออยู่กับ Public Cloud โดยการจัดการเมื่อเกิด Overflow และ Peak adaptation นั้นกระทำผ่าน Public Cloud


จาก http://www.cloudessential.com/cloudcomputing/types_of_cloud_computing.html

Layer of Abstraction ของ Cloud Computing

1) Infrastructure-as-a-Service (IaaS) เป็นระดับล่างสุดของ Cloud Computing ผู้ให้บริการ ตัวอย่างเช่น Amazon และ Mosso ให้บริการเครื่อง instances สำหรับ developer โดย instances จริงๆแล้วมีพฤติกรรมเหมือน dedicated server ถูกควบคุมโดย developer ซึ่งรับผิดชอบในการทำงานของมัน ดังนั้นเมื่อเครื่องทำงานถึงประสิทธิภาพที่จำกัดไว้ developer จะต้องจัดการกับแบ่งแอพพลิเคชั่นออกไปทำงานบนอีก instance ด้วยตนเอง บริการนี้มีวัตถุประสงค์สำหรับนักพัฒนาผู้ที่สามารถเขียนซอฟต์แวร์โดยมีวิธีในการพัฒนาบนโครงสร้างพื้นฐานที่ยืดหยุ่นได้เพียงเล็กน้อย
2) Platform-as-a-Service (PaaS) ระดับ Abstraction ซึ่งสูงขึ้น บริการเช่น Google App Engine ที่จัด programming environment ให้โดยซ่อนรายละเอียดของ instances machine และรายละเอียดทางเทคนิคจาก developer โดยโปรแกรมจะรันบน data center โดยที่ developer ไม่ต้องสนใจเกี่ยวกับการ allocate พื้นที่ แต่สิ่งที่ต้องแลกคือ developer จะต้องยอมรับเงื่อนไขของ environment ตัวอย่างเช่นการใช้ key-value stores แทนการใช้ฐานข้อมู
3) Software-as-a-Service (SaaS) เป็นระดับ Abstraction สูงที่สุดของ Cloud Computing โดยกำหนดแอปพลิเคชันให้กับผู้ใช้แบบออนไลน์ รวมทั้งทรัพยากรและการจัดเก็บ โดย SaaS แตกต่างจากเว็บไซต์หรือเว็บแอปพลิเคชันแบบเดิมที่ไม่อินเตอร์เฟส กับข้อมูลผู้ใช้ (เช่นเอกสาร) หรือทำได้ลักษณะที่มีข้อจำกัด ตัวอย่างที่เป็นที่นิยมเช่น Microsoft (Windows Live) Hotmail, ชุด Office เช่นของ Google Documents และ Zoho, และธุรกิจซอฟต์แวร์ออนไลน์ เช่น Salesforce.com


รูป Abstraction of Cloud Computing
จากบทความ Community Cloud Computing ของ Alexandros Marinos และ Gerard Briscoe
เพื่อความเข้าใจ Cloud Computing ดีขึ้นเราสามารถแบ่งบทบาทของแต่ละคนได้ คือ Vendor เป็นผู้ให้บริการทรัพยากรดังที่ได้กล่าวมาแล้ว นักพัฒนาแอพพลิเคชันใช้ประโยชน์จากทรัพยากรเพื่อสร้างบริการให้กับ end user การแยกบทบาทนี้ช่วยในการกําหนดหน้าที่ของผู้ที่มีส่วนร่วม อย่างไรก็ตามแต่ละคนสามารถทำหน้าที่ได้หลายบทบาท เช่น Vendor นั้นเป็นผู้พัฒนา บริการสำหรับ end user ด้วย หรือนักพัฒนาใช้ประโยชน์จากบริการของผู้อื่นเพื่อสร้างบริการของตนเอง แต่ภายในแต่ละ Cloud ผู้ที่มีบทบาทในการควบคุมคือ Vendor นั่นเอง