เริ่มสร้าง Architecture บน Cloud native ภายใน 30 วัน : เริ่มต้นกับ Docker (วันแรก)

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

ถ้าเราจะสร้าง Virtual Machine (สำหรับ งานไม่เน้น gui แนะนำ vagrant)  เครื่องเสมือนขึ้นมาสิ เราจะใช้ OS หรือ Library อะไรก็ลงเข้าไปสร้างเป็น เครื่องเสมือน ทำงานซ้อนอยู่บน Host ซึ่งเป็นระบบของเครื่องคอมพิวเตอร์เครี่องนั้น แต่เดียวก่อน !!!  ด้วยวิธีนี้่เราต้องติดตั้งระบบปฎิบัติทั้งระบบ บวกกับ ไลบารี่ที่ใช้ แถมยังต้องมานั่งคอนฟิกค่าต่างๆ    สำหรับทีม Operation ไม่ง่ายเลยที่จะต้องมีการเปลี่้ยนแปลงคอนฟิก หรือ การ deploy บน Production สำหรับใช้งานจริง

เปรียบเหมือนเครื่องคอมพิวเตอร์ของเรา แยกการทำงานของ เครื่องสองเครื่องเอาไว้เครื่อง จริงๆ  เพียงเครื่องเดียว หนักหนาเอางานเลยนะ ….แล้วทุกอย่างจะเปลี่ยนไป ด้วยการมาของ Docker พระเอกของเรา  !!!!!


Docker มาพร้อมกับ Library ที่ชื่อว่า LibContainer เพื่อสร้างแวดล้อมเสมือน หรือ Scope  ซึ่งจะทำงานบน Host OS โดยสามารถเลือกใช้เฉพาะ ไลบรารี่เท่านั้น ภาพเปรียบเทียบให้เห็นชัดๆ  ว่าการใช้ Docker แตกต่าง กับการใช้งาน  VM อย่างไร

1-wOBkzBpi1Hl9Nr__Jszplg.png

 

Docker นั้นจะเก็บ Library  ที่ใช้แยกกัน ระหว่าง container  แล้วใช้ OS ร่วมกันคือ Host หรือแค่ระบบหลักของเครื่อง  ไม่ว่าจะมีแค่ Container ที่สิ่งแวดล้อมไม่เหมือนกัน OS เดียวก็เอาอยู่

สรุปข้อดีของการใช้  Docker แทนการใช้ VM หรือ ลง Software บน Host OS โดยตรง

Docker ทำงานได้โดยสิ่งแวดล้อมให้อยู่ในรูปแบบของ  Image ซึ่งสามารถนำใช้บน OS ไหนก็ได้ที่ Support docker  (ทุก OS ในปัจจุบัน Support กันหมดแล้ว เราสามารถสร้างโดยใช้ container ที่ยึดหยุ่น ได้โดย การ config ลงรูปแบบไฟล์ .yaml สามารถรับตัวแปรสิ่งแวดล้อมได้ด้วย


ตอนหน้าเราจะมีเจาะลึกการใช้งานจริง ในงาน Dev กันครับ