Containers เปลี่ยนทุกอย่างได้อย่างไร

กลุ่ม DevOps เติบโตมาพร้อมกับ Automation Tools ทั้งหลายในช่วงที่ผ่านมา ทำให้การพัฒนา Application สมัยใหม่ไม่ใช่แค่นั่งเขียน Code แต่ Developer ยังต้องคำนึงถึงการเลือกใช้ Tools และวิธีทำงานร่วมกันเพื่อสร้าง Application

Container เป็นหนึ่งใน Tools ชิ้นสำคัญสำหรับ Workflow โดยเทคโนโลยี Container อย่าง Docker ทำให้เราสามารถจับเอาพวก Key Service จาก Infrastructure ออกมาใช้งานได้ นับว่าฉีกแนวความคิดเรื่องการ Deploy Application และการใช้ประโยชน์จาก Cloud Infrestructure ไปอย่างสิ้นเชิง

เมื่อ Infrastructure ใหม่ถูก Deploy และทดสอบเรียบร้อยแล้ว แค่เปลี่ยน DNS ก็ย้ายมาใช้งานได้ทันที วิธีการนี้จะทำให้สามารถเก็บ Virtual Infrastructure ตัวเก่าไว้เป็น Backup ได้ในช่วงแรก ก่อนจะลบมันทิ้งในภายหลัง

การสร้าง Complete Infrastructre ขึ้นมาเลยอาจฟังดูแปลก แต่เมื่อคำนึงถึงความคุ้มค่าของ Cloud Deployment แล้วก็ไม่แพงไปกว่าการ Deploy Update เฉพาะ Server หรือ Service ที่อาจจะทำงานแค่ระยะหนึ่งเท่านั้น นอกจากนี้การ Deploy ทั้งระบบยังอาจทำให้ OS หรือ ซอฟต์แวร์ได้รับการอัพเดทโดยอัตโนมัติอีกด้วย

การไม่ต้องลงทุนกับ Hardware เราสามารถใช้ Cloud Platform ตัวเดียวกันนี้ในขั้นตอน Dev, Test, และ Production ได้เลย เพียงแค่มี Virtual Network แยกแต่ละ Environment กับ Access Control ยิ่งไปกว่านั้น เรายังสามารถทำงานกับ Production Data ในขั้นตอน Development ได้ด้วยการ Clone Store เมื่อต้องการ Clean Data

 

Container แหล่งบรรจุทุกอย่าง

การบรรจุ Application ลงใน Docker Container ทำให้จัดการและดึงเอาองค์ประกอบหลักๆ ของ Application จาก Infrastructure มาได้ง่ายขึ้น ทั้งยัง Scale Service ได้อย่างอิสระ

วิธีการนี้นำมาซึ่งรูปแบบใหม่ของ DevOps คือ Idempotent Container โดยแทนที่จะสร้าง Aplication หรือ Service แบบสำเร็จ ก็เปลี่ยนมาเป็นการสร้าง Container ที่เก็บรวม Application, Service, และทุกสิ่งทุกอย่างที่ต้องใช้ในการรัน Application เข้าไว้ด้วยกัน เมื่อไหร่ก็ตามที่นึกอยากจะเปลี่ยนแปลงส่วนใดส่วนหนึ่ง ก็สร้าง Container ขึ้นมาใหม่ ทดสอบ และ Deploy ในฐานะที่เป็นทั้ง Application ไม่ใช่แค่องค์ประกอบชิ้นหนึ่ง การทำแบบนี้ช่วยลดความเสี่ยงของขั้นตอน Development ได้ ต่างจากวิธีการแบบดั้งเดิมที่จะทดสอบแค่ส่วนที่มีการเปลี่ยนแปลง

