Google แนะ 7 Best Practice สำหรับการสร้าง Container

เมื่อ Container และ Kubernetes ได้รับความนิยมมากขึ้นเรื่อยๆ ทาง Google เองก็ได้ออกมาแนะนำถึงหลัก 7 ประการในการสร้าง Container ให้ดี ซึ่งทางทีมงาน TechTalkThai เห็นว่าเป็นเนื้อหาที่เป็นประโยชน์ จึงนำมาสรุปเป็นภาษาไทยให้อ่านกันได้ง่ายๆ ดังนี้ครับ

 

1. มี 1 Application ต่อ 1 Container เท่านั้น

ใน Container หนึ่งๆ นั้นควรจะมี Application เดียวที่มี Parent Process ร่วมกันเท่านั้น ตัวอย่างเช่น ไม่ควรใช้งานทั้ง PHP และ MySQL ใน Container เดียวกัน เพราะจะทำให้แก้ปัญหาได้ยาก, ไม่สามารถจัดการ Linux Signal ได้ดี และไม่สามารถ Scale ระบบเฉพาะส่วนได้

Credit: Google

 

2. จัดการกับ PID 1, Signal Handling และ Zombie Process ให้ดี

Kubernetes และ Docker นั้นอาศัยการส่ง Signal เข้าไปเพื่อหยุดการทำงานของ Application ใน Container โดย Signal ดังกล่าวจะถูกส่งไปยัง Process ที่มี PID 1 ดังนั้นหากต้องการให้ Application หยุดการทำงานได้ทันทีที่ต้องการ ก็ต้องออกแบบ Container ให้สามารถรับ Signal เหล่านี้ให้ได้ดีๆ

 

3. ใช้ Docker Build Cache ให้มีประสิทธิภาพ

Docker นั้นสามารถทำการ Cache ข้อมูลใน Layer ต่างๆ ภายใน Image เพื่อช่วยให้การ Build ภายหลังทำได้เร็วขึ้น แต่การจะใช้ความสามารถนี้ก็จำเป็นต้องมีความรู้ความเข้าใจในการเขียน Dockerfile อยู่บ้าง เช่น การใส่ Source Code ของเราลงไปนั้นควรใส่เป็นบรรทัดท้ายๆ เท่าที่จะทำได้ เพื่อให้ Base Image และ Dependency ต่างๆ ถูก Cache ให้มากที่สุด เป็นต้น

 

4. เอาเครื่องมือที่ไม่จำเป็นออกไปจาก Image

