ในปัจจุบันคนส่วนมากยอมรับว่าแอปพลิเคชั่นเป็นศูนย์กลางของธุรกิจทุกรูปแบบเช่น CBD (Central Business District)  เกิดการแข่งขันภายในตลาดเพื่อพัฒนาแอผพลิเคชั่นให้รองรับการอัพเดทตามความต้องการของลูกค้า นอกจากทีมนักพัฒนาที่ต้องพัฒนาแอปพลิเคชั่นเป็นจำนวนมากขึ้นกว่าเมื่อก่อน ทีมการปฏิบัติการก็มีระบบที่มีขนาดใหญ่และซับซ้อนกว่าเดิม เเต่ทุกคนต่างรู้ว่าด้วยทรัพยากรที่มีอยู่อย่างจำกัดนั้นจำเป็นต้องมีการจัดการทรัพยากรเหล่านั้นให้เกิดประสิทธิภาพสูงสุดตอบสนองต่อจำนวนผู้ใช้งานแอปพลิเคชั่นในทุกสถานการณ์ดังนั้นจึงมีการนำเทคโนโลยี Container เข้ามาช่วยในเเต่ละองค์กรให้ใช้งานภายในระบบเพื่อการทำงานที่มีมาตรฐาน

 

Containers คืออะไร

Containers คือการจัดเก็บแอพพลิเคชั่นให้อยู่ในรูปแบบที่ง่ายต่อการโยกย้ายและนำขึ้นระบบการปรับใช้โดยประกอบไปด้วยตัวแอปพลิเคชั่น library หรือ binary จำเป็นในการรันแอพพลิเคชั่นนั้นและการกำหนดค่าของแอปพลิเคชั่นนั้น ไม่ว่าจะย้ายตัวแอพพลิเคชั่นที่ถูกจัดเก็บเป็น container ไปรันที่ไหนจะสามารถทำงานได้เหมือนเดิมโดยไม่คำนึงถึงระบบปฏิบัติการ Container  เป็นเทคโนโลยีการจำลองเสมือนของระบบปฏิบัติการคอมพิวเตอร์เช่น CPU Memory แต่ละคอนเทนเนอร์ทำหน้าที่เป็นแพ็กเกจแยกต่างหากซึ่งสามารถเรียกใช้แอปพลิเคชันหรือบริการได้โดยไม่ต้องคำนึงถึงสภาพแวดล้อมการประมวลผลพื้นฐาน ภายในหนึ่ง container สามารถรันแอปพลิเคชั่นทั้งตัวหากเราแบ่งแบบ microservice ก็ได้แอพพลิเคชั่นในรูปแบบ container จะถูกรันผ่าน software ที่เรียกว่า container engine/runtime 

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

 

ประวัติเเละที่มาของ Containers

  • ปี ค.ศ.1970 มีแนวคิดของ FreeBSD Jails ที่มีความซับซ้อนและมีต้นทุนเริ่มต้นสูง

  • ปีค.ศ.2000 นำแนวคิด FreeBSD Jails มาพัฒนาต่อ เป็นจุดกำเนิดแนวคิด Containers บนระบบปฏิบัติการตระกูล UNIX

  • ปี ค.ศ. 2004 ระบบปฏิบัติการ Solaris ของบริษัท Sun Microsystems มีคุณลักษณะเดียวกัน ใช้ชื่อว่า Zones (หรือ Solaris
    Containers) กลุ่มระบบปฏิบัติการลินุกซ์น าแนวคิดนี้มาสืบสานต่อในโครงการ OpenVZ หรือ Linux Containers (LXC)

  • ปี ค.ศ. 2013 Containers แพร่หลายในวงกว้างจาก Docker ที่เป็นส่วนหนึ่งของโครงการพัฒนา LXC ต่อมา Docker มีการ
    พัฒนาส่วนต่างๆ ขึ้นมาเองจนสมบูรณ์พร้อมใช้งาน ทำให้แนวคิด Container ได้รับการยอมรับในวงการอย่างรวดเร็ว มีตัวอย่าง
    การใช้งานจากบริษัทใหญ่อย่าง Google ที่พัฒนาฟีเจอร์ของ Google Compute Engine ให้รองรับอย่างรวดเร็ว

  • ปี ค.ศ. 2014 จากผลตอบรับของผู้พัฒนาระบบ ทำให้ บ.ไมโครซอฟท์เข้ามาร่วมแนวคิด ทำให้ระบบปฏิบัติการฝั่งวินโดวส์ใช้งาน
    Docker ได้และพัฒนาสำเร็จใน Windows Server 2016

  • ปัจจุบันความสำเร็จของ Docker ทำให้เกิดคู่แข่งขึ้น เช่น Rocket หรือ rkt ของบริษัท CoreOS ของค่ายยักษ์ใหญ่ Red Hat ทำให้ Containers แยกออกเป็นสองสายแต่มีการออกมาตรฐานกลางภายใต้การดูแลขององค์กรชื่อ Open Container Initiative (OCI)

 

