สวัสดีครับท่านผู้อ่านทุกท่านสำหรับบทความตอนนี้ของผมจะเป็นเรื่องราวของ ฟีเจอร์หนึ่งที่น่าสนใจในซึ่งอยู่ในWindows Server 2016 และ
Microsoft Azure นั่นก็คือ “Container” ครับ
ท่านผู้อ่านบางท่านได้ยินแล้วอาจจะไม่รู้สึกแปลกใจอะไร เพราะ Container นั้นไม่ใช่ของใหม่ครับ
เพราะในฝั่งของ Open Source (Unix และ Linux)
ได้มีการพัฒนาและใช้งานกันอย่างแพร่หลายมานานพอสมควรแล้วครับ
แต่สำหรับฝั่งของทางไมโครซอฟท์นี่คือสิ่งที่ถูกเพิ่มเติมเข้ามาใหม่ใน
Windows Server 2016 และใน Microsoft Azure ครับผม
การที่ทางไมโครซอฟท์ได้นำเอา Container เข้ามาใช้งานจะทำให้
การให้บริการเซอร์วิสต่างๆ ของไอทีมีความรวดเร็วและมีความยืดหยุ่นมากขึ้นครับ
เพราะที่ผ่านมาการที่หน่วยงานไอทีจะทำการจัดเตรียมหรือเรียกว่าการ “Provisioning”
เซอร์วิสให้กับผู้ใช้งานหรือหน่วยงานในองค์กรนั้นจะใช้เวลาค่อนข้างนานพอสมควร ถึงแม้ว่า ณ ปัจจุบันจะหน่วยงานทางด้านไอทีได้มีการปรับปรุงและพัฒนาจากเดิมที่ติดตั้งระบบที่ให้บริการเซอร์วิสต่างๆ
บนเครื่อง Physical Server มาเป็นการติดตั้งบน Virtual Machine หรือ VM แทนแล้วก็ตาม
แต่ยังคงใช้เวลาในการเตรียมการ Virtual Machine ต่างๆ
เพื่อติดตั้งแอพพิเคชั่นตามที่ผู้ใช้งานต้องการเช่นเดิม
อีกทั้งยังติดปัญหาทางด้านเทคนิคสำหรับการเตรียมสภาพแวดล้อมต่างๆ เช่น OS, การกำหนดค่าต่างๆ, Components
หรือส่วนประกอบที่แอพพิเคชั่นนั้นต้องการ และอื่นๆ ซึ่งขึ้นอยู่กับความต้องการของผู้ใช้งาน ซึ่งอาจเกิดปัญหาว่าติดตั้งไม่ครบหรือไม่ถูกต้อง เพราะฉะนั้นทุกอย่างจะต้องเตรียมการให้พร้อมทั้งหมดเพื่อให้ Virtual Machine ดังกล่าวพร้อมให้บริการงานหรือเซอร์วิสต่างๆ
ในองค์กรได้
จากปัญหาข้างต้นนี้เองจึงมีการคิดค้นและพัฒนาการ Provisioning ให้มีความยืดหยุ่นและมีประสิทธิภาพมากขึ้น จึงมีการนำเอา Container เข้ามาใช้งานและแก้ไขปัญหาข้างต้นครับ ก่อนอื่นผมต้องบอกท่านผู้อ่านก่อนนะครับว่า
Container จัดว่าเป็น Virtualization เทคโนโลยีแบบหนึ่งครับ ซึ่งต่างจาก
Virtualization ที่เราใช้งานกันในปัจจุบัน, ที่เรามีเครื่อง Physical Server 1 ตัวจากนั้นก็ทำการติดตั้งระบบปฏิบัติการ
เช่น Windows Server 2012 R2 และทำการติดตั้ง Hyper-V Role เข้าไป
จากนั้นเราก็สามารถทำการสร้าง Virtual Machine
ขึ้นเสมือนกับเป็นเครื่องคอมพิวเตอร์จริงๆ เครื่องนึงได้เลย
จากนั้นก็สามารถติดตั้งระบบปฏิบัติการลงไปยัง Virtual Machine
เครื่องดังกล่าว และตามด้วยแอพพิเคชั่นที่ต้องการได้เลยครับ เรายังสามารถสร้าง Virtual Machine
ได้อีกตามความต้องการเลยครับ โดยที่แต่ละ
Virtual Machine จะแยกกันทำงานอย่างเป็นอิสระ เราเรียก Virtualization แบบนี้ว่า
“Server Virtualization” ครับ ดังรูปด้านล่างครับผม
ท่านผู้อ่านจะเห็นว่าจากรูปด้านบนซึ่งแสดงถึงภาพรวมของ Server
Virtualization ซึ่งก็คือ Hyper-V
ที่ท่านผู้อ่านคุ้นเคยและใช้งานกันอยู่นั่นล่ะครับ โดยที่แต่ละ Virtual
Machine จะมี ระบบปฏิบัติการหรือ OS เป็นของตัวเองและมีแอพพิเคชั่นที่ติดตั้งบน
Virtual Machine ดังกล่าว โดยที่แต่ละ
Virtual Machine ต้องการทรัพายากร เช่น Processor, Memory และ Disk
ในการทำงานครับ นั้นหมายความถ้าเรามีซัก 10
Virtual Machines, เราจะต้องมี OS
หรือระบบปฏิบัติการกับแอพพิเคชั่นทั้งหมดตามจำนวน Virtual Machine เช่นกัน และเมื่อถึงคราวที่เราต้องการใช้งานแอพพิเคชั่นตัวนึงใน
Virtual Machine ตัวใดก็ตาม
สิ่งแรกที่จะต้องทำการคือการ Start หรือการ Boot Virtual Machine
เพื่อให้ระบบปฏิบัติการที่อยู่ใน Virtual Machine
นั้นพร้อมให้บริการ และจากนั้นเราถึงจะทำการ Start
หรือเริ่มใช้งานแอพพิเคชั่นนั้นได้อย่างที่เราต้องการครับ
ซึ่งกระบวนตั้งแต่เราทำการ Start และ Boot ระบบปฏิบัติการที่อยู่ใน Virtual Machine
นั้นบางครั้งใช้เวลานานพอสมควร
และเราจะต้องรอมัน
ไม่อย่างนั้นเราก็จะไม่สามารถใช้งานแอพพิเคชั่นที่ต้องการได้เลยครับ ที่นี้เรามาดูอีกรูปนึงด้านล่างซึ่งเป็นการนำเอา
Container เข้ามาใช้งานครับ
อย่างที่ผมเกริ่นไว้ตอนต้นว่า
Container นั้นเป็น Virtualization อีกแบบนึงที่เรียกว่า “OS
Virtualization” ซึ่งมีความแตกต่างออกไปจาก Server Virtualization (Hyper-V)
ครับ โดยที่แต่ละ Container
ที่เห็นในรูปนั้นจะมีเพียงแค่แอพพิเคชั่นเท่านั้นครับ
และแต่ละ Container จะแชร์ OS ของเครื่องที่ Containers เหล่านั้นทำงานอยู่ครับ และด้วยการทำงานของ
Container แบบนี้ทำให้การใช้งานทรัพยากรต่างๆ น้อยลงกว่าเดิมครับ
นั่นหมายความว่า Container นั้นมีขนาดเล็กกว่า Virtual Machine
ถ้ามองในแง่ของการใช้ทรัพยากรครับ นอกจากนี้แล้วต้องบอกเครื่องที่จะให้ Containers
มารันและทำงานได้นั้นจะเป็น Physical หรือ Virtual Machine ที่อยู่ใน
Private Cloud หรือ Public Cloud ก็ได้ครับแล้วแต่ความต้องการครับผม
กลับมามองในส่วนของแอพพิเคชั่นที่อยู่ใน Container นั้นสามารถทำงานหรือใช้งานได้ทันที
โดยที่ไม่ต้องรอ Virtual Machine ทำการ Boot ให้เสร็จก่อนเหมือนกับ
Server Virtualization ที่เป็นเช่นนี้ก็เพราะว่า Container
แชร์การใช้งาน OS (Kernel + Libraries) จากเครื่องที่ Container
นั้นทำงานอยู่ครับ
หมายความว่าเมื่อไรก็ตามที่เราต้องการรันแอพพิเคชั่นที่ติดตั้งใน
Container, แอพพิเคชั่นนั้นๆ
จะสามารถทำงานได้ทันทีครับ และแต่ละแอพพิเคชั่นที่รันและทำงานอยู่ในแต่ละ
Container จะทำงานแยกจากกันโดยที่ไม่มีผลกระทบใดๆ กับแอพพิเคชั่นที่รันใน
Container อื่นๆ ครับผม ดังนั้นคอนเซปของ
Container นั้นจึงเหมาะกับการทำงานในองค์กรในด้านต่างๆ ไม่ว่าจะเป็น Developing และ Testing แอพพิเคชั่น
ก่อนที่จะรันมันใน Production, ใช้เป็น Cloud-Based แอพพิเคชั่นและเซอร์วิส
หรือจะสำหรับการ Provisioning เซอร์วิสต่างๆ
ขึ้นมาเพื่อตอบสนองความต้องการของธุรกิจได้อย่างรวดเร็วและมีความยืดหยุ่นมากขึ้นครับ
เอาล่ะครับหลังจากรู้จัก Container
กันไปพอสมควรแล้ว
คราวนี้ผมจะพาท่านผู้อ่านมาทำความรู้จักกับ Container ที่มาใน
Windows Server 2016 กันก่อนนะครับว่ามีคอนเซปและรายละเอียดเป็นอย่างไรบ้าง
ใน Windows Server 2016 จะมี Container อยู่ 2
แบบ:
1. Windows Container
2. Hyper-V Container
เรามาเริ่มที่แบบแรกคือ Windows Container กันก่อนนะครับ โดยตัวของ Windows Container เองจะทำงานและมีคอนเซปเหมือนกับ Open Source Containers (Unix หรือ Linux) ครับ โดยที่แต่ละ Container ก็จะมีแอพพิเคชั่นซึ่งรันอยู่ใน Container
นั้นๆ โดยจะทำงานใน User-Mode ซึ่งแต่ละ Container จะทำงานแยกจากกันและยังแชร์
OS และอื่นๆ จากเครื่องที่ Containers เหล่านี้ทำงานอยู่ครับ คอนเซปและรายละเอียดนั้นผมได้ทำการอธิบายไว้ก่อนหน้านี้แล้วครับผม
แต่ Windows
Container มีเรื่องที่ต้องระวังคือ เรื่องของความปลอดภัยครับ
เพราะถ้าหากมีใครก็ตามที่ใช้แชร์ OS (Kernel + Libraries) แล้วพยายามเข้าถึง Container อื่นๆ ซึ่งจะทำให้เกิดปัญหาได้ครับ รวมถึงเรื่องของการอัพเดท Patches ต่างๆ ด้วยก็อาจมีผลกระทบกับ Container แบบนี้ด้วยเช่นกันครับ
ดังนั้นเพื่อแก้ไขปัญหาข้างต้นทางไมโครซอฟท์ได้สร้าง Container
แบบที่สองที่เรียกว่า Hyper-V Container ขึ้นมาครับ โดย Hyper-V Container จะทำการสร้าง
Hyper-V Virtual Machine (ไม่เหมือน Virtual Machine ที่ถูกสร้างขึ้นมาจาก Hyper-V ใน
Windows Server 2012 R2 นะครับ) ขึ้นมาโดย จะมี OS และ Libraries รวมถึงมีทั้ง
Isolated Kernel และ User Modes มาด้วย ซึ่งแตกต่างจาก Windows Server
Container ที่ผมได้อธิบายไปก่อนหน้านี้ครับ
นั่นหมายความว่า Hyper-V Container ใช้ Windows
Containers ให้รันและทำงานอยู่ภายใน Hyper-V Virtual Machine ของตัว
Hyper-V Container ครับผม และยิ่งไปกว่านั้น Hyper-V Container บู๊ทเร็วกว่า
Virtual Machine ที่ถูกสร้างจาก Hyper-V ปรกติ อีกทั้งมันได้เตรียม Isolated
Kernel และ User Modes มาให้
เพื่อความปลอดภัยในการทำงานและการบริหารและจัดการครับ และทั้งหมดนี้คือเรื่องราวส่วนหนึ่งของ Container ซึ่งจะเป็นฟีเจอร์หนึ่งที่จะมาพร้อมกับ
Windows Server 2016 และใน Microsoft Azureครับผม เอาไว้โอกาสหน้าผมจะนำเอาเรื่องราวของ
Container และ มานำเสนอให้ท่านผู้อ่านได้รับทราบและรู้จัก Container มากขึ้นไปอีกครับผม…..
หมายความว่า Hyper-V Container จะมี
ตอบลบIsolated OS, Kernal และ Libraries แยกจากกันเลย ไม่มีการแชร์กันใช้ในแต่ละ container เลยใช่หรือไม่คะ?
ครับ
ลบมีคำถามครับ
ตอบลบ1.หมายถึงว่าเราก็สร้าง container ขึ้นมาได้เลยโดยไม่ต้องสร้าง Virtual machine แล้ว
2.แบบนี้ถ้าเราทำ container ที่จะต้อง run บน plateform linux ก็ได้หรือเปล่าครับ หรือได้เฉพาะบน windows
3.License ของ Windows ต้องซื้อรุ่นไหนครับถึงมีคุณสมบัตินี้
ขอบคุณครับ