现代业务应用系统的扩展与优化
1. 设计理念与灵活性
在构建软件系统时,系统对变化的适应性至关重要。一个难以进行更改的系统,即使是简单的业务逻辑修改也可能变得异常复杂。因此,从系统设计之初就应考虑其对变化的适应性。
为了实现这一点,应优先采用不可变性原则。不可变的代码更易于理解和修改,这与响应式宣言中消息驱动的核心属性相关,因为消息一旦发送就不可修改,且需要通过消息来描述变化。
软件系统本身具有一定的复杂性,而业务工作流往往充满了各种特殊情况。开发者的责任是尽量减少软件系统带来的额外复杂性,使系统的复杂程度恰到好处。
随着业务需求的不断变化,软件系统需要具备足够的灵活性来适应这些变化,并且实施这些变化的过程应该简单直接。然而,系统也不能过于灵活,否则可能会因为高度抽象而难以进行可靠的更改。
为了达到这种平衡,系统可以通过对业务规则进行分类,为不同类型的规则提供特定的实现位置,就像一张地图为开发者指引不同类型变化的实施方向。同时,采用 CQRS 模式并结合 GraphQL 的模式语言,可以使系统数据的视图与数据的变更独立发展。虽然在项目初期这可能会增加一些复杂性,但如果不在一开始就引入,后期再进行改造会更加困难。
在设计系统时,应尽量减少固定决策,理想情况下,系统中的每个组件都应该是可替换的,并且对与其协作的组件的影响最小。目标是在不排除未来可能性的同时,避免过度设计。
2. 多命令处理器的应用
在一些系统中,通常会采用单一命令处理器的简化设计,但这并不意味着整个业务只需要一个命令处理器。业务应用通常是特定领域的,并且针对组织内的特定部门,不同部门可以看作不同的领域。