การเพิ่มประสิทธิภาพทรัพยากรและการดำเนินการ Containers

โดยปกติคอนเทนเนอร์จะใช้ทรัพยากรในการประมวลผล CPU และ RAM น้อยกว่ามากเมื่อเทียบกับ Virtual Machine ด้วยเหตนี้ทำให้คอนเทนเนอร์ ทำงานบนเซิร์ฟเวอร์หรืออินสแตนซ์เดียวกันมากกว่า Virtual Machine จึงเป็นการช่วยเพิ่มประสิทธิภาพในการใช้ทรัพยากรคอมพิวเตอร์ นอกจากนี้คอนเทนเนอร์ยังใช้เวลาบูท ปรับขนาดหรือยกเลิกแอปพลิเคชันที่เร็วกว่าเมื่อเทียบกับ Virtual Machine

 

ตัวอย่างการนำ Containers ไปใช้งาน

  1. การนำ Containers มาใช้ช่วยแก้ปัญหาเรื่อง infrastructure / system dependency ระหว่างแอปพลิเคชันแต่ละเวอร์ชัน หรือแต่ละสถานะ เช่น dev / test or UAT / production เนื่องจากส่วนประกอบที่จำเป็นของแต่ละแอปพลิเคชันได้ถูกรวมมาในอิมเมจแล้ว จึงเป็นข้อดีของกระบวนการเปลี่ยนโค้ดที่เขียนไว้ ไปสู่กระบวนการ deployment เพื่อการใช้งานจริงบน production หรือที่เราเรียกกันว่า CI/CD
  2. การใช้งาน Containers เพื่อแยกแอปพลิเคชันแบบเดิมที่เขียนมาเป็นชิ้นเดียวกัน (Monolithic) ให้กลายเป็นไมโครเซอร์วิส (Microservice) ที่มีขนาดเล็กลง จัดการได้สะดวกขึ้น สามารถสเกลเซอร์วิสบางตัวหากต้องการรับโหลดมากขึ้น
  3. การนำ Container ของแอปพลิเคชันที่ท าขึ้นหรือแยกออกเป็นไมโครเซอร์วิสแล้วนั้น ไปประมวลผลบนโครงสร้างพื้นฐานคลาวด์ที่มีความสามารถในการสเกลตัวเองได้ จะมีความซับซ้อนสูงตามไปด้วย ต้องใช้ความสามารถของซอฟต์แวร์ที่เรียกว่า orchestration เช่น Kubernetes หรือ Apache Mesos เข้ามาควบคุม

 

 

Containers มีระบบสามารถถูกอัพเดทเพิ่มและลดได้อย่างรวดเร็วและง่ายขั้นตอนการอัปเดตเองสามารถทำได้อย่างอัตโนมัติเมื่อมีความต้องการใหม่ๆ หรือการเพิ่มมาตรฐานความปลอดภัยของแอปพลิเคชั่น เราสามารถอัพเดทและสร้าง containers ขึ้นเป็น containerอ image และส่งขึ้นไปบน image registry เพื่อให้ผู้ดูแลนำขึ้นระบบ ข้อด้อยของ Containers คือมีความยืดหยุ่นน้อยกว่า Virtualization โดยเฉพาะการที่ไม่สามารถใช้ระบบปฏิบัติการที่แตกต่างกันระหว่าง Guest และ Host ได้ (ใช้ OS ตัวเดียวกัน) หรือคุณสามารถหาความรู้เพิ่มเติมได้เกี่ยวกับ Containers ได้ใน Google 

 

 

