VM based / Virtual Machine based คืออะไร? VM based / Virtual Machine based คือการที่เราเอา Software มาติดตั้งบนแม่โครงข่ายหรือที่เราเรียกว่า Server โดยเราจะอ้างอิง Specifications ต่างๆไม่ว่าจะเป็น CPU, Disk, Memory เป็นต้น โดยหลักๆแล้วอะครับนักพัฒนาบางท่านจะมีการผสมผสานระหว่าง OS และ Hypervisor เข้าด้วยกัน ซึ่งจะแบ่งออกเป็นสองกลุ่มดังนี้ Type-1 Hypervisor กลุ่มนี้จะเป็นพวก VMWare ESXI หรือ Microsoft Hypervisor. Type-2 Hypervisor จะเป็นในกลุ่มพวก VMware Workstation, Virtual box. ส่วนประกอบทั้งหมดของ Virtual machine มีอะไรบ้าง? โดยส่วนประกอบทั้งหมดของ Virtual machine อะครับจะประกอบไปด้วย Infrastructure – ตัวเครื่อง Server Guest OS – เป็นระบบปฏิบัติการที่จะทำให้เราใช้งานบน Server ของเราได้นะครับเช่น Linux / Windows เป็นต้น Hypervisor – Software ที่ติดตั้งบน Guest OS โดยพอติดตั้งสำเร็จเราสามารถที่จะสร้างหรือควบคุมการจัดการของ Virtual machine ได้ครับ Binary/Library – เปรียบเสมือน Library ที่เอาไว้เก็บไฟล์ต่างๆเพื่อใช้ในการ Run แอพพลิเคชั่น Applications – Software ที่ทำให้ End users ใช้งานแอพพลิเตชั่นต่างๆได้ไม่ว่าจะเป็น Browsers, Home offices. สวัสดีครับเพื่อน ๆ ชาว IT ในช่วง 4-5 ปี มานี้ หลาย ๆ คนคงจะเคยได้ยินชื่อของ Containers กันมาบ้างพอสมควร แต่อาจจะยังไม่เคยได้สัมผัสหรือทดลองใช้งานมาก่อน เดี๋ยววันนี้เราจะมาดูนิยาม, ความสามารถ และข้อดีที่เมื่อเทียบกับ Virtual Machine กัน แล้วอาจจะทำให้คุณเปลี่ยนใจมาใช้ Containers แทนได้เลยทีเดียว มาเข้าสู่เนื้อหากันได้เลยครับ! ขอเกริ่นนำกันก่อนในเรื่องของเทคโนโลยี Virtualization ซึ่งเป็นสิ่งที่เข้ามาแทนที่ระบบ Server แบบเดิม ๆ ที่เป็น Bare-metal หรือ Physical Server เนื่องจากผู้คิดค้นระบบต้องการให้สามารถใช้ Resource ของ Server ให้มีประสิทธิภาพสูงสุด จากที่แต่ก่อนจะต้องติดตั้ง App หรือ Database แยก Server กัน จึงทำให้เกิดการทำ Virtual Machines ขึ้นมานั่นเองครับ Infrastructure ที่ต้องเตรียมก่อนที่จะสร้าง Virtual Machine จะประกอบไปด้วย
* บางผู้พัฒนาจะพัฒนา Software ของตัวเองให้รวมเอาทั้ง Host OS และ Hypervisor เข้าด้วยกันเลย เรานิยาม Software แบบนี้ว่า Type -1 Hypervisor ที่นิยมใช้กันในไทยก็มี VMware ESXi, Microsoft Hyper-V , Nutanix AHV และ KVM เป็นต้น ส่วน Type-2 Hypervisor ก็จะต้องติดตั้งตามโครงสร้างที่ได้กล่าวไปเบื้องต้นครับ ชื่อที่คุ้นเคยกัน ได้แก่ VirtualBox และ VMware Workstation
ด้วยการที่เราสามารถสร้าง VM หลาย ๆ ตัวเพื่อ Run บน Physical Server เครื่องเดียวกันได้ ทำให้เราได้ประโยชน์ในกรณีที่เราอยากติดตั้ง Operating System ที่แตกต่างกัน เช่น อยากได้ Windows Server ไว้ทำ Active Directory และอยากได้ Linux ไว้ติดตั้ง PostgreSQL เป็นต้น โดยที่แต่ละ VM ก็จะมี OS และ Bins/Libs เป็นของตัวเอง อีกทั้งยังมีประโยชน์ในการทำ Disaster Recovery เนื่องจาก DR Site ไม่จำเป็นต้องมี Hardware เหมือนกันต้นทางก็ได้ ถ้าเป็น VM นิยามของ Containers เปรียบเสมือนตู้ Container ที่อยู่บนเรือที่สามารถยกเข้า/ยกออกได้ สำหรับ Infrastructure ที่ต้องเตรียมสำหรับรองรับ Container จะประกอบไปด้วย
สังเกตได้ว่า Containers จะติดตั้งอยู่ Host OS ที่อยู่เหนือ Infrastructure โดยแต่ละ Containers จะใช้ OS ร่วมกัน ทำให้มีขนาดไม่ใหญ่มากเมื่อเทียบกับ VM ทำให้ประหยัด Resource รวมไปถึงการที่มี OS เดียวทำให้ดูแลเรื่องปัญหาการแก้ Bug, การ Patch และอื่น ๆ ทำงานได้ง่าย ซึ่ง Concept ก็คล้าย ๆ กับของ Hypervisor แต่ดูแลน้อยกว่าและเสียหายได้ยากกว่าเนื่องจากไม่ต้องใช้ OS แยกในการ Run Application จากที่ได้นิยามความหมายไป Containers เหมาะกับการสร้างเพื่อรองรับและทดสอบ Application ที่สามารถใช้งานได้จากหลายช่องทาง ไม่ว่าจะเป็น Laptop, On-Premise Server หรือแม้กระทั่งบน Cloud ประโยชน์ของ Containers มีอะไรบ้าง?
Used Case ของ Container Server มีอะไรบ้าง? องค์กรส่วนใหญ่ที่ใช้ Container จะนิยมใช้งานเพื่ออะไร?
ความแตกต่างของ VM และ Container Server มีอะไรบ้าง? จากนิยามที่ผมได้แนะนำไปในช่วงต้นของ Blog สิ่งที่แตกต่างจะสรุปออกมาได้ตามตารางนี้ครับ แล้วเลือกใช้อะไรถึงจะเหมาะกับเรา? จริง ๆ ก็อยู่ที่คุณจะเลือกใช้ ถ้าต้องการแค่ Instance ตัวเล็ก ๆ ที่ย้ายง่าย ๆ หรือแค่จะสร้างไว้เพื่อ Test แนะนำให้ใช้ Containers เพราะสามารถย้ายไปที่ Physical Server, Private Cloud, Public Cloud หรือ Hybrid Cloud ก็ได้ Containers คือ Server ในอุดมคติที่เหมาะกับการใช้เอาไว้สำหรับรองรับการ Deploy app ที่เป็น Cloud-native app ที่มี Service ขนาดเล็ก ๆ หลาย ๆ ตัวทำงานร่วมกัน (Microservices) มีเงื่อนไขแค่อย่างเดียวคือ ต้องหา OS ที่ Support ในการติดตั้ง Containers ฉะนั้นใช้ทำอะไรดี?
สำหรับ Virtual Machines จะต้องใช้การดูแลมากกว่า ยืดหยุ่นน้อยกว่า Containers เนื่องจากจะต้องมีการติดตั้ง Operating System, Libraries ให้เหมาะกับ Application ที่จะใช้งาน ถ้าเทียบกับ Containers แล้ว VM จะเหมาะกับ
แถมให้เพิ่มเติมอีกเรื่องนึงคือ การที่เรามี Instance อยู่เพียงแค่ไม่กี่ตัวการจัดการจะค่อนข้างทำได้ไม่ยากลำบากนัก แต่ถ้าเริ่มมีการใช้งานจำนวน Instance ที่มากขึ้น การจัดหมวดหมู่ของ Instance ก็ค่อนข้างสำคัญ เนื่องจากจะช่วยให้ Admin ทำงานได้ง่ายขึ้น ของ Containers ก็มี Tool ที่นิยมนำมาใช้งานกัน ได้แก่ Docker Swarm, และ Kubernetes (k8s) เป็นต้น สำหรับฝั่ง Hypervisor ของ Brand VMware ก็มี vCenter ที่ช่วยทำ Cluster ให้กับ ESXi ของ Hyper-V ก็ใช้ Hyper-V Manager แต่อาจจะทำ Cluster ด้วย Windows Clustering ซึ่งอาจจะยุ่งยากเล็กน้อย แต่ก็ช่วยลดความยุ่งยากในการจัดการ VM ลงไปได้เยอะ เป็นอย่างไรบ้างครับ สำหรับ Blog นี้ก็จะเป็นการนิยาม Containers และเมื่อเปรียบเทียบกับ VM แล้ว อาจจะได้ทำให้ท่านได้ไอเดียนำไปปรับใช้กันได้นะครับ หวังว่าจะเป็นประโยชน์สำหรับทุก ๆ ท่านนะครับ หากมีข้อมูลที่ผิดพลาดหรือตกหล่นประการใด ต้องขออภัยไว้ ณ ที่นี้ด้วย ท่านสามารถแนะนำหรือ Comment ได้ที่โพสด้านล่างนะครับ |