孤立系统演进遵循熵增定律。
即从简单到复杂,臃肿,最终进入难以维护的过程中不断的演化,推进。
从系统外部演进的角度来看,复杂度随着系统迭代中不断增加的驱动力一方面来自于业务复杂度的逐步提升,这是业务侧响应市场复杂多变的业务需求而产生,且近乎不可逆;一方面来自于团队成员流动以及水平认知等不一致性,属于一定可控范围,比如严格的人才梯度管理,专业的技能培养体系,合理的开发设计规范等等。
理解熵增定律,对我们软件系统设计与开发有何帮助?
毫无疑问,熵增的解决方案是熵减,而熵减往往意味着不舒服,本质上是逆反的行为。那么,我们能做哪些熵减的动作?
- 从业务开发的角度在日常应用开发中需要明白,功能迭代中包括小范围的程序优化,或者说重构,目的就是人为的进行熵减,能有效降低系统的膨胀速度。
- 从架构设计的角度在日常系统设计中需要明白,系统从单一应用,进化到SOA架构,再到微服务,本质上也是一个熵减的过程。
如果将熵理解为系统在一定空间上的复杂度,微服务的目的是把复杂度以多个空间来分割,对于单空间而言是熵减的,但是总体上也引入了另一个维度的复杂度上升,即另一个维度的熵增。
网友评论