Container เหมาะกับ Cloud อย่างไร

เมื่อกล่าวถึง Cloud เราก็จะนึกไปถึง Hypervisor และ Virtual Machine ที่เป็น Virtualization องค์ประกอบสำคัญของ Cloud โดย Virtualization เต็มรูปแบบซึ่งพื้นฐานนั้นมาจาก Hypervisor-Based ที่ซึ่งพวก Host Operating System และ Hypervisor จะรันชิ้นส่วนของ VM อย่าง Independent Server ด้วย OS ของตน และ Middleware ทั้งนี้การ Virtualization ได้สร้างขอบเขตของระบบที่มีค่ามากใน Cloud และรูปแบบการ Virtualization ที่เป็นที่นิยมอยู่ตอนนี้ก็คือ Container Technology นั่นเอง

แม้ว่า Docker Container จะไม่ได้ขาด IT Support แต่ข้อจำกัดที่ยังต้องพึ่งพา Linux ทำให้จุดยืนของ Docker ในวงการ Cloud ดูไม่ค่อยชัดเจนเท่าไหร่นัก

ในการทำงานของ Container ตัว Server จะรัน OS ที่สร้าง Container แบบกึ่งอัตโนมัติเพื่อรองรับ Application ต่างๆ โดย Application พวกนี้จะแชร์การใช้งาน OS หรือ Host ร่วมกัน ทำให้ Server ไม่ต้องรัน OS ใหม่สำหรับแต่ละ VM และ รองรับการทำงาน Multi-Programming ได้ง่ายขึ้น รวมทังแบ่ง Application ออกจากกันได้ ถึงอย่างนั้นก็ยังไม่ใช่การแยกออกเป็นเอกเทศอย่างสิ้นเชิงเหมือนกับ VM

อาจกล่าวได้ว่าเทคโนโลยี Container เป็นคำตอบที่เหมาะสำหรับ Private Cloud และ Application บางอย่างของ Public Cloud โดยมี Container ยอดนิยม อย่าง Docker เป็น Platform ที่เพอร์เฟ็กต์ที่สุด

กระแสนิยม Docker ใน Cloud

Docker เป็นระบบจัดการ Container (Container Management System) อย่างหนึ่ง ที่จัดการการสร้าง Container อย่างอัตโนมัติเพื่อใช้รัน Application หรือ Component ต่างๆ โดยพื้นฐานแล้ว จะมีชุด API สำหรับจัดการ Container ที่อาจสร้างมาจากTemplate หรือ Command ซึ่งตอนนี้ Docker ก็มีการพัฒนาอยู่ตลอด ออก Orchestration Tool สำหรับ Deploy Component เพิ่มเข้ามาให้ใช้ง่ายได้ง่ายและสะดวกยิ่งขึ้น

ที่จริงแล้วการสร้างระบบ Container-Based จะทำบน OS แบบไหนก็ได้ที่รองรับการ Partition แบบ Container แต่ Docker กลับใช้ Linux Container Tool ดังนั้น Docker Container จึงรันเฉพาะ Application และ Component ของ Linux เท่านั้น แม้จะสามารถรันบน OS อื่นได้ แต่ก็ยังต้องการ Linux Guest OS ติดตั้งไว้ใน VM เพื่อรองรับการทำงานของ Container ซึ่งแน่นอนว่ามันก็ต้องรัน Application ของ Linux อีกเช่นกัน

ส่วนการรองรับ Docker ของ Windows จะเป็นการทำงานแบบที่ใช้ Docker ติดตั้งเอาไว้ใน VM (Docker-in-a-VM Approach) ซึ่งการนำ Docker มาใช้นอก Linux Host นั้นมีความยุ่งยากมาก ทำให้ผู้ใช้หลายคนรู้สึกว่าความยากมันมากเกินกว่าจะช่วยให้ทำงานได้สะดวกขึ้นอย่างที่ควร ต่อให้ผู้ใช้จะรัน Docker บน Host OS อื่นที่ไม่ใช่ Linux แต่สุดท้ายมันก็มีข้อจำกัดว่าต้องใช้ Application ของ Linux อยู่ดี อย่างไรก็ตามการ Host Docker Container บน Server ของ Windows ก็ยังถือว่าเหมาะสมกับผู้ใช้ที่มี Windows Server ขนาดใหญ่และต้องการเพิ่ม Linux-Based Application เข้าไป

ทางด้าน VM-based Virtualization และ Cloud Computing จะมีข้อได้เปรียบตรงความเป็นเอกเทศ เหมาะกับการทำ Public Cloud และ Server Consolidation อย่างยิ่ง โดยการสร้าง Application สำหรับใช้บน Cloud นั้น แทนที่จะย้าย Application จะช่วยลดความจำเป็นของการ Support ความเป็นเอกเทศในระดับนี้ลงไป

กลุ่มองค์กรสามารถ Host Container บน VM ใน Public Cloud หรือ Host ใน Data Center หรือกระทั่งบน Client Device ก็ได้ โดยใช้ Orchestration Tool ใหม่ของ Docker ในการ Deploy Container-Based Component รวมทั้งประสานการทำงานกับ Workflow แถม Tool พวกนี้ยังช่วยให้ใช้งาน Hybrid Cloud ได้สะดวกด้วยระบบ Failover ที่ใช้งานง่ายกว่าเดิม

ด้วยความเล็กและการทำงานอย่างรวดเร็วของ Container ทำให้สามารถ Scale จำนวน Load หรือ เพิ่ม/ลด Feature ได้ตามต้องการ อีกทั้ง Machine Image ที่ต้องใช้ Load โครงสร้าง Container ลงไปบน Bare-Metal หรือ VM ก็ง่ายต่อการพัฒนาระบบ และสามารถ Port ได้สะดวกอีกด้วย ตัว Application Image ที่ต้องติดตั้งลงไปใน Container ก็สามารถพัฒนาและสั่ง Deploy ได้ง่ายเช่นเดียวกัน โดยพึ่งการทำงานของ Host OS และ Middleware Service

Docker เป็นที่นิยมมากขึ้นเรื่อยๆ แต่ยังห่างไกลคำว่าเพอร์เฟ็กต์

ถึงจะได้รับความนิยมอย่างล้นหลามแต่ Docker ก็ไม่ได้สมบูรณ์แบบ ทำให้ VM ยังคงเป็นคำตอบที่ดีที่สุดสำหรับ Application ใน Public Cloud ที่มีผู้เช่าใช้เป็นจำนวนมาก เพราะว่าการเจาะระบบ VM เพื่อโจมตี Application นั้นทำได้ยากกว่าโจมตีที่ตัว Container นอกจากนี้ Docker ยังไม่ค่อยมีระบบป้องกันการดึงทรัพยากรไปใช้เกินจำเป็นของ Container จนส่งผลกระทบต่อเครื่องอื่นๆ และเพื่อบรรเทาปัญหาพวกนี้ จึงต้องรัน Container และ Docker ภายใน VM ซึ่งนับว่าเป็นพื้นฐานของการใช้งาน Docker และ VM ร่วมกัน

นอกจากนี้ ยังมีอีกวิธีหนึ่ง คือ การปรับ VM ให้ทำงานคล้ายกับ Container เรียกว่า “Mini-VM” เช่น การที่ Xen Mirage ใช้ Shim Kernel ที่มีความเป็นเอกเทศกับกับ Application อยู่บ้าง แต่จะเลี่ยงการคัดลอก OS และ Middleware ทั้งหมด

ส่วนการตัดสินใจว่าจะเลือกใช้ Container หรือ VM ดีนั้น ต้องดูจากโครงสร้างของ Application และ Source ซึ่ง Monolithic Application ที่สร้างขึ้นมาด้วย Server Consolidation จะมีขนาดใหญ่และไม่ยืดหยุ่น ใช้ประโยชน์จาก Container ได้ไม่มาก Application ที่เหมาะกับเทคโนโลยี Container คือ พวกที่มีพื้นฐานมาจาก SOA/REST เพราะ Application พวกนี้มีขนาดเล็ก กระจายตัวได้หลากหลาย ย้ายไปมาระหว่าง Cloud ได้ รวมทั้งสามารถ Scale อย่างต่อเนื่อง หรือรันการทำงานแบบเป็นช่วงๆ ได้ อย่างไรก็ดีการเลือกรันการทำงานด้วย Linux Container ก็คือการตัดสินใจเลือกใช้ Docker ไปโดยปริยาย

