Examples and Use Cases (ตัวอย่างและกรณีการใช้งาน)

เครื่องมือส่วนใหญ่สำหรับพัฒนาและปล่อยซอฟต์แวร์ถูก implement ด้วย microkernel architecture ตัวอย่างเช่น Eclipse IDE , PMD , Jira และ Jenkins เป็นต้น เว็บเบราว์เซอร์อย่าง Chrome และ Firefox ก็มักใช้ microkernel architecture เช่นกัน: viewer และ plug-in อื่น ๆ เพิ่มความสามารถที่ไม่มีอยู่ใน browser พื้นฐาน (core system) เราสามารถยกตัวอย่างซอฟต์แวร์แบบ product ได้ไม่รู้จบ แต่แล้ว business application ขนาดใหญ่ล่ะ? microkernel architecture ก็นำไปใช้กับสถานการณ์เหล่านี้ได้เช่นกัน

เพื่อแสดงให้เห็นประเด็นนี้ ลองพิจารณาตัวอย่างซอฟต์แวร์เตรียมภาษีของเราก่อนหน้านี้ หน่วยงานภาษีของสหรัฐฯ อย่าง Internal Revenue Service มีฟอร์มภาษีพื้นฐานสองหน้าเรียกว่าฟอร์ม 1040 ซึ่งบรรจุสรุปข้อมูลทั้งหมดที่จำเป็นในการคำนวณภาระภาษีของบุคคลหนึ่ง แต่ละบรรทัดในฟอร์มภาษี 1040 มีตัวเลขเดียว เช่น รายได้รวม และการคำนวณตัวเลขแต่ละตัวนั้นต้องใช้ฟอร์มและ worksheet อื่น ๆ อีกมากมาย ฟอร์มและ worksheet เพิ่มเติมแต่ละอันสามารถ implement เป็น plug-in component ได้ โดยฟอร์มภาษีสรุป 1040 เป็น core system (ตัวขับเคลื่อน) ด้วยวิธีนี้ การเปลี่ยนแปลงกฎหมายภาษีจะถูกแยกไว้ใน plug-in component ที่เป็นอิสระ ทำให้การเปลี่ยนแปลงง่ายขึ้นและมีความเสี่ยงน้อยลง

ตัวอย่างอีกอย่างของ business application ขนาดใหญ่และซับซ้อนที่สามารถใช้ประโยชน์จาก microkernel architecture ได้คือการประมวลผลคำร้องเรียกร้องค่าสินไหมทดแทนประกันภัย (insurance claims processing) การประมวลผลคำร้องเป็นกระบวนการที่ซับซ้อนมาก แต่ละเขตอำนาจศาล (jurisdiction) มีกฎและระเบียบต่างกันว่าอะไรทำได้และทำไม่ได้ในคำร้องประกันภัย ตัวอย่างเช่น บางเขตอำนาจศาล (เช่นบางรัฐในสหรัฐฯ) อนุญาตให้บริษัทประกันเปลี่ยนกระจกหน้ารถให้ฟรีถ้ากระจกเสียหายจากก้อนหิน ในขณะที่บางที่ไม่อนุญาต สิ่งนี้สร้างเงื่อนไขที่แทบจะไม่มีที่สิ้นสุดสำหรับกระบวนการเคลมมาตรฐาน

แอปพลิเคชันเคลมประกันภัยส่วนใหญ่ใช้ประโยชน์จาก rules engine ขนาดใหญ่และซับซ้อนเพื่อจัดการความซับซ้อนนี้ส่วนใหญ่ rules engine คือ framework หรือ library ที่ช่วยให้นักพัฒนา (หรือผู้ใช้ปลายทาง) นิยามชุดกฎหรือขั้นตอนเพื่อกำหนด workflow แบบ declarative ได้ ไม่ว่าจะใช้เครื่องมือแบบ visual หรือ domain-specific language อย่างไรก็ตาม rules engine เหล่านี้อาจเติบโตกลายเป็น Big Ball of Mud antipattern ซึ่งการเปลี่ยนกฎง่าย ๆ เพียงข้อเดียวต้องอาศัยนักวิเคราะห์ นักพัฒนา และผู้ทดสอบจำนวนมากเพื่อให้แน่ใจว่าไม่มีอะไรพัง การใช้ microkernel architecture pattern สามารถแก้ปัญหาเหล่านี้ได้หลายอย่าง

กฎการเคลมของแต่ละเขตอำนาจศาลสามารถบรรจุไว้ใน plug-in component แบบ standalone แยกกัน ไม่ว่าจะ implement เป็น source code หรือเป็น instance เฉพาะของ rules engine ที่ plug-in component เรียกใช้ ด้วยวิธีนี้ กฎสามารถเพิ่ม ลบ หรือเปลี่ยนแปลงสำหรับเขตอำนาจศาลหนึ่ง ๆ ได้โดยไม่กระทบส่วนอื่นของระบบ ยิ่งไปกว่านั้น เขตอำนาจศาลใหม่ ๆ สามารถเพิ่มและลบได้โดยไม่กระทบส่วนอื่นของระบบ core system ในตัวอย่างนี้จะเป็นกระบวนการมาตรฐานสำหรับการยื่นและประมวลผลคำร้อง—ซึ่งเป็นสิ่งที่ไม่ค่อยเปลี่ยนแปลงบ่อยนัก

microkernel architecture style เป็นที่พบเห็นได้ทั่วไปมาก เมื่อคุณเห็นมันครั้งหนึ่งแล้ว คุณจะเริ่มสังเกตเห็นมันได้ทุกที่ มันเป็นกรณีที่โครงสร้าง architecture (core + plug-in) เข้ากันได้พอดีกับปัญหา domain ทั่วไปเรื่องการปรับแต่ง (customization) และปรากฏว่าการปรับแต่งเป็นเรื่องที่พบบ่อยมากในซอฟต์แวร์