จากบทความเรื่อง Principles of Container-based Application Design
ทำการอธิบายถึงแนวคิด 7 ข้อ
สำหรับการออกแบบระบบงานด้วย Container
หรือตามแนวทางของ Cloud Native Application นั่นเอง
ซึ่งมีรายละเอียดดังนี้

โดยแบ่งออกเป็น 2 กลุ่มคือ

กลุ่มที่ 1 Build time

  • Single concern แต่ละ container ควรทำงานอย่างใดอย่างหนึ่งไป และทำให้มันดีไปเลย
  • Self-containment แต่ละ container จะทำงานบน kernel เป็นหลัก ดังนั้นพวก library ต่าง ๆ ควรนำมาใส่ตอน build time เพื่อลด dependency ลงไป
  • Image immutable แต่ละ application container ที่ถูกสร้างขึ้นมานั้น ต้องไม่สามารถแก้ไขหรือเปลี่ยนแปลงได้ เพื่อให้สามารถ deploy ได้ในทุก ๆ environment โดยไม่ต้องทำการ build ใหม่

กลุ่มที่ 2 Runtime

  • High Observability ทุก ๆ container ควรที่จะมี API และระบบที่คอยดูแลและจัดการการทำงานของ app ได้ ทั้ง health check, metric, tracing และ logging
  • Lifecycle Conformance แต่ละ container ควรทำการรับหรือตรวจสอบ event ต่าง ๆ จาก platform ต่าง ๆ เพื่อนำมาคิดและประมวลผล ทำให้ container ทำงานได้อย่างถูกต้องและเหมาะสม
  • Process Disposability แต่ละ container ต้อง start/stop ได้อย่างรวดเร็ว และง่าย เป็นอิสระต่อ dependency อื่น ๆ ส่งผลให้เมื่อเกิดปัญหาขึ้นมา สามารถลบและสร้างใหม่ได้เลย
  • Runtime Confinement แต่ละ container ต้องสามารถประกาศการใช้งาน resource ได้แบบง่าย ๆ เช่น limit ของ cpu, memory, config และ storage ซึ่งช่วยทำให้เราสามารถ build app ใน container ในขอบเขตที่เหมาะสม และ สะดวกต่อการเปลี่ยนแปลงมากยิ่งขึ้น

Reference Websites