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

IT รองรับ Cloud อย่างจริงจัง

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

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

ระบบ Cloud เปิดโอกาสให้ IT Operation team สามารถเริ่มต้น IT Project ได้เอง ด้วยบริการ SaaS และ Service เสริมต่างๆ อย่างไรก็ดีการเปลี่ยนแปลงนี้มาพร้อมกับความเสี่ยงด้าน Security และ Workflow แต่แทนที่จะล้มเลิกไปเพราะความเสี่ยงพวกนี้ สิ่งที่องค์กรควรทำมากกว่า คือ ลองเปลี่ยนไปใช้ Cloud Application ใหม่ๆ แยกส่วน Process ของ Application review ออกจากฝ่าย Application justification

ทางด้าน Compliance และ Security Review ก็ควรประกอบด้วย Policy document ซึ่งระบุ Requirement ของ Application ที่จะใช้งาน และ Review Process โดยทีม IT จะต้องหมั่นสำรวจทรัพยากรของ Cloud Application และตัดสินใจว่าต้องการใช้ทรัพยากรอะไรบ้างเพื่อให้สามารถทำงานได้ในระดับมาตรฐาน

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

ทั้งนี้ IT Operation team ก็ควรเช็คค่าใช้จ่ายในใบเสนอราคาว่ามูลค่าของ Data Center สูงกว่าการใช้ Cloud จริงหรือไม่ โดยเฉพาะในส่วนของ PaaS กับ SaaS ที่น่าจับตามองเป็นพิเศษ เพราะช่วยประหยัดค่าบริการไปได้เยอะกว่า IaaS

การตรวจสอบอย่างละเอียดและวางแผนให้รัดกุมมากพอ จะส่งผลดีต่อการจัดสรรทรัพยากรในระยะยาว นอกจากนี้ยังควรมีการเตรียม Technical support รองรับการทำงานอย่างต่อเนื่อง แล้วจึงกำหนดปริมาณทรัพยากร Data Center ให้สอดคล้องกับความพร้อมของ Cloud service ทั้งนี้ต้องไม่ลืมคำนวณค่าใช้จ่ายสำหรับส่วน Security และ Governance อีกด้วย

ปรับแต่ง Application deployment model เพื่อใช้กับ Cloud

เมื่อย้ายมาใช้ Cloud แล้ว ฝ่าย IT ก็ต้องเตรียม Application Deployment Model ให้พร้อมรองรับการทำงานที่ครอบคลุมเพียงพอ ซึ่งการที่แต่ละ Application มี Requirement แตกต่างกัน เพราะใช้ Resource ที่หลากหลาย ทำให้เกิดความยุ่งยากระหว่างการ Deploy พอสมควร จึงน่าจะมีการสร้างนโยบายพื้นฐานเพื่อช่วยให้ฝ่าย IT และ User สามารถรับมือกับจำนวนทรัพยากรที่เพิ่มมากขึ้นได้ง่าย โดยโฟกัสไปที่ส่วนของโครงสร้างองค์กร, DevOps, Application Lifecycle Management (ALM) เป็นหลัก

อย่างไรก็ดีการหันมาใช้งาน Cloud อาจเสี่ยงต่อปัญหาได้ เพราะเมื่อมีการย้ายมาใช้งานระบบใหม่ องค์กรอาจขาด IT support ทำให้ Workflow เกิดความไม่ต่อเนื่อง เพราะฉะนั้นการออกแบบ Cloud plan ให้สนับสนุนกับโครงสร้างองค์กรจึงเป็นเรื่องสำคัญมาก

กลยุทธ์ทาง DevOps ก็สามารถช่วยเรื่อง Scale ของ Resource ที่กล่าวมาข้างต้นได้ โดย DevOps คือการใช้ Automate deployment tools เพื่อสร้างและรักษาเสถียรภาพ Application บน Host platform ซึ่งถ้าไม่ใช้เครื่องมือพวกนี้ก็จะต้องหันไปพึ่ง Manual process ที่มีราคาแพง นอกจากนี้บางเครื่องมือของ DevOps ยังสามารถปรับแต่งให้ขยายขอบเขตการใช้งานไปยัง Cloud platform ได้อีกด้วย

ขั้นตอนสุดท้ายคือเรื่องของ ALM ที่มีเป้าหมายเพื่อพัฒนา Application ด้วยการกำหนด Specific testing และ Deployment rules ผ่านทาง ALM Software แบบพิเศษ หลายๆ องค์กรจะรวม Security และ Governance เข้าไปในขั้นตอนของ ALM ด้วย ซึ่งนับว่าสำคัญมากต่อการวางแผนใช้งาน Cloud

What are Cloud Servers?

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

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

ซึ่งในปัจจุบัน Cloud ได้เริ่มเข้ามามีบทบาทในการใช้งาน Web Hosting มากขึ้น ส่วนหนึ่งอาจเป็นเพราะ Cloud สามารถช่วยประหยัดค่าใช้จ่าย ในด้านการลงทุนซื้อ Server ได้ สามารถเลือกจ่ายเท่าที่ทางองค์กรเลือกใช้ และมีบริการให้เลือกใช้อย่างหลากหลาย ตัวอย่างเช่น Web Site , VM หรือ VPS , Mobile Service , Storage , Etc.