ทำเว็บไซต์ขนาดใหญ่ ด้วย HMVC Codeigniter

HMVC-สำหรับพัฒนาเว็บไซต์ขนาดใหญ่
HMVC-สำหรับพัฒนาเว็บไซต์ขนาดใหญ่

ทำเว็บไซต์ขนาดใหญ่ ด้วย HMVC

ทำเว็บไซต์ขนาดใหญ่ ด้วย HMVC Design Pattern

คำว่า Design Pattern ในเชิงการพัฒนาเว็บไซต์ หมายถึง รูปแบบวิธีการเขียนโค๊ดที่ถูกพัฒนาขึ้นมาเพื่อแก้ปัญหาโดยรวมในการพัฒนาเว็บไซต์ ปัจจุบัน Design Pattern ที่ได้รับความนิยมอย่างมากคือ MVC Design Pattern ( Model, View, Controller ) การพัฒนาเว็บไซต์โดยใช้หลักการ MVC สามารถเพิ่มประสิทธิภาพและแก้ปัญหาการพัฒนาเว็บไซต์ได้หลายส่วน ทำให้การพัฒนาเว็บไซต์มีความยืดหยุ่นทั้งในแง่ของการพัฒนาต่อยอด และการทำงานเป็นทีมของกลุ่มนักพัฒนาเอง

แนวคิดแบบ MVC เพียงพอสำหรับการพัฒนาเว็บไซต์ขนาดใหญ่ได้ แต่ถ้าในเว็บไซต์นั้น มีเว็บไซต์ขนาดใหญ่ซ้อนอยู่ข้างในอีกทีหนึ่ง ตัวอย่างเช่น โปรแกรม ERP ( Enterprise Resource Planning ) โปรแกรมวางแผนทรัพยากรทางธุรกิจขององค์กร ซึ่งแน่นอนว่าเป็นระบบขนาดใหญ่ ในโปรแกรมจะประกอบด้วย Modules ขนาดใหญ่ โดยส่วนใหญ่ก็จะมี Modules ประมาณรายการด้านล่าง

  • Sale & CRM
  • Accounting & Finance
  • Purchase
  • Warehouse Management
  • Project Management
  • Human Resource
  • อื่น ๆ

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

HMVC ( Hierarchical Model View Controller ) เกิดมาเพื่อจัดการเว็บไซต์ขนาดใหญ่แบบนี้ครับ มองภาพแบบเข้าใจง่าย ๆ เลยคือ เว็บไซต์ที่มีเว็บไซต์ขนาดใหญ่หลาย ๆ เว็บไซต์ซ้อนอยู่ภายใน HMVC ก็คือ การมีโครงสร้างแบบ MVC หลาย ๆ ตัว ซ้อนอยู่ข้างใน MVC ตัวหลักนั่นแหล่ะครับ

ในเมื่อ HMVC สามารถมีหลาย ๆ MVC เราก็สามารถจัดการกับ 1 Modules เท่ากับ 1 MVC ได้เลย

รูปตัวอย่างโครงสร้างการพัฒนาระบบ ERP โดยใช้ HMVC


พัฒนาเว็บไซต์ขนาดใหญ่ด้วย hmvc


จากตัวอย่างรูปด้านบน ซึ่งเป็น HMVC ของ Codeigniter framework จะสังเกตุว่า โครงสร้างหลักของตัวเฟรมเวิร์คจะยังคงมี Model, view, controller ที่สามารถใช้งานได้เหมือนเดิม และเพิ่มโฟลเด้อ modules เข้ามาและภายใน จะประกอบไปด้วยโมดูลย่อย ๆ ที่มีโครงสร้างการเขียนแบบ MVC

จุดเด่นของการใช้ HMVC ในการพัฒนาเว็บไซต์คือ เราสามารถแยกการพัฒนาแต่ละโมดูลออกจากกันโดยสิ้นเชิงได้เลย โปรแกรมเมอร์คนหนึ่งอาจจะพัฒนาโมดูล CRM อีกคนพัฒนา POS และอีกคนพัฒนา Warehouse หลังจากพัฒนาเสร็จสามารถโยนโมดูลหรือ MVC ตัวนั้นเข้ามาที่ MVC หลักได้เลย