ข้อมูลอ้างอิง

รู้จัก Container มันคืออะไร แตกต่างจาก Virtualization อย่างไร? ,[ออนไลน์], เข้าถึงได้จาก https://www.blognone.com/node/105928

Container คืออะไร? ,[ออนไลน์], เข้าถึงได้จาก https://www.ecloudvalley.com/th/th-solutions/th-containers/

Containers vs. Virtual Machines ต่างกันอย่างไร ,[ออนไลน์], เข้าถึงได้จาก https://monsterconnect.co.th/containers-vs-virtual-machines/

กระทู้ล่าสุดจากเว็บบอร์ด
หัวข้อกระทู้
ตอบ
เปิดดู
ล่าสุด
ตัวแปร List ใน Python เหมาะสำหรับงานแบบไหน
โดย athirach.offcial พ 27 มี.ค. 2024 11:34 am บอร์ด Python Knowledge
0
98
พ 27 มี.ค. 2024 11:34 am โดย athirach.offcial View Topic ตัวแปร List ใน Python เหมาะสำหรับงานแบบไหน
data science คืออะไร ? มีหน้าที่อะไร
โดย athirach.offcial พ 27 มี.ค. 2024 11:24 am บอร์ด Python Knowledge
0
94
พ 27 มี.ค. 2024 11:24 am โดย athirach.offcial View Topic data science คืออะไร ? มีหน้าที่อะไร
ไลบรารี SciPy การใช้เพื่อแก้ปัญหาทางวิทยาศาสตร์และคณิตศาสตร์
โดย athirach.offcial พ 27 มี.ค. 2024 11:14 am บอร์ด Python Knowledge
0
82
พ 27 มี.ค. 2024 11:14 am โดย athirach.offcial View Topic ไลบรารี SciPy การใช้เพื่อแก้ปัญหาทางวิทยาศาสตร์และคณิตศาสตร์
เชื่อมต่อ WordPress กับฐานข้อมูล วิธีเชื่อมต่อฐานข้อมูลง่ายๆ
โดย athirach.offcial พ 27 มี.ค. 2024 11:03 am บอร์ด Wordpress Developing Knowledge
0
41
พ 27 มี.ค. 2024 11:03 am โดย athirach.offcial View Topic เชื่อมต่อ WordPress กับฐานข้อมูล วิธีเชื่อมต่อฐานข้อมูลง่ายๆ
SQL - Trigger คืออะไร? มีประโยชน์อย่างไรในการทำงาน
โดย athirach.offcial พ 27 มี.ค. 2024 10:54 am บอร์ด SQL Knowledge
1
288
พ 27 มี.ค. 2024 5:49 pm โดย athirach.offcial View Topic SQL - Trigger คืออะไร? มีประโยชน์อย่างไรในการทำงาน
วิธีอ่านค่าแรม จากสติ๊กเกอร์แปะแรม ตัวอย่างของ KVR Kingston
โดย mindphp อ 26 มี.ค. 2024 6:28 pm บอร์ด Microsoft Office Knowledge & line & Etc
0
125
อ 26 มี.ค. 2024 6:28 pm โดย mindphp View Topic วิธีอ่านค่าแรม จากสติ๊กเกอร์แปะแรม ตัวอย่างของ KVR Kingston
การลบฐานข้อมูลโดยไม่ Backup ความผิดพลาดที่สามารถเสื่อมเสียธุรกิจ
โดย athirach.offcial อ 26 มี.ค. 2024 6:24 pm บอร์ด SQL Knowledge
0
92
อ 26 มี.ค. 2024 6:24 pm โดย athirach.offcial View Topic การลบฐานข้อมูลโดยไม่ Backup ความผิดพลาดที่สามารถเสื่อมเสียธุรกิจ
การลบฐานข้อมูลโดยไม่ Backup ความผิดพลาดที่สามารถเสื่อมเสียธุรกิจ
โดย athirach.offcial อ 26 มี.ค. 2024 3:38 pm บอร์ด Linux - Web Server
0
109
อ 26 มี.ค. 2024 3:38 pm โดย athirach.offcial View Topic การลบฐานข้อมูลโดยไม่ Backup ความผิดพลาดที่สามารถเสื่อมเสียธุรกิจ