เทคโนโลยี Container และบทบาทของ Docker ในระบบ Cloud Computing มีแนวโน้มจะเติบโตอย่างต่อเนื่อง โดยเฉพาะเมื่อ Application ใหม่ๆ สำหรับ Cloud โดยเฉพาะได้รับการพัฒนาออกมาอยู่เรื่อยๆ นานวันเข้าก็จะมีการทำงานร่วมกันระหว่าง Docker กับ VM มากขึ้น Orchestration Tool คุณภาพสูงจะช่วยให้ผู้ใช้สามารถสั่งใช้งาน Component ใน Container หรือ VM หรือกระทั่ง Container ภายใน VM ก็ยังได้ ซึ่งเทคโนโลยีไม่ว่าจะเป็นอะไรก็ตาม จะไม่เกิดขึ้นมาเพื่อลบล้างการใช้งานของเทคโนโลยีเดิม แต่พวกมันจะทำงานร่วมกันเพื่อนำมาซึ่งประสิทธิภาพสูงสุดต่างหาก

Container Orchestration

ทั้ง Container และ OpenStack ต่างก็เป็นเทคโนโลยีสุดฮอตในระบบ Cloud แต่รู้หรือไม่ว่า Container Orchestration Tool ตัวไหนบ้างที่สามารถนำมาใช้งานร่วมกับ Open Source Cloud Platform อย่าง OpenStack ได้? มาหาคำตอบกันที่บทความนี้ได้เลย

องค์กรทั้งหลายมักใช้ Container Orchestration Tool (หรือบางครั้งก็เรียกว่า Container Orchestration Engine) ในการ Deploy, Scale, และ เชื่อมต่อส่วนประกอบต่างๆ ของ Container Technology เข้าด้วยกัน ซึ่ง Orchestration Tool นี้ช่วยให้องค์กรสามารถ Monitor พวก Container Instance เพื่อลดจำนวน Container ที่กระจายตัวอยู่ในระบบได้อีกด้วย

OpenStack Magnum Module ที่เป็นบริการ OpenStack API สำหรับ Container นั้นรองรับ 3 Container Orchestration Engine หลักๆ คือ Docker, Google Kubernetes, และ Apache Mesos

Docker เป็นหนึ่งใน Orchestration Engine ที่ได้รับความนิยมและเป็นที่รู้จักมากที่สุด Docker ทำให้ Developer สามารถ  Package และ Deploy ทั้ง Application ตลอดจนสิ่งที่ Application ต้องใช้ได้ภายในหนึ่ง Image ที่รันบนระบบของ Linux ทั้งนี้ Docker ก็มี Tool ของตัวเอง เช่น Docker Machine สำหรับสร้าง Docker Host, Docker Compose สำหรับรวบรวม Application ซับซ้อนทั้งหลายที่กระจายตัวอยู่, และ Docker Swarm สำหรับรองรับ Container Cluster ให้มีระบบ Computing ที่ยืดหยุ่นและ Scale การใช้งานได้

Google Kubernetes เป็น Container Orchestration Engine แบบ Open Source ที่รองรับการงานร่วมกับ Docker Container โดย Kubernetes นี้จะ Deploy และจัดการ Container อยู่ภายใน Compute Cluster ทั้งยังทำ Workload Balancing เพื่อคงไว้ซึ่งศักยภาพการทำงาน

Apache Mesos ก็เป็นอีกหนึ่ง Orchestration Engine แบบ Open Source ที่เน้นด้านความคงทนต่อความเสียหาย (Fault-Tolerant), Compute Cluster ขนาดใหญ่, และการรองรับ Node จำนวนนับหมื่นที่รัน Docker Container นอกจากนี้ Mesos ยังรองรับคอนเซ็ปต์ของ Jobs And Tasks รวมทั้งสภาพแวดล้อม Container ที่เปลี่ยนแปลงอยู่ตลอดและมีความสามารถการ Scale สูง ซึ่งองค์กรมักจะใช้งาน Mesos กับ Job System อย่าง Marathon สำหรับรัน Jobs และ Tasks

ผู้ใช้งาน OpenStack สามารถเลือกใช้อย่างไหนก็ได้จาก 3 Orchestration Tool นี้ โดย Engine ที่เลือกใช้จะถูก Provision อัติโนมัติไปยัง Host System ที่มี Container Deploy อยู่ทันที

รู้จัก OpenStack

คุณรู้จัก OpenStack มากน้อยแค่ไหน แล้วรู้สึกไหมว่า ในยุค 4.0 นี้ เราเห็นคำว่า OpenStack ผ่านตามากมายจากหลายที่ นั่นเพราะเป็นเทคโนโลยี ที่กำลังมาแรงในขณะนี้ สำหรับใครที่ยังไม่มีความรู้ในเรื่องของ OpenStack เลยว่ามันคืออะไร วันนี้เราจะพาไปทำความรู้จัก เพื่อเป็นประโยชน์ในธุรกิจของตัวคุณเอง

ปัจจุบัน OpenStack ได้รับความนิยมมากขึ้นเรื่อยๆ อย่างกว้างขวางจากกว่า 250 องค์กรใน 130 ประเทศทั่วโลก ในฐานะ Open Source สำหรับ Private Cloud แต่อะไรทำให้ OpenStack มีความโดดเด่นเกินหน้าเกินตาคู่แข่งรายอื่นอย่าง Amazon EC2 กันล่ะ? บทความนี้จะพาคุณไปทำความรู้จักกับ OpenStack และเปิดเผยองค์ประกอบเด่นๆ ของมันกัน

OpenStack ในฐานะแพลตฟอร์มแบบ Open source

NASA และ Rackspace เป็นผู้เริ่มต้นพัฒนา OpenStack ก่อนจะเปิดเป็น Open source ให้เหล่าโปรแกรมเมอร์สามารถนำไปพัฒนาต่อได้ตามต้องการ โดยตรวจสอบ Source code ได้ทาง GitHub ทั้งนี้พวกโปรแกรมเมอร์ผู้พัฒนาระบบ OpenStack เองก็ทำงานให้กับองค์กรใหญ่ที่นำ OpenStack ไปใช้ด้วยเหมือนกัน เช่น Rackspace และ PayPal เป็นต้น

นอกจากนี้ ยังมีโปรเจ็คเกี่ยวกับ OpenStack อีกหลายโครงการ ซึ่งส่วนมากก็เป็นโปรเจ็คเฉพาะด้าน เช่น การติดตั้งแบบ bare-metal ผู้ที่สนใจจะเรียนรู้เกี่ยวกับการใช้งาน OpenStack หรือจะทดลองใช้ ทาง OpenStack ก็มี Development Version ให้ลองเล่นกันได้โดยนำไปติดตั้งบน Ubuntu Linux หรือจะใช้ OpenStack Autopilot wizard ในการสั่ง Deploy ก็ได้ ส่วน Source code ก็ไม่จำเป็น เพราะ OpenStack สามารถหาได้จาก Python package โดยใช้ Tools ชื่อ apt-get ในการติดตั้ง

รู้จัก Ecosystem ของ OpenStack

สิ่งที่เหมือนกันของ OpenStack กับ Amazon EC2 คือ ผู้ใช้สามารถ Provision VM จาก dashboard หรือ API ได้ แต่ข้อแตกต่างหลักๆ นอกจากเรื่องที่ OpenStack เป็นบริการฟรี คือ Amazon EC2 เป็นบริการ Public Cloud เท่านั้น ส่วน OpenStack ผู้ใช้สามารถเลือกได้ว่าจะใช้เป็นบริการ Private Cloud ของ OpenStack เอง หรือจะสมัครไปใช้ Public Cloud จากตัวแทนผู้ให้บริการของ OpenStack ก็ได้

