รู้จัก 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 ทั่วโลกนั่นเอง

 

5 ขั้นตอนง่ายๆ กับการส่ง Application เข้า Container

ทุกวันนี้ Container กำลังมาแรง และได้รับการตอบรับดีขึ้นเรื่อยๆ ในตลาดของ Cloud ซึ่งประกอบด้วย Docker เป็นตัวนำ ก็ถือได้ว่ามีคนใช้งานเป็นจำนวนไม่น้อย เป็นอันดับต้นๆเลยก็ว่าได้ ซึ่งเราก็มีขั้นตอนในการติดตั้ง Application ลง Container 5 ขั้นตอนมาฝาก

สำหรับผู้ที่จะทดลองใช้ Docker เพื่อให้รู้แนวทางการใช้งานคร่าวๆ ดังนี้

  1. แยกส่วน (Decompose)

โดยปกติ Application มักจะมีองค์ประกอบอยู่หลายส่วน โดยส่วนใหญ่ต้องพึ่งพาระบบ Database และ Middleware Service สำหรับ Data Storage, Retrieval และ Integration เพราะฉะนั้นต้องแตก Service เหล่านี้ออกมาใส่ไว้ใน Container แยกเอาไว้เป็นส่วนๆ ด้วยการ Design และ Deployment ซึ่งมีการกระจายตัวมากเท่าไหร่ ก็ยิ่งเพิ่มความสามารถในการ Scale ได้มากขึ้นเท่านั้น ซึ่งนั่นหมายถึงความซับซ้อนในการบริหารจัดการก็จะมากขึ้นเช่นกัน

  1. เลือก Base Image

เราไม่ควรสร้างอะไรขึ้นมาในขณะที่ย้าย (Migrate) Application ควรจะหา Basic Docker Image จาก Docker Registry มาใช้เป็นพื้นฐานของ Application แทน โดยเมื่อเวลาผ่านไป หลายๆ องค์กรจะเริ่มเห็นค่าของ Docker Registry base Image ที่เพิ่มมากขึ้นเอง

  1. จัดการ Security และ Governance ให้เรียบร้อย

ความสำคัญของระบบ Security และ Governance ควรจะมาเป็นอันดับหนึ่ง ดังนั้นเราจึงไม่ควรที่จะละเลย และใส่เพิ่มลงใน Container ภายหลัง ซึ่งองค์กรจะต้องวางแผนระบบ Security และ Governance มาตั้งแต่แรก โดยออกแบบมันเข้าไปใน Application และจัดการให้เรียบร้อยในระหว่างอยู่ในขั้นตอน Operation เพื่อเป็นการรักษาความปลอดภัยให้มีประสิทธิภาพมากที่สุด

  1. เพิ่ม Code

ในการสร้าง Image องค์กรต้องมีการใช้ Dockerfile ซึ่งนับว่าเป็นขั้นตอนจำเป็นของงานนี้ และเมื่อสร้างเสร็จแล้ว จึงสามารถเพิ่มเข้าไป Docker Hub ได้

  1. Configure, Test, Deploy

จะต้องมีการตั้งค่า (Configure) ตัว Application ที่รันอยู่ภายใน Container เพื่อให้เชื่อมต่อกับ Resource ภายนอก และ Container ตัวอื่นภายใน Application Cluster นั้นได้ โดยสามารถติดตั้งการตั้งค่าเหล่านี้ลงไปใน Container เลย หรือจะใช้ Environment Variable ก็ได้

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

Cloud bursting คืออะไร?

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

ซึ่งเราลองมาทำความรู้จักกับเทคโนโลยี Public Cloud ว่ามีความหมายว่าอย่างไร และสามารถนำมาช่วยให้องค์กรดีขึ้นได้อย่างไร Public Cloud เป็นกระบวนการถ่ายเท Workload ไปมาระหว่าง Private Cloud และ Public Cloud เป็นการตอบสนองต่อการใช้งาน Workload  ซึ่งเป็นการแก้ปัญหาให้ระบบงานช่วยจัดการตัวระบบให้ไม่หนักจนเกินไป ตัวอย่าง ในเว็บไซต์มี Traffic จำนวนมากเกินไป ทำให้ตัวระบบมีข้อมูลที่หนักเกินไป จำเป็นต้องสร้าง Instance เพิ่มขึ้น เพื่อแก้ไขปัญหา เราสามารถแก้ปัญหาด้วยการนำสถาปัตยกรรมแบบ Cloud Bursting มาใช้ให้ Workload เพื่อให้การทำงานเป็นไปได้อย่างราบรื่นและไม่หนักจนเกินไป

เมื่อทำความเข้าใจ Cloud Bursting ไปแล้ว อีสิ่งที่ต้องทำความเข้าใจก็คือ สถาปัตยกรรม Cloud Bursting คือ Private Cloud และ Public Cloud คือสิ่งใหม่ที่ต้องเรียนรู้ซึ่งสร้างความท้ามายไม่น้อย การใช้งานแบบนี้เราต้องคำนึงถึงสิ่งที่ตามมาด้วย นั่นก็คือผลกระทบจากการที่ Cloud ต้องประสบกับปัญหา Network Latency นอกจากนี้เราต้องคำนึงถึงค่าใช้จ่ายอีกด้วย จะเห็นได้ว่าในปัจจุบันมีการนำ Cloud Bursting มาใช้อย่างแพร่หลาย ทำให้องค์กรสามารถพัฒนาได้อย่างมีประสิทธิภาพ ซึ่งการใช้งานนี้ก็ต้องศึกษาข้อมูลให้ละเอียดและเช็คความพร้อมของระบบให้ดี เพื่อป้องกันตัวเองและใช้ระบบได้อย่างมีประสิทธิภาพที่สุด

 

ทำความรู้จักกับกระบวนการทำงานของ ระบบ Cloud

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

มันคือเทคโนโลยีตัวหนึ่ง ขอยกตัวอย่างการทำงานของ Cloud (คลาวด์) ที่ใกล้ตัวก็คือ คุณใช้ iPhone แต่เมื่อคุณใช้ iPad ทุกอย่างบน iPhone คุณไปอยู่บน iPad Auto หรือแม้การเปลี่ยนโทรศัพท์เพียง Login iCloud ทุกอย่างก็กลับมาหมด อย่างนี้เป็นเรื่องใกล้ตัวของมนุษย์มากขึ้น

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

ส่วนตัวใช้ในแต่ละแผนกขององค์กรเข้ามาใช้งานได้ ในต่างประเทศนิยมใช้  Cloud (คลาวด์) เป็น Server มาก เพราะเวลาเราไม่ได้ไปทำงานในออฟฟิศ ก็สามารถซิงค์ข้อมูลกับอุปกรณ์และสามารถทำงานที่บ้านได้

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

เรียกได้ว่าเราสามารถแก้ปัญหาเองได้อย่างง่ายดาย  เห็นไหมละค่ะว่า Cloud (คลาวด์) คือเรื่องใกล้ตัวและมีอิทธิพลอย่างมากในการใช้ชีวิตในการทำงานของเรา

training.nipa.cloud เปิดคอร์ส เปิดหลักสูตร ฝึกอบรม Cloud OpenStack หลักสูตรและวิทยากรได้รับการรับรองจาก Mirantis หลักสูตรอบรมเป็นภาษาไทย งานสัมมนาด้านเทคโนโลยี Cloud