เมื่อ Container ถูกสร้างและ Deploy ขึ้นมาแล้ว จะไม่มีการเปลี่ยนแปลงอะไรจนกว่า Container อันใหม่จะถูก Deploy เพราะ Container เองก็เป็น Sandbox อย่างหนึ่ง การจะเข้าถึงและจัดการ Content ภายในจึงต้องทำผ่าน API เท่านั้น ส่วนในกรณีของ End-User ก็ต้องใช้บริการ UI ทำให้ Container เป็นรูปแบบในอุดมคติสำหรับ Microservice ที่ใช้ API เป็นแค่สื่อกลางการใช้งาน และด้วยบทบาทของ API ซึ่งเป็นเหมือนข้อตกลงระหว่างทีม DevOps ดังนั้น Container ที่รันบน Server Instance ขนาดเล็ก เช่น CoreOS หรือ Nano Server ของ Microsoft ก็จะกลายมาเป็น Block หนึ่งของ Infrastructure

 

เป็นไปตามกระแส

ไม่น่าแปลกใจเลยที่ Jenkins กลายเป็น Tool มาตรฐานในขั้นตอนการ Build ได้สร้าง Pipeline Tool ที่รองรับ Docker เพิ่มเข้ามา ลักษณะโครงสร้างที่ปรับแต่งได้ ทำให้สามารถปรับเข้ากับแต่ละ Workflow และทำงานร่วมกับ Source Control Tool รวมทั้ง Development และ Test Platform ได้ง่ายๆ

Kohsuke Kawaguchi ผู้เป็น CTO ของ Cloudbees และ Project Founder ของ Jenkins กล่าวถึงการเพิ่ม Support ของ Docker ว่า “มันช่วยผลักดันความต้องการใช้งาน Jenkins โดยมี Docker ในฐานะ Executable Package Format ให้ Compile และ Package ลงไปใน Binary Blob ที่สามารถนำไปใช้งานได้ทันที และลบทิ้งได้เมื่อไม่ต้องการแล้ว”

เห็นได้ชัดว่า Docker และ Container Format อื่นๆ เข้ากันได้ดีกับวิสัยทัศน์ของ Cloudbee ที่มีต่อ Jenkins “ผู้ใช้สามารถใช้มันสำหรับการ Test หรือ Production ได้ และถ้าล้มเหลว ก็สร้างขึ้นมาใหม่ สามารถ Compile Code ลงใน Module เหมือนกับ Ruby Gem แล้วใส่ลง Container ก่อนจะส่งไปยัง Puppet เพื่ือ Deployment”

ในขณะที่ Docker File Format อยู่ในฐานะภาษาสากลสำหรับโลก Container ทางด้าน Linux Foundation ก็กำลังสนับสนุนการพัฒนา “Open Container Format” ที่มีลักษณะเป็น Common Format ร่วม ดึงเอาเหล่า Container Developer และตัวแทนผู้ให้บริการทั้งหลายมารวมกัน กระทั่งบริษัทอย่าง Microsoft ก็เข้าร่วมด้วย ซึ่ง Common Container Format นี้จะช่วยกระจายการใช้ Container ในกลุ่มผู้ให้บริการ Cloud ทั้ง Public และ Private ให้กว้างขวางยิ่งขึ้น

อย่างไรก็ดี การมี Common Format ของ Container ไม่ได้ช่วยขจัดปัญหาด้านการจัดการ Cloud Infrastructure ที่แตกต่างกันได้ทั้งหมด แต่อย่างน้อยมันก็พอจะช่วยให้การย้าย Service ระหว่าง Cloud สะดวกขึ้น เช่น การย้ายจาก Azure ไปยัง AWS หรือ จาก OpenStack ไปยัง Google Cloud เป็นต้น ส่วน Infrasturcture ที่ถูกจัดการด้วย Puppet หรือ Chef ในระบบคลังของ Git ก็ช่วยให้พัฒนา Translation Layer ที่ใช้ Generic VM และ Network Description สำหรับ Application ได้ และมี Orchestration ที่เหมาะสม ไม่ว่าจะใช้บริการ Cloud แบบไหนอยู่ก็ตาม

Public Cloud อีกก้าวของการจัดการธุรกิจ