OpenStack ในความจริงไม่ใช่ Hypervisor แต่ OpenStack เป็นโครงสร้างที่ถูกสร้างขึ้นมาเพื่อทำงานร่วมกับ Hypervisor ที่แตกต่างกันหลายๆ เครื่อง โดย User สามารถเลือกได้ว่าจะ Deploy Hypervisor บนตัวเครื่อง (machine) หรือบน OS ที่ built-in มากับ Hypervisor เช่น Linux KVM เป็นต้น นอกจากนี้ OpenStack ยังทำให้ User สามารถนำ VM ไปติดตั้งบน Bare-Metal Server (เซิร์ฟเวอร์สำหรับผู้ใช้คนเดียว) ได้อีกด้วย

Component หลักของ OpenStack

  • Horizon (Dashboard) : เป็น User Interface (UI) แบบ Web-based
  • Nova (Compute) : ประกอบด้วย Controller และ Compute Nodes ที่ดึง VM image มาจาก OpenStack image service และสร้าง VM บนเซิร์ฟเวอร์ที่เราต้องการ โดยมี APIs ที่แตกต่างกันตามแต่ Platforms เช่น XenAPI, VMwareAPI, libvirt for Linux KVM (QEMU), Amazon EC2, และ Microsoft Hyper-V เป็นต้น
  • Neutron (Networking) : สำหรับสร้าง Virtual Network และ Network Interface อีกทั้งยังทำหน้าที่เชื่อมต่อกับ Networking Products จากตัวแทนผู้ให้บริการอื่นๆ
  • Swift (Object storage) : มีหลักการทำงานเหมือน Amazon S3 โดยจะบันทึกข้อมูลแบบเดี่ยว อย่าง Image เก็บไว้โดยใช้ระบบ REST Web service
  • Cinder (Block storage) : คล้ายกับ Swift โดยจะเก็บ disk file ต่างๆ เช่น Log และเปิดให้เราสามารถเพิ่มเติมข้อมูลเข้าไปได้ ในขณะที่ Swift จะให้เก็บแทนที่ของเดิมเท่านั้น
  • Keystone (identity storage) : เป็นตัวคำสั่งที่เปิดให้ User และ Process สามารถเข้าถึง Tools ต่างๆ ของ OpenStack ได้โดยสร้าง Autentication Token ขึ้นมา
  • Glance (Image service) : เป็นตัวหลักของ OpenStack ในฐานะ Cloud Operating System คือ การสร้าง VM image ขึ้นมา โดย Glance คือแคตตาล็อครวม VM ที่เราอัพโหลดเอาไว้และเปิดให้ใช้กันภายในองค์กร
  • Trove (database server) : เป็นตัวสนับสนุนการทำงานของ Database ที่ต่างกัน

นอกจากนี้ Component พวกนี้ของ OpenStack ยังใช้ MySQL database ที่หลากหลาย สามารถทำงานร่วมกับ Python รวมทั้งใช้ Command line interface ของ Python ได้อีกด้วย ตัวอย่างเช่น

คำสั่งดาวน์โหลด Keystone จากเซิร์ฟเวอร์ Linux ที่เก็บข้อมูลเอาไว้แบบ Public

apt-get install keystone python-keystoneclient

คำสั่งสร้าง User บน Keystone

keystone user-create –name Sam –description “Sam”

คำสั่งลิสต์ชื่อ VM images ด้วย Nova

nova image-list

คำสั่งเปิด Python Shell ก็ทำได้ง่ายๆ แค่พิมพ์ Python แล้วตามด้วย

from keystoneclient.v2_0 import client

หรือถ้าใครไม่คล่อง Python CLI (Command Line Interface) จะสลับไปใช้ Dashboard แบบคลิกก็ได้เหมือนกัน

นิยามใหม่ OpenStack Cloud

ถ้าพูดถึง Public Cloud เราก็คงนึกถึง Amazon Web Service (AWS) เพราะเป็นอันดับต้นๆ ของตลาด แต่ถ้าพูดถึง OpenStack เราก็จะนึกถึง Private Cloud ที่รองรับการทำงาน Private Cloud ได้ดีที่สุดในเวลานี้

โดยอาจกล่าวได้เลยว่าไม่มี Cloud Technology Platform ใดๆ ที่จะได้รับการสนับสนุนได้มากเท่า OpenStack ซึ่ง OpenStack นั้นเกิดมาจากการร่วมมือกันของ NASA และ Rackspace ในปี 2010 ก่อนที่จะมีการเติบโตขึ้นในฐานะ Open source ซึ่งมีผู้ให้การสนับสนุนมากมาย ทั้ง HP, IBM, Intel, Cisco, Dell, EMC, VMware, Symantec, Huawei, และ Yahoo

ใครใช้ OpenStack บ้าง?

          ผู้ให้การสนับสนุนจำนวนมากเหล่านี้ เป็นเพียงแค่ครึ่งหนึ่งของจำนวนผู้ใช้งาน OpenStack เท่านั้น ซึ่งภายในงาน OpenStack Summit ที่ Vancouver ที่ผ่านมา ผู้ค้าระดับโลกอย่าง Walmart ได้ออกมาพูดถึงการใช้งาน OpenStack กับระบบการจัดการ Ecommerce ว่าสามารถสร้างความสำเร็จมหาศาลได้อย่างไร นอกจากนี้ OpenStack ยังเป็นเบื้องหลังความสำเร็จของทั้ง eBay, Paypal, Comcast, Time Warner Cable และ Bestbuy ส่วนทาง NASA เองก็ถือว่าเป็นอีกหนึ่งสาวกผู้ที่กำลังใช้ OpenStack เป็นรากฐานพัฒนาเทคโนโลยีพามนุษย์ไปสู่ดาวอังคารนั่นเอง

