วันนี้เราจะมาพูดถึงในส่วนของความแตกต่างระหว่าง Virtual machine based กับ Container based
อย่างแรกเรามาทำความรู้จักกับ technologies พวกนี้ก่อนนะครับ
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.
ข้อดีของ VM คืออะไร?
- เราสามารถลง OS ต่างๆบน Server ของเราได้ไม่ว่าจะเป็น Linux, Windows Server, UNIX เพราะว่าแต่ละ VM ที่เราลงเราจะมีการแยก Library/bin เอาไว้
- ลดจำนวนการใช้งานของ Server สำหรับการใช้งานประมวนผล
Container คืออะไร?
Container จะเปรียบเสมือนได้กับตู้ Container ที่มีคุณสบมัติหลักๆเลยก้คือง่ายต่อโยกย้ายและช่วยประหยัด Resource ครับ
ส่วนประกอบทั้งหมดของ Container มีอะไรบ้าง?
โดยส่วนประกอบหลักๆของ Container ก้จะมีดังนี้
Infrastructure – ตัวเครื่อง Server
Guest OS – เป็นระบบปฏิบัติการที่จะทำให้เราใช้งานบน Server ของเราได้นะครับเช่น Linux / Windows เป็นต้น
Container Engine – software ที่ใช้สั่งงานผ่าน Command Line
Binary/Library – เปรียบเสมือน Library ที่เอาไว้เก็บไฟล์ต่างๆเพื่อใช้ในการ Run แอพพลิเคชั่น
Applications – Software ที่ทำให้ End users ใช้งานแอพพลิเตชั่นต่างๆได้ไม่ว่าจะเป็น Browsers, Home offices.
ข้อดี ของ Container คืออะไร?
- กิน Resource ที่น้อยกว่า VM ทั่วไป
- ง่ายต่อการจัดการเพราะว่าทุกๆ containers จะมีการแชร์ OS เดียวกันทั้งหมด
- ใช้เวลาในการสร้างที่น้อยนิด
Use cases สำหรับการใช้ Containers
- Support CI/CD (both Continuous Integration and Continuous Development) ง่ายสำหรับกลุ่ม DevOps ในการ deploy container image
- Support Microservices ในกรณีที่เรามี Application หลายๆตัว Container จะเหมาะมากครับเพราะว่าเราสามารถ Run ใน Environment เดี่ยวกันได้โดยจะไม่มีการกระทบของกันและกันครับ
- Easy to Deploy, Easy to Manage โดยเราสามารถบริหารหรือจัดการ Container ผ่านหน้า Web portal ของเราได้.
Comparison VM and Container เปรียบเทียบระหว่าง Virtual Machine(VM) และ Container
Container | Virtual Machine | |
Management | Container Engine | Hypervisor |
Deployment | Share the same host OS | Each VM run its own OS |
Boot time | Boot up in milliseconds | Boot up in minutes |
Resource Consumption | Requires less memory space
As it is lightweight. |
Requires more memory a space as it is heavyweight |
Tools | Docker, K8s | VMware Esxi, Hyper-V Manager |
VM และ Container เหมาะกับธุรกิจแบบไหน?
หลายคนมักจะถามว่าเราจะใช้ VM หรือ Container ดี แล้วมันเหมาะกับองค์กรของเราไหม
VM นะครับ
- จะเหมาะกับพวกองค์กรที่ใช้ Legacy application หรือว่า traditional workload ครับ
- เหมาะสำหรับการทำ Backup + Transfer ข้อมูล
Container นะครับ
- เหมาะสำหรับการทำ Microservices
- การทำ Cloud-native application
- DevOps สามารถนำ CI/CD process มาใช้เพื่อให้เกิดความง่ายต่อการ Deploy application ได้
- สร้าง Environment หรือ โปรเจ็คใหม่ๆขึ้นได้ โดยจะไม่มีผลกระทบกันและกัน
สนใจบริการ Virtual Machine หรือ Container ก็สามารถติดต่อทาง PROEN Cloud ได้เลยนะครับ ^^