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 ก็ยังได้ ซึ่งเทคโนโลยีไม่ว่าจะเป็นอะไรก็ตาม จะไม่เกิดขึ้นมาเพื่อลบล้างการใช้งานของเทคโนโลยีเดิม แต่พวกมันจะทำงานร่วมกันเพื่อนำมาซึ่งประสิทธิภาพสูงสุดต่างหาก

Cloud Computing

Cloud Computing แบ่งเป็น 3 ประเภทด้วยกัน คือ Private CloudPublic Cloud, และ Hybrid Cloud ซึ่งความแตกต่างอยู่ที่ ระดับความปลอดภัย แต่ทั้งนี้ทั้งนั้นก็เพื่อที่จะนำไปใช้ร่วมกับ Cloud

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

Public Clouds

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

– Workload มาตรฐานสำหรับ Application ถูกใช้โดยผู้คนจำนวนมาก เช่น E-mail

– ต้องการทดสอบและพัฒนา Application Code

– มี SaaS (Software as a Service) จากผู้ให้บริการที่เตรียมระบบรักษาความปลอดภัยและแผนการรับมือมาเป็นอย่างดีแล้ว

– ต้องการความสามารถเพื่อรองรับ Workload ที่เพิ่มขึ้นอย่างหนักหน่วงในช่วง Peak Time

– มีโครงการ หรืองานที่ต้องทำร่วมกับผู้อื่น

– ต้องการทำ ad-hoc software development project โดยใช้ PaaS ผ่านทางระบบ Cloud

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

Private Cloud

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

– มีการทำงานเกี่ยวกับ Data และ Application สำคัญในระดับที่สามารถชี้ความเป็นความตายของบริษัทหรือองค์กรได้ เงื่อนไขความปลอดภัยและการควบคุมการเข้าถึงจึงต้องมาเป็นอันดับหนึ่ง

– มีการทำธุรกิจในสายงานที่ต้องใส่ใจเรื่องความปลอดภัยและความเป็นส่วนตัวของข้อมูลเป็นพิเศษ

– บริษัทหรือองค์กรมีขนาดใหญ่มากพอที่จะรัน Cloud Data Center อย่างมีประสิทธิภาพได้ด้วยตัวเอง

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

Hybrid Cloud

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

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

– เป็นธุรกิจที่ให้บริการในระบบตลาดแบบแนวตั้ง (Vertical Market) ซึ่งประกอบด้วยลูกค้าหลากหลายและเป็นอิสระแยกจากกัน จึงใช้ Public Cloud เพื่อติดต่อกับลูกค้า แต่เก็บข้อมูลของลูกค้าแต่ละรายไว้อย่างปลอดภัยภายใน

Private Cloud

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