เมื่อเราพอจะมองเห็นภาพกว้างๆ แล้วว่า OpenStack ถูกใช้โดยใครและใช้ทำอะไรบ้างแล้วนั้น ต่อมาก็จะต้องมาทำความเข้าใจกันหน่อยว่าแท้จริงแล้ว OpenStack ไม่ใช่ Homogeneous Cloud Product หรือผลิตภัณฑ์ Cloud ที่อยู่ภายใต้ผู้ให้บริการรายเดียวแบบเสร็จสรรพ ตั้งแต่ Hypervisor ยัน Management Layer (* อ้างอิงจาก http://www.bmc.com/blogs/what-price-homogeneity/) และ OpenStack ก็ไม่ใช่ผลิตภัณฑ์ Virtualization Hypervisor แต่อย่างใด

OpenStack นั้นเป็นเพียงแพลตฟอร์มผสานการทำงาน หรือ Integration Platform เท่านั้น โดย OpenStack จะเป็น Framework ที่มาพร้อมกับ API และ Tool สำหรับ Cloud Service พวก Product และ Technology ต่างๆ จะถูก Integrate และ Deploy ภายใน Framework นี้ เพื่อสร้าง OpenStack Cloud ขึ้นมา

ผู้ให้บริการบิดเบือนความหมายของ Cloud

ความหมายที่แท้จริงของ Cloud ได้ถูกบิดเบือนไปโดยเหล่าผู้ให้บริการ เพื่อให้เข้ากับจุดประสงค์การขายสินค้าของตน และสำหรับ Cloud ของ OpenStack นั้น จะขอยึดเอาตามคำจำกัดความจาก Amandeep Singh Juneja ผู้เป็น Senior Director ด้าน Cloud Engineering ที่ Walmart Labs คือ “Cloud นำมาซึ่งความยืนหยุ่นและการทำงานอย่างต่อเนื่องของระบบ Infrastructure”

ทั้งนี้ทั้งนั้นทาง OpenStack เองก็ได้นำเสนอ Framework ที่จะทำให้ ระบบ Infrastructure ทำงานได้อย่างต่อเนื่องและยืดหยุ่นเช่นเดียวกัน

นิยามใหม่ของ OpenStack Cloud

แรกเริ่มเดิมที OpenStack มีอยู่ 2 โปรเจ็กต์ได้แก่ Nova Compute Project และ Swift Storage ซึ่ง Nova จะทำให้ Cloud Operator สามารถเลือกการ Deploy ได้จาก Hypervisor และ Virtualization Technology หลายๆ แบบ ไม่ว่าจะ ESX ของ VMware, Open Source อย่าง KVM และ Xen Hypervisor หรือกระทั้ง Hyper-V ของ Microsoft ก็สามารถนำมา Deploy ใน Nova ได้เช่นกัน

หลังจากนั้น OpenStack ก็ได้ขยาย Project โดยการเพิ่มโปรเจ็กต์ใหม่ๆ เข้าไปภายใต้สิ่งที่รู้จักกันในชื่อ OpenStack Integrated Release สำหรับ OpenStack Kilo ที่ปล่อยออกมาไม่นานนี้ มีการผสานรวมหลายๆ โปรเจ็กต์เข้าด้วยกัน ซึ่งได้แก่ Nova compute, Swift object storage, Cinder block storage, Keystone identity, Horizon dashboard, Glance image, Neutron networking, Trove database, Sahara Big Data, Heat orchestration, Ceilometer monitoring และ Ironic Bare Metal projects

ความท้าทายของ Integrated Release ก็คือ ในการใช้งาน OpenStack Cloud เราไม่ได้ใช้สิ่งที่อยู่ใน Integrated Release ครบทั้งหมด เริ่มด้วย Liberty Release ที่จะทำให้เกิดนิยามใหม่ขึ้นสำหรับ OpenStack แล้วไหนจะ DefCore Project ส่วนสำคัญที่ต้องเข้าไปอยู่ใน Cloud เพื่อให้สามารถเรียกได้ว่าเป็น OpenStack Cloud นอกจากนี้ยังมี Big Tent ซึ่งเต็มไปด้วยสารพัดโปรเจ็กต์ให้ผู้ใช้หรือผู้ให้บริการ Cloud ได้เลือกสรร

ทั้งนี้ Big Tent ได้เปลี่ยนคำนิยามของ OpenStack Cloud ไปเสียหมด ทั้งเรื่องที่ OpenStack Cloud คืออะไร และสามารถทำอะไรได้บ้าง นั่นหมายความว่า Liberty ที่ปล่อยออกมาก็จะสร้างความแตกต่างมหาศาลให้กับ OpenStack เช่นเดียวกัน อย่างไรก็ตาม DefCore ยังคงเป็นส่วนที่ขาดไม่ได้ ทั้ง Keystone Identity service และ API เพราะ Keystone คือตัวเปิดการทำงานของ Federated Identity หรือ การพิสูจน์ตัวตนแบบรวมศูนย์ ใน OpenStack Cloud ด้วยไอเดียที่จะให้ OpenStack Foundation กลายมาเป็น OpenStack Powered Planet คือ ให้เกิดศูนย์กลางการใช้งาน OpenStack ทั่วโลกนั่นเอง

 

เทียบกันจะๆ Public, Private, และ Hybrid Cloud Computing แบบไหนที่ใช่คุณ

นักธุรกิจส่วนใหญ่ ที่หันมาใช้ Cloud Computing หลายคนมักเกิดคำถามว่า Cloud Computing มีแยกย่อยออกเป็น 3 รูปแบบ PublicPrivate, และ Hybrid Cloud Computing แล้วจะเลือกใช้แบบไหนดี เพื่อให้เหมาะกับธุรกิจของเรา

ในยุคที่ Cloud Computing เข้ามามีบทบาทกับองค์กรธุรกิจแบบนี้ อาจจะเกิดคำถามขึ้นว่าควรเลือกใช้บริการ Cloud Computing แบบไหนดี วันนี้เราจะมาเปรียบเทียบให้เห็นกันแบบเต็มๆ

Public Clouds

Public Cloud คือ รูปแบบการให้บริการ Service และ Infrastructure ผ่านอินเทอร์เน็ต ไม่มีการติดตั้งใดๆ ในพื้นที่ของผู้ใช้งาน โดยระบบนี้เป็น Cloud ที่มีประสิทธิภาพสูงสุดในการแชร์ทรัพยากร แต่มีข้อด้อยในเรื่องของระบบความปลอดภัยหากเทียบกับ Private Cloud

Public Cloud จะเป็นตัวเลือกที่ดีที่สุดเมื่อ:

  1. Workload มาตรฐานสำหรับ Application ถูกใช้โดยคนจำนวนมาก เช่น E-mail
  2. ต้องการทดสอบและพัฒนา Application Code
  3. มี SaaS (Software as a Service) จากผู้ให้บริการที่เตรียมระบบรักษาความปลอดภัยและแผนการรับมือมาเป็นอย่างดี
  4. ต้องการความสามารถเพื่อรองรับ Workload ที่เพิ่มขึ้นอย่างมากในช่วง Peak Time
  5. มีโครงการหรืองานที่ต้องทำร่วมกับผู้อื่น
  6. ต้องการทำ ad-hoc software development project โดยใช้ PaaS (Platform as a Service) ผ่านทางระบบ Cloud

หมายเหตุ : ผู้บริหารในฝ่าย IT กังวลในเรื่องความปลอดภัยและความน่าเชื่อถือของ Public Cloud จึงต้องใช้เวลาพิจารณาศึกษาให้มั่นใจก่อนว่าระบบถูกออกแบบมาดี เพื่อป้องกันหรือรับมือได้เมื่อเกิดปัญหา นอกจากนี้การประหยัดงบประมาณในระยะสั้นอาจจะส่งผลเสียในระยะยาวได้

Private Clouds

Private Cloud คือ รูปแบบการให้บริการ Service และ Infrastructure ทั้งหมดจะอยู่ใน Private Network ส่วนตัวของแต่ละบริษัท ระบบนี้มีความโดดเด่นด้านระบบรักษาความปลอดภัยและการควบคุม ซึ่งมีค่าบำรุงรักษา การจัดซื้อ การซ่อมแซม Infrastructure และ Software ทั้งหมดที่ผู้ใช้บริการต้องจ่าย

Private Cloud จะเป็นตัวเลือกที่ดีที่สุดเมื่อ:

  1. มีการทำงานเกี่ยวกับ Data และ Application สำคัญ ซึ่งจะต้องมีความปลอดภัยและการควบคุมการเข้าถึงมาเป็นอันดับแรก
  2. มีการทำธุรกิจที่ใส่ใจเรื่องความปลอดภัยและความเป็นส่วนตัวของข้อมูลเป็นพิเศษ
  3. บริษัทหรือองค์กรมีขนาดใหญ่มากพอที่จะรัน Cloud Data Center อย่างมีประสิทธิภาพได้ด้วยตัวเอง

หมายเหตุ : เส้นแบ่งระหว่าง Private Clouds และ Public Clouds เริ่มจะไม่ค่อยชัดเจน เนื่องจากผู้ที่ให้บริการ Public Cloud บางรายมีบริการเสริม Private เวอร์ชั่นของ Public Cloud ขึ้นมา และผู้ให้บริการ Private Cloud บางรายก็มีบริการ Public เวอร์ชั่น ที่มีความสามารถไม่ต่างกับ Private Clouds ออกมาเช่นกัน

Hybrid Clouds

Hybrid Cloud เป็นรูปแบบที่ผสมความสามารถของ Public Clouds และ Private Clouds ซึ่งการเลือกใช้ Hybrid Cloud นั้นได้นำความสามารถของ Cloud แต่ละแบบมาใช้ให้เกิดประโยชน์สูงสุดกับธุรกิจแยกเป็นแต่ละส่วนได้ แต่ข้อเสียก็คือ ผู้ใช้บริการต้องคอยตรวจเช็คการทำงานของ Security Platform ที่แตกต่างกัน เพื่อให้แต่ละส่วนสามารถทำงานร่วมกันได้อย่างราบรื่น

Hybrid Cloud จะเป็นตัวเลือกที่ดีที่สุดเมื่อ :

  1. ต้องการใช้ Application แบบ SaaS แต่ต้องการเรื่องความปลอดภัย ดังนั้นผู้ให้บริการ SaaS จึงสร้าง Private Cloud ขึ้นมาภายใต้ Firewall ของทางผู้ให้บริการ โดยผู้ใช้งานจะได้รับ VPN (Virtual Private Network) มาเป็นตัวเสริมความปลอดภัย
  2. เป็นธุรกิจที่ให้บริการในระบบตลาดแบบแนวตั้ง (Vertical Market) ซึ่งประกอบด้วยลูกค้าหลากหลายและเป็นอิสระแยกจากกัน จึงใช้ Public Cloud เพื่อติดต่อกับลูกค้า แต่เก็บข้อมูลของลูกค้าแต่ละรายไว้อย่างปลอดภัยภายใน Private Cloud

หมายเหตุ : ระบบการจัดการ Cloud Computing จะมีความซับซ้อนสูงขึ้นมาทันที เมื่อต้องจัดการทั้ง Public CloudPrivate Cloud, และ Data Center ภายในไปพร้อมๆ กัน ดังนั้นในการจัดการ Hybrid Cloud จึงจำเป็นต้องมีการเพิ่มความสามารถสำหรับจัดการและจัดกลุ่มการทำงานร่วมของสภาพแวดล้อมที่ต่างกันพวกนี้

ตัวเลือกของ Cloud Computing ที่มีมาให้เลือกอย่างหลากหลายแบบนี้ เมื่อเปรียบเทียบข้อแตกต่างทั้งหมดของทั้ง 3 แบบข้างต้นแล้ว ต่อไปก็เป็นหน้าที่ของผู้ประกอบการว่าจะใช้ Cloud Computing แบบไหนให้เหมาะกับธุรกิจของตนมากที่สุด เพื่อให้เกิดประโยชน์อันสูงสุดและผลลัพธ์ที่ดีกับองค์กร แล้วคุณล่ะ เลือกแบบไหน?

OpenStack พร้อมนำ Liberty มาสู่ Cloud

ในตอนนี้ Amazon Web Service (AWS) กำลังจะก้าวขึ้นมาเป็นที่หนึ่งของ Public Cloud หากพูดกันจริงๆแล้ว Private Cloud ยังไงๆ ก็ต้องยกนิ้วให้กับ OpenStack ซึ่งเป็น Open Source ที่รองรับการทำงาน Private Cloud สุดเจ๋ง พูดได้เลยว่าหากไม่มี Cloud Technology Platform ไหนได้รับการสนับสนุนและถูกนำมาใช้งานมากเท่ากับ OpenStack ซึ่ง OpenStack นี้มันเกิดจากการร่วมมือของ NASA และ Rackspace ในปี 2010 ก่อนจะเติบโตขึ้นมาในฐานะ Open source โดยมีผู้ให้การสนับสนุนมากมาย ทั้ง HP, IBM, Intel, Cisco, Dell, EMC, VMware, Symantec, Huawei, และ Yahoo เป็นต้น

 

แต่จริงๆแล้วใครบ้างล่ะที่ใช้ OpenStack?

แต่เหล่าผู้สนับสนุนเป็นเพียงแค่ครึ่งเดียวของผู้ใช้ OpenStack เท่านั้น ดูได้จากภายในงาน OpenStack Summit ที่ผ่านมา มีผู้ค้าระดับโลกอย่าง Walmart ได้ออกมาพูดถึงการใช้งาน OpenStack กับระบบการจัดการ Ecommerce ว่ามันสามารถสร้างความสำเร็จมหาศาลได้ นอกจากนี้ OpenStack ยังเป็นเบื้องหลังความสำเร็จของทั้ง eBay, Paypal, Comcast, Time Warner Cable และ Bestbuy ส่วนทาง NASA เองก็เป็นอีกหนึ่งผู้กำลังใช้ OpenStack เป็นรากฐานพัฒนาเทคโ

โลยีพามนุษย์ไปสู่ดาวอังคาร เอาล่ะเรามาทำความเข้าใจกันเสียหน่อยว่าแท้จริง OpenStack ไม่ใช่ Homogeneous Cloud Product หรือผลิตภัณฑ์ Cloud ที่อยู่ภายใต้ผู้ให้บริการรายเดียวแบบเสร็จสรรพ ตั้งแต่ Hypervisor ยัน Management Layer  และ OpenStack ก็ไม่ใช่ผลิตภัณฑ์ Virtualization Hypervisor แต่อย่างใด OpenStack เป็นเพียงแพลตฟอร์มผสานการทำงาน หรือ Integration Platform เท่านั้น โดย OpenStack จะเป็น Framework ที่มาพร้อมกับ API และ Tool สำหรับ Cloud Service พวก Product และ Technology ต่างๆ จะถูก Integrate และ Deploy ภายใน Framework นี้ เพื่อสร้าง OpenStack Cloud ขึ้นมาเท่านั้น

 

รู้จัก OpenStack แบบง่ายๆ ก่อนเริ่มใช้ Cloud

ตอนนี้ OpenStack กำลังเป็นที่นิยมเพิ่มมากขึ้น ในฐานะ Open Source สำหรับ Private Cloud แต่ว่าอะไรทำให้ OpenStack สะดุดตาเกินหน้าเกินตา คู่แข่งขันรายอื่น อย่าง Amazon EC2 กัน เรามาทำความเข้าใจกับ OpenStack อย่างถ่องแท้ของมันกัน

What’s OpenStack?

OpenStack เริ่มต้นมาจากการองค์การบริหารการบินและอวกาศแห่งชาติ (NASA) ร่วมกับ Rackspace บริจาคโค้ด (Code) ของระบบ Cloud ที่ตนเองมีอยู่ให้เป็น Open Source ปัจจุบันได้รับการยอมรับอย่างกว้างขวางจากกว่า 250 องค์กรใน 130 ประเทศทั่วโลก

เว็บไซต์ OpenStack.org ได้ให้ความหมายของคำว่า “OpenStack” ไว้ว่า “OpenStack software controls large pools of compute, storage, and networking resources throughout a datacenter, managed through a dashboard or via the OpenStack API. OpenStack works with popular enterprise and open source technologies making it ideal for heterogeneous infrastructure” (เป็นโปรแกรมควบคุมชุดคำสั่งคอมพิวเตอร์, Computer Networking และพื้นที่เก็บไฟล์ขนาดใหญ่ที่อยู่ภายใน Data Center โดยควบคุมผ่านทาง Dashboard หรือ OpenStack API ได้รับความนิยมในหมู่ผู้ประกอบการและระบบ Open source ด้วยกัน ซึ่งนั่นส่งผลให้ OpenStack เป็นโปรแกรมที่เหมาะกับ Infrastructure ขนาดใหญ่ที่สุดในขณะนี้)

OpenStack ในฐานะแพลตฟอร์มแบบ Open source

ภายหลังจาก NASA และ Rackspace เป็นผู้เริ่มต้นพัฒนา OpenStack เป็น Open source ให้เหล่าโปรแกรมเมอร์นำไปพัฒนาต่อได้ตามต้องการ โดยตรวจสอบ Source code ได้ทาง GitHub ทั้งนี้พวกโปรแกรมเมอร์ผู้พัฒนาระบบ OpenStack เองก็ทำงานให้กับองค์กรใหญ่ที่นำ OpenStack ไปใช้ด้วยเหมือนกัน เช่น Rackspace และ PayPal เป็นต้น

นอกจากนี้ ยังมีโปรเจ็คเกี่ยวกับ OpenStack อีกหลายโครงการ ซึ่งส่วนมากก็เป็นโปรเจ็คเฉพาะด้าน เช่น การติดตั้งแบบ bare-metal ผู้ที่สนใจจะเรียนรู้เกี่ยวกับการใช้งาน OpenStack หรือจะทดลองใช้ ทาง OpenStack ก็มี Development Version ให้ลองเล่นกันได้โดยนำไปติดตั้งบน Ubuntu Linux หรือจะใช้ OpenStack Autopilot wizard ในการสั่ง Deploy ก็ได้ ส่วน Source code ก็ไม่จำเป็น เพราะ OpenStack สามารถหาได้จาก Python package โดยใช้ Tools ชื่อ apt-get ในการติดตั้ง

รู้จัก Ecosystem ของ OpenStack

OpenStack กับ Amazon EC2 อาจดูคล้ายกันมาก เพราะผู้ใช้สามารถ Provision VM จาก dashboard หรือ API ได้เหมือนกัน แต่ข้อแตกต่างหลักๆ นอกจากเรื่องที่ OpenStack เป็นของฟรี ก็คือ Amazon EC2 เป็นบริการ Public Cloud เท่านั้น ส่วน OpenStack ผู้ใช้สามารถเลือกได้ว่าจะใช้เป็นบริการ Private Cloud ของ OpenStack เอง หรือจะสมัครไปใช้ Public Cloud จากตัวแทนผู้ให้บริการของ OpenStack ก็ได้

ต้องทำความเข้าใจกันก่อนว่า OpenStack ไม่ใช่ Hypervisor แต่ถูกสร้างมาเพื่อทำงานร่วมกับ Hypervisor ที่แตกต่างกันหลายๆ เครื่อง User สามารถเลือกได้ว่าจะ Deploy Hypervisor บนตัวเครื่อง (machine) หรือบน OS ที่ built-in มากับ Hypervisor เช่น Linux KVM เป็นต้น นอกจากนี้ OpenStack ยังทำให้ User สามารถนำ VM ไปติดตั้งบน Bare-Metal Server (เซิร์ฟเวอร์สำหรับผู้ใช้คนเดียว) ได้อีกด้วย

Component หลักของ OpenStack

  • Horizon (Dashboard) : เป็น User Interface (UI) แบบ Web-based
  • Nova (Compute) : ประกอบด้วย Controller และ Compute Nodes ที่ดึง VM image มาจาก OpenStack image service และสร้าง VM บนเซิร์ฟเวอร์ที่เราต้องการ โดยมี APIs ที่แตกต่างกันตามแต่ Platforms เช่น XenAPI, VMwareAPI, libvirt for Linux KVM (QEMU), Amazon EC2, และ Microsoft Hyper-V เป็นต้น
  • Neutron (Networking) : สำหรับสร้าง Virtual Network และ Network Interface อีกทั้งยังทำหน้าที่เชื่อมต่อกับ Networking Products จากตัวแทนผู้ให้บริการอื่นๆ
  • Swift (Object storage) : มีหลักการทำงานเหมือน Amazon S3 โดยจะบันทึกข้อมูลแบบเดี่ยว อย่าง Image เก็บไว้โดยใช้ระบบ REST Web service
  • Cinder (Block storage) : คล้ายกับ Swift โดยจะเก็บ disk file ต่างๆ เช่น Log และเปิดให้เราสามารถเพิ่มเติมข้อมูลเข้าไปได้ ในขณะที่ Swift จะให้เก็บแทนที่ของเดิมเท่านั้น
  • Keystone (Identity storage) : เป็นตัวคำสั่งที่เปิดให้ User และ Process สามารถเข้าถึง Tools ต่างๆ ของ OpenStack ได้โดยสร้าง Authentication Token ขึ้นมา
  • Glance (Image service) : เป็นตัวหลักของ OpenStack ในฐานะ Cloud Operating System คือ การสร้าง VM image ขึ้นมา โดย Glance คือแคตตาล็อกรวม VM ที่เราอัพโหลดเอาไว้และเปิดให้ใช้กันภายในองค์กร
  • Trove (Database server) : เป็นตัวสนับสนุนการทำงานของ Database ที่ต่างกัน

นอกจากนี้ Component พวกนี้ของ OpenStack ยังใช้ MySQL database ที่หลากหลาย สามารถทำงานร่วมกับ Python รวมทั้งใช้ Command line interface ของ Python ได้อีกด้วย ตัวอย่างเช่น

คำสั่งดาวน์โหลด Keystone จากเซิร์ฟเวอร์ Linux ที่เก็บข้อมูลเอาไว้แบบ Public

apt-get install keystone python-keystoneclient

คำสั่งสร้าง User บน Keystone

keystone user-create –name Sam –description “Sam”

คำสั่งลิสต์ชื่อ VM images ด้วย Nova

nova image-list

คำสั่งเปิด Python Shell ก็ทำได้ง่ายๆ แค่พิมพ์ Python แล้วตามด้วย

from keystoneclient.v2_0 import client

หรือถ้าใครไม่คล่อง Python CLI (Command Line Interface) จะสลับไปใช้ Dashboard แบบคลิกก็ได้เหมือนกัน

OpenStack พร้อมนำ Liberty มาสู่ Cloud

เมื่อพูดถึง Public Cloud หลายคนคงนึกถึง  Amazon Web Service (AWS) เพราะถือว่าเป็นผู้คลองตลาด Public Cloud แต่ถ้าพูดถึง Private Cloud คงหนีไม่พ้น OpenStack ซึ่งเป็น Open Source ที่รองรับการทำงาน Private Cloud ได้ดีที่สุด

พูดได้เลยว่าไม่มี Cloud Technology Platform ใดๆ ได้รับการสนับสนุนและถูกนำมาใช้งานมากเท่า OpenStack ซึ่ง OpenStack นั้นเกิดจากการร่วมมือของ NASA และ Rackspace ในปี 2010 ก่อนจะเติบโตขึ้นในฐานะ Open Source โดยมีผู้ให้การสนับสนุนมากมาย ทั้ง HP, IBM, Intel, Cisco, Dell, EMC, VMware, Symantec, Huawei, และ Yahoo

ใครใช้ OpenStack บ้าง?

ผู้ให้การสนับสนุนที่กล่าวไปข้างต้นเป็นเพียงแค่ส่วนหนึ่งของจำนวนผู้ใช้งาน OpenStack เท่านั้น เพราะในความเป็นจริง OpenStack ยังเป็นเบื้องหลังความสำเร็จของทั้ง eBay, PayPal, Comcast, Time Warner Cable และ BestBuy ส่วนทาง NASA เองก็เป็นอีกหนึ่งสาวกผู้กำลังใช้ OpenStack เป็นรากฐานพัฒนาเทคโนโลยีพามนุษย์ไปสู่ดาวอังคาร นอกจากนี้ภายในงาน OpenStack Summit ที่ Vancouver ในปี 2015 ที่ผ่านมา ผู้ค้าระดับโลกอย่าง Walmart ยังได้ออกมาพูดถึงการใช้งาน OpenStack กับระบบการจัดการ Ecommerce ว่ามันสามารถสร้างความสำเร็จมหาศาลได้อย่างไร

เมื่อเราพอจะเห็นภาพกว้างๆ แล้วว่า OpenStack ถูกใช้โดยใครและใช้ทำอะไรบ้างแล้ว ก็ต้องมาทำความเข้าใจกันเสียหน่อยว่าแท้จริง OpenStack

ไม่ใช่ผลิตภัณฑ์ Virtualization Hypervisor, Homogeneous Cloud Product หรือผลิตภัณฑ์ Cloud ที่อยู่ภายใต้ผู้ให้บริการรายเดียวแบบเสร็จสรรพ ตั้งแต่ Hypervisor ยัน Management Layer (* อ้างอิงจาก http://www.bmc.com/blogs/what-price-homogeneity/) แต่อย่างใด

OpenStack เป็นเพียงแพลตฟอร์มผสานการทำงาน หรือ Integration Platform เท่านั้น โดย OpenStack จะเป็น Framework ที่มาพร้อมกับ API และ Tool สำหรับ Cloud Service พวก Product และ Technology ต่างๆ จะถูก Integrate และ Deploy ภายใน Framework นี้ เพื่อสร้าง OpenStack Cloud ขึ้นมา

ผู้ให้บริการบิดเบือนความหมายของ Cloud

      ปัจจุบันนี้ความหมายของ Cloud ผุดขึ้นมาราวกับดอกเห็ด สาเหตุหลักเพราะผู้ให้บริการจงใจบิดเบือนความหมายเพื่อจะขายสินค้าของตน ดังนั้นในบทความนี้จะขอยึดเอาคำจำกัดความจาก Amandeep Singh Juneja ผู้เป็น Senior Director ด้าน Cloud Engineering ที่ Walmart Labs ที่ได้กล่าวไว้ว่า Cloud ของ OpenStack นั้น หมายถึง “การนำมาซึ่งความยืนหยุ่นและการทำงานอย่างต่อเนื่องของระบบ Infrastructure” ทั้งนี้ OpenStack เองก็ได้นำเสนอ Framework ที่จะทำให้ ระบบ Infrastructure ทำงานได้อย่างต่อเนื่องและยืดหยุ่นเช่นเดียวกัน

นิยามใหม่ของ OpenStack Cloud

ในจุดเริ่มต้นของ OpenStack เดิมทีมีอยู่เพียงแค่ 2 โปรเจ็กต์คือ Nova Compute Project และ Swift Storage ซึ่ง Nova จะทำให้ Cloud Operator สามารถเลือกการ Deploy ได้จาก Hypervisor และ Virtualization Technology หลายๆ แบบ ไม่ว่าจะ ESX ของ VMware, Open Source อย่าง KVM และ Xen Hypervisor หรือกระทั้ง Hyper-V ของ Microsoft ก็สามารถนำมา Deploy ใน Nova ได้เช่นกัน

แต่พอหลังจากนั้น OpenStack ก็ได้ขยายการพัฒนา โดยการเพิ่มโปรเจ็กต์ใหม่ๆ เข้าไปภายใต้สิ่งที่รู้จักกันในชื่อ OpenStack Integrated Release สำหรับ OpenStack Kilo ที่ปล่อยออกมาเมื่อเดือนเมษายน ปี 2015 มีการผสานรวมหลายๆ โปรเจ็กต์เข้าด้วยกัน ได้แก่ Nova compute, Swift object storage, Cinder block storage, Keystone identity, Horizon dashboard, Glance image, Neutron networking, Trove database, Sahara Big Data, Heat orchestration, Ceilometer monitoring และ Ironic Bare Metal projects

ความท้าทายของ Integrated Release ก็คือ ในการใช้งาน OpenStack Cloud เราไม่ได้ใช้สิ่งที่อยู่ใน Integrated Release ครบทั้งหมด เริ่มด้วย Liberty Release ที่จะทำให้เกิดนิยามใหม่ขึ้นสำหรับ OpenStack แล้วไหนจะ DefCore Project ส่วนสำคัญที่ต้องเข้าไปอยู่ใน Cloud เพื่อให้สามารถเรียกได้ว่าเป็น OpenStack Cloud นอกจากนี้ยังมี Big Tent ซึ่งเต็มไปด้วยสารพัดโปรเจ็กต์ให้ผู้ใช้หรือผู้ให้บริการ Cloud ได้เลือกสรร

ทั้งนี้ Big Tent ได้เปลี่ยนคำนิยามของ OpenStack Cloud ไปเสียหมด ทั้งเรื่องที่ OpenStack Cloud คืออะไร และสามารถทำอะไรได้บ้าง นั่นหมายความว่า Liberty ที่ปล่อยออกมาก็จะสร้างความแตกต่างมหาศาลให้กับ OpenStack เช่นเดียวกัน อย่างไรก็ตาม DefCore ยังคงเป็นส่วนที่ขาดไม่ได้ ทั้ง Keystone Identity service และ API เพราะ Keystone คือตัวเปิดการทำงานของ Federated Identity หรือ การพิสูจน์ตัวตนแบบรวมศูนย์ ใน OpenStack Cloud ด้วยไอเดียที่จะให้ OpenStack Foundation กลายมาเป็น OpenStack Powered Planet คือ ให้เกิดศูนย์กลางการใช้งาน OpenStack ทั่วโลกนั่นเอง

Containers เปลี่ยนทุกอย่างได้อย่างไร

กลุ่ม DevOps เติบโตมาพร้อมกับ Automation Tools ทั้งหลายในช่วงที่ผ่านมา ทำให้การพัฒนา Application สมัยใหม่ไม่ใช่แค่นั่งเขียน Code แต่ Developer ยังต้องคำนึงถึงการเลือกใช้ Tools และวิธีทำงานร่วมกันเพื่อสร้าง Application

Container เป็นหนึ่งใน Tools ชิ้นสำคัญสำหรับ Workflow โดยเทคโนโลยี Container อย่าง Docker ทำให้เราสามารถจับเอาพวก Key Service จาก Infrastructure ออกมาใช้งานได้ นับว่าฉีกแนวความคิดเรื่องการ Deploy Application และการใช้ประโยชน์จาก Cloud Infrestructure ไปอย่างสิ้นเชิง

เมื่อ Infrastructure ใหม่ถูก Deploy และทดสอบเรียบร้อยแล้ว แค่เปลี่ยน DNS ก็ย้ายมาใช้งานได้ทันที วิธีการนี้จะทำให้สามารถเก็บ Virtual Infrastructure ตัวเก่าไว้เป็น Backup ได้ในช่วงแรก ก่อนจะลบมันทิ้งในภายหลัง

การสร้าง Complete Infrastructre ขึ้นมาเลยอาจฟังดูแปลก แต่เมื่อคำนึงถึงความคุ้มค่าของ Cloud Deployment แล้วก็ไม่แพงไปกว่าการ Deploy Update เฉพาะ Server หรือ Service ที่อาจจะทำงานแค่ระยะหนึ่งเท่านั้น นอกจากนี้การ Deploy ทั้งระบบยังอาจทำให้ OS หรือ ซอฟต์แวร์ได้รับการอัพเดทโดยอัตโนมัติอีกด้วย

การไม่ต้องลงทุนกับ Hardware เราสามารถใช้ Cloud Platform ตัวเดียวกันนี้ในขั้นตอน Dev, Test, และ Production ได้เลย เพียงแค่มี Virtual Network แยกแต่ละ Environment กับ Access Control ยิ่งไปกว่านั้น เรายังสามารถทำงานกับ Production Data ในขั้นตอน Development ได้ด้วยการ Clone Store เมื่อต้องการ Clean Data

 

Container แหล่งบรรจุทุกอย่าง

การบรรจุ Application ลงใน Docker Container ทำให้จัดการและดึงเอาองค์ประกอบหลักๆ ของ Application จาก Infrastructure มาได้ง่ายขึ้น ทั้งยัง Scale Service ได้อย่างอิสระ

วิธีการนี้นำมาซึ่งรูปแบบใหม่ของ DevOps คือ Idempotent Container โดยแทนที่จะสร้าง Aplication หรือ Service แบบสำเร็จ ก็เปลี่ยนมาเป็นการสร้าง Container ที่เก็บรวม Application, Service, และทุกสิ่งทุกอย่างที่ต้องใช้ในการรัน Application เข้าไว้ด้วยกัน เมื่อไหร่ก็ตามที่นึกอยากจะเปลี่ยนแปลงส่วนใดส่วนหนึ่ง ก็สร้าง Container ขึ้นมาใหม่ ทดสอบ และ Deploy ในฐานะที่เป็นทั้ง Application ไม่ใช่แค่องค์ประกอบชิ้นหนึ่ง การทำแบบนี้ช่วยลดความเสี่ยงของขั้นตอน Development ได้ ต่างจากวิธีการแบบดั้งเดิมที่จะทดสอบแค่ส่วนที่มีการเปลี่ยนแปลง

เมื่อ Container ถูกสร้างและ Deploy ขึ้นมาแล้ว จะไม่มีการเปลี่ยนแปลงอะไรจนกว่า Container อันใหม่จะถูก Deploy เพราะ Container เองก็เป็น Sandbox อย่างหนึ่ง การจะเข้าถึงและจัดการ Content ภายในจึงต้องทำผ่าน API เท่านั้น ส่วนในกรณีของ End-User ก็ต้องใช้บริการ UI ทำให้ Container เป็นรูปแบบในอุดมคติสำหรับ Microservice ที่ใช้ API เป็นแค่สื่อกลางการใช้งาน และด้วยบทบาทของ API ซึ่งเป็นเหมือนข้อตกลงระหว่างทีม DevOps ดังนั้น Container ที่รันบน Server Instance ขนาดเล็ก เช่น CoreOS หรือ Nano Server ของ Microsoft ก็จะกลายมาเป็น Block หนึ่งของ Infrastructure

 

เป็นไปตามกระแส

ไม่น่าแปลกใจเลยที่ Jenkins กลายเป็น Tool มาตรฐานในขั้นตอนการ Build ได้สร้าง Pipeline Tool ที่รองรับ Docker เพิ่มเข้ามา ลักษณะโครงสร้างที่ปรับแต่งได้ ทำให้สามารถปรับเข้ากับแต่ละ Workflow และทำงานร่วมกับ Source Control Tool รวมทั้ง Development และ Test Platform ได้ง่ายๆ

Kohsuke Kawaguchi ผู้เป็น CTO ของ Cloudbees และ Project Founder ของ Jenkins กล่าวถึงการเพิ่ม Support ของ Docker ว่า “มันช่วยผลักดันความต้องการใช้งาน Jenkins โดยมี Docker ในฐานะ Executable Package Format ให้ Compile และ Package ลงไปใน Binary Blob ที่สามารถนำไปใช้งานได้ทันที และลบทิ้งได้เมื่อไม่ต้องการแล้ว”

เห็นได้ชัดว่า Docker และ Container Format อื่นๆ เข้ากันได้ดีกับวิสัยทัศน์ของ Cloudbee ที่มีต่อ Jenkins “ผู้ใช้สามารถใช้มันสำหรับการ Test หรือ Production ได้ และถ้าล้มเหลว ก็สร้างขึ้นมาใหม่ สามารถ Compile Code ลงใน Module เหมือนกับ Ruby Gem แล้วใส่ลง Container ก่อนจะส่งไปยัง Puppet เพื่ือ Deployment”

ในขณะที่ Docker File Format อยู่ในฐานะภาษาสากลสำหรับโลก Container ทางด้าน Linux Foundation ก็กำลังสนับสนุนการพัฒนา “Open Container Format” ที่มีลักษณะเป็น Common Format ร่วม ดึงเอาเหล่า Container Developer และตัวแทนผู้ให้บริการทั้งหลายมารวมกัน กระทั่งบริษัทอย่าง Microsoft ก็เข้าร่วมด้วย ซึ่ง Common Container Format นี้จะช่วยกระจายการใช้ Container ในกลุ่มผู้ให้บริการ Cloud ทั้ง Public และ Private ให้กว้างขวางยิ่งขึ้น

อย่างไรก็ดี การมี Common Format ของ Container ไม่ได้ช่วยขจัดปัญหาด้านการจัดการ Cloud Infrastructure ที่แตกต่างกันได้ทั้งหมด แต่อย่างน้อยมันก็พอจะช่วยให้การย้าย Service ระหว่าง Cloud สะดวกขึ้น เช่น การย้ายจาก Azure ไปยัง AWS หรือ จาก OpenStack ไปยัง Google Cloud เป็นต้น ส่วน Infrasturcture ที่ถูกจัดการด้วย Puppet หรือ Chef ในระบบคลังของ Git ก็ช่วยให้พัฒนา Translation Layer ที่ใช้ Generic VM และ Network Description สำหรับ Application ได้ และมี Orchestration ที่เหมาะสม ไม่ว่าจะใช้บริการ Cloud แบบไหนอยู่ก็ตาม

Public Cloud อีกก้าวของการจัดการธุรกิจ

บริการ Cloud มี 2 รูปแบบด้วยกัน ได้แก่ คลาวด์สาธารณะ หรือ Public Cloud และ คลาวด์สำหรับองค์กร หรือ Private Cloud ซึ่งชื่อก็บอกเราถึงความแตกต่างกัน ของ Public Cloud กับ Private Cloud

Public Cloud ซึ่งอยู่ภายใน Virtualised Environment โดยมีแหล่งทรัพยากรทางกายภาพร่วมกัน ซึ่งระบบ Public Cloud นี้ สามารถเข้าถึงได้ทางอินเตอร์เน็ต

ด้วยความที่ Public Cloud เป็นระบบที่สามารถเข้าถึงได้โดยสาธารณะ จึงทำให้ข้อดีของ Public Cloud นั้นมีอยู่หลายอย่าง ทั้งยังเหมาะกับผู้ใช้งานรายบุคคลที่ไม่ต้องการระบบ Infrastructure และระบบรักษาความปลอดภัยในระดับสูงเทียบเท่ากับ Private Cloud นอกจากนั้นองค์กรต่างๆ ก็สามารถนำ Public Cloud มาเสริมประสิทธิภาพการทำงานต่างๆ ขององค์กรได้

ซึ่งถ้าจะพูดถึงข้อดีและฟีเจอร์เด่นๆ ของ Public Cloud ก็จะดึงออกมาได้ดังนี้

Scale การทำงานได้ดีมาก โดยเราสามารถดึงทรัพยากรของ Public Cloud มาได้ตามที่ต้องการจากแหล่งทรัพยากรขนาดใหญ่ที่รันอยู่ ทั้งยังตอบสนองต่อการเปลี่ยนแปลงการทำงานได้อย่างต่อเนื่องอีกด้วย

ราคาไม่แพง เนื่องจากระบบ Public Cloud เป็นระบบปฏิบัติการส่วนกลาง และการจัดการทรัพยากรนั้นถูกแชร์ร่วมกันผ่านทาง Cloud อยู่แล้ว จึงทำให้ไม่ต้องปรับเปลี่ยน Server อะไรมากนัก ซึ่งบางครั้งก็มีให้ใช้กันได้แบบฟรีๆ ด้วยซ้ำไป เพื่อแลกกับการโฆษณาและผลประโยชน์อื่นๆ ของผู้ให้บริการ

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

ไม่เคยล้มเหลว Server และ Network จำนวนมากที่อยู่ใน Public Cloud จะมีการเซ็ตระบบไว้ให้พร้อมก่อน ซึ่งต่อให้ระบบทางกายภาพส่วนใดส่วนหนึ่งทำงานล้มเหลว บริการ Cloud นี้ก็ยังสามารถทำงานต่อไปบนระบบที่เหลือได้โดยไม่เกิดผลกระทบใดๆ

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

ใช้ได้ทุกสถานที่ อย่างที่กล่าวไปแล้วว่า Public Cloud เข้าถึงได้จากทุกที่ที่มีอินเตอร์เน็ต ดังนั้นจึงไม่ใช้เรื่องยากเลยที่จะเข้าถึงจากที่ไหนก็ได้ ซึ่งเป็นประโยชน์กับทั้งในยามปกติและยามฉุกเฉินที่จะต้องรีบเข้าถึงข้อมูลในยามจำเป็น ทั้งยังสามารถทำงานร่วมกันบน Online Ducument จากหลายๆ ที่ก็ได้เช่นกัน

เห็นข้อดีของ Public Cloud ว่ามีมากมายขนาดนี้ เชื่อได้เลยว่าในอนาคต Public Cloud เองจะเป็นตัวช่วยสำคัญที่ทำให้ธุรกิจก้าวหน้าขึ้น และเป็นองค์กรที่เลือกใช้เทคโนโลยีให้เกิดประโยชน์สูงสุดได้แน่นอน