บริการ Cloud มี 2 รูปแบบด้วยกัน ได้แก่ คลาวด์สาธารณะ หรือ Public Cloud และ คลาวด์สำหรับองค์กร หรือ Private Cloud ซึ่งชื่อก็บอกเราถึงความแตกต่างกัน ของ Public Cloud กับ Private Cloud

Public Cloud ซึ่งอยู่ภายใน Virtualised Environment โดยมีแหล่งทรัพยากรทางกายภาพร่วมกัน ซึ่งระบบ Public Cloud นี้ สามารถเข้าถึงได้ทางอินเตอร์เน็ต

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

ซึ่งถ้าจะพูดถึงข้อดีและฟีเจอร์เด่นๆ ของ Public Cloud ก็จะดึงออกมาได้ดังนี้

Scale การทำงานได้ดีมาก โดยเราสามารถดึงทรัพยากรของ Public Cloud มาได้ตามที่ต้องการจากแหล่งทรัพยากรขนาดใหญ่ที่รันอยู่ ทั้งยังตอบสนองต่อการเปลี่ยนแปลงการทำงานได้อย่างต่อเนื่องอีกด้วย

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

คุ้มราคาค่าบริการ การคิดค่าบริการของ Public Cloud คือการจ่ายเท่าที่ใช้ โดยให้ผู้ใช้บริการเข้าใช้งานได้ตามต้องการ ในเวลาที่ต้องการเช่นกัน หลังจากนั้นจึงจ่ายค่าบริการในส่วนของทรัพยากรที่ใช้ไปนั้นๆ ตามสัดส่วน

ไม่เคยล้มเหลว Server และ Network จำนวนมากที่อยู่ใน Public Cloud จะมีการเซ็ตระบบไว้ให้พร้อมก่อน ซึ่งต่อให้ระบบทางกายภาพส่วนใดส่วนหนึ่งทำงานล้มเหลว บริการ Cloud นี้ก็ยังสามารถทำงานต่อไปบนระบบที่เหลือได้โดยไม่เกิดผลกระทบใดๆ

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

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

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

 

Cloud Computing เทคโนโลยีสมัยใหม่แห่งอนาคต

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

1.Software as a Service (SaaS) เป็นการให้บริการคลาวด์ด้านซอฟต์แวร์หรือแอพพลิเคชั่น ผ่านทางอินเทอร์เน็ต ช่วยทำให้ประหยัดค่าใช้จ่าย ไม่ต้องเสียเงินจ้างทำระบบคอมพิวเตอร์ สามารถใช้ได้ทุกพื้นที่ไม่จำกัด ยกตัวอย่างที่เห็นได้ชัดที่เราใช้เป็นประจำ เช่น Gmail Google Docs หรือ Google app โดยการใช้งานไม่จำเป็นต้องติดตั้งซอฟต์แวร์ลงบนเครื่อง สามารถใช้งานผ่าน Cloud ได้เลย สามารถทำที่ไหนหรือใช้คอมพิวเตอร์เครื่องไหนก็ได้ หรือสามารถแชร์งานกับเพื่อนๆ ได้

2.Platform as a Service (PaaS) การให้บริการด้าน Platform การบริการจะมีการเตรียมข้อมูลเพื่อพัฒนา Software และ Application เอาไว้ให้เรียบร้อย สามารถไปใช้ได้เลย ช่วยลดต้นทุนและประหยัดเวลาที่ใช้ในการพัฒนาซอฟท์แวร์ เช่น Google App Engine, Web Application, Snapchat เป็นต้น

3.Infrastructure as a Service (IaaS) การให้บริการโครงสร้างพื้นฐานด้านไอที ( Infrastructure) และระบบการจัดเก็บข้อมูลขององค์กร (Storage) เพื่อรองรับการใช้งาน Software และ Application เช่น บริการ Cloud storage อย่าง DropBox ซึ่งให้บริการพื้นที่เก็บข้อมูล

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