知识卡片
微内核架构解耦的保险理赔案例
内容
微内核架构(又称插件架构)通过插件向核心应用添加额外功能,提供可扩展性和功能的独立分离——书中把这种设计思想的本质概括为”尽可能地解耦组件之间的关系”:通过对应用内部组件不断抽象、提炼,对服务剥离和重构,逐渐减少业务应用与过程调度之间的耦合度。核心系统通常只包含最小的业务逻辑,负责加载、卸载、运行插件(许多操作系统正是这种模式的来源);插件模块是独立模块,包含特定处理、额外功能和自定义代码,用来增强或扩展核心系统的能力,插件模块之间通常也是独立的(虽然有些插件会依赖若干其他插件),关键是要尽量减少插件间的通信以避免依赖问题——插件彼此独立、核心系统持有注册器,由此获得很好的解耦性能。Eclipse和浏览器都是典型例子,但对大型商业应用同样适用,书中给出一个美国保险公司索赔处理系统的案例:索赔处理过程极其复杂,每个阶段有大量不同的规则条例(例如同样是挡风玻璃被岩石击碎,有的州允许赔偿、有的州不允许),标准索赔过程几乎有无限种条件组合。传统做法通常用一个大型复杂规则引擎来处理所有这些规则,但规则引擎会像滚雪球一样越来越大,修改一条规则可能牵连影响其他规则——这种紧耦合设计会导致哪怕一次简单的规则修改,都需要动用大量分析人员、开发人员和测试人员去评估影响范围。改用微内核架构后,核心系统(Claims processing)只包含处理索赔的基本业务逻辑,每个插件模块对应一个州的特殊规则(可以用自定义代码实现,也可以用分离的规则引擎实例实现)——这样每个州的独特规则从核心系统中被剥离出来,可以被独立添加或移除,修改某个州的规则时不影响或仅轻微影响核心系统和其他州的插件。这个案例揭示了微内核架构解耦的本质:它不是消除复杂性本身(保险索赔的规则复杂度依然存在),而是把”因规则数量膨胀而互相牵连的紧耦合复杂度”,转化成了”规则之间彼此独立、修改互不干扰的可管理复杂度”。