การลดความเสี่ยงที่อาจทำให้ Host ถูกโจมตีให้เหลือน้อยที่สุดนั้นเป็นสิ่งที่ควรทำเป็นอย่างยิ่ง ดังนั้นจึงควรกำจัดสิ่งที่ Application ของเราไม่ได้ใช้ออกไปจาก Container ให้มากที่สุด หรือจะใช้ Distroless (https://github.com/GoogleContainerTools/distroless) ซึ่งเป็น Image เปล่าๆ ที่ไม่มี Package Manager, Shell หรือโปรแกรมอื่นๆ อยู่เลยในการสร้าง Image ก็ได้เช่นกัน และทาง Google ก็แนะนำให้กำหนดค่า Filesystem ให้เป็นแบบ Read-only เท่านั้น เพื่อให้ปลอดภัยสูงสุด

 

5. สร้าง Image ให้เล็กที่สุดเท่าที่จะเป็นไปได้

การทำ Image ให้มีขนาดเล็กนั้นนอกจากจะประหยัดพื้นที่แล้ว จะยังช่วยลดเวลาที่ต้องใช้ในการ Download Image ลง และยังลดเวลาในการบูทให้น้อยลงอีกด้วย

Credit: Google

 

6. ทำการ Tag Image ที่ใช้ให้เรียบร้อย

การ Tag นั้นจะทำให้ผู้ใช้งานสามารถเลือกใช้ Image ในรุ่นที่ต้องการได้ง่าย ซึ่งไม่ว่าจะใช้การ Tag แบบ Semantic Versioning หรือ Git Commit Hash ก็ตาม ก็ควรที่จะต้องเขียนลงเอกสารให้ชัดเจนพร้อมคำอธิบายเพื่อให้ผู้ใช้งานเลือกใช้งาน Image ได้ถูกรุ่น ที่สำคัญคือ Image รุ่นใดที่ถูก Tag แล้วต้องไม่มีการถูกแก้ไขภายใน Tag เดิมอีก เพื่อไม่ให้ผู้ใช้งานสับสน

 

7. พิจารณาให้ดีก่อนจะเลือกใช้ Public Image ใดๆ

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

 

ผู้ที่สนใจรายละเอียดเชิงลึก สามารถอ่านเนื้อหาฉบับเต็มได้ที่ https://cloudplatform.googleblog.com/2018/07/7-best-practices-for-building-containers.html ครับ


About techtalkthai

ทีมงาน TechTalkThai เป็นกลุ่มบุคคลที่ทำงานในสาย Enterprise IT ที่มีความเชี่ยวชาญทางด้าน Network, Security, Server, Storage, Operating System และ Virtualization มารวมตัวกันเพื่ออัพเดตข่าวสารทางด้าน Enterprise IT ให้แก่ชาว IT ในไทยโดยเฉพาะ

Check Also

จาก Mobile Banking สู่ Open Banking: เมื่อธนาคารทั่วโลกต้องให้บริการทางการเงินผ่าน API ตอบโจทย์ธุรกิจในยุค Digital

การเปลี่ยนแปลงของธุรกิจธนาคารเองนั้นจะยังไม่จบลงเพียงเท่านี้ เพราะก้าวถัดไปที่เหล่าธนาคารต้องปรับตัวกันต่อไปนั้นก็คือการก้าวสู่ API Economy ที่จะทำให้บริการทางด้านการเงินของธนาคารนั้นสามารถเชื่อมต่อกับ Digital Product อื่นๆ ได้ ไม่ว่าจะเป็น Web Application, Mobile Application หรือบริการรูปแบบใดๆ ก็ตาม เพื่อให้ผู้ใช้งานของ Digital Product นั้นๆ สามารถเรียกใช้งานบริการทางด้านการเงินได้อย่างสะดวกและง่ายดายยิ่งกว่าเดิม ซึ่งการเปลี่ยนแปลงในครั้งนี้ก็มีชื่อเรียกกันว่า Open Banking นั่นเอง และบทความนี้เราก็จะพาผู้อ่านทุกท่านไปรู้จักกับ Open Banking กันครับ

FMS และ Sage ขอเชิญร่วมงานสัมมนา “ERP In Manufacturing Trend 2020 by Sage X3” 20 มิ.ย. 2019

FMS ร่วมกับ Sage ขอเรียนเชิญกลุ่มบริษัทอุตสาหกรรม เข้าร่วมงานสัมมนา “ERP In Manufacturing Trend 2020 by Sage X3” เพื่อเรียนรู้เทรนด์เทคโนโลยีที่จะช่วยเพิ่มประสิทธิภาพการทำงาน การจัดการในอุตสาหกรรมการผลิต เช่น Big Data , Internet Of Thing (IoT), Artificial Intelligence (AI), Machine Learning และร่วมรับฟังการบรรยายในหัวข้อเตรียมความพร้อมบริษัทสู่ระบบภาษีอิเล็กทรอนิกส์ (E-Tax) ในวันพฤหัสบดีที่ 20 มิถุนายน 2019 เวลา 13.00- 17.00 น. ณ โรงแรม Oakwood and Residence ศรีราชา จังหวัดชลบุรี โดยมีรายละเอียด กำหนดการ และวิธีการลงทะเบียนเข้าร่วมงานสัมมนาฟรีดังนี้