如何解决超大规模软件系统

一、物理界的熵增定律

图1:墒增定律

相信小伙伴们对这张图不陌生,都听说过墒增定律,是德国人克劳修斯在1865年首次提出,他认为:在一个封闭的孤立系统内,热量总是从高温流向低温,从有序走向无序,而且这一过程是不可逆转的,被称为热力学第二定律,这是一条让科学家都感到绝望的定律。生活中的例子数不胜数,一辆车,不管你开不开,大概10几年都会报废,一件衣服,无论你穿不穿、洗不洗,3、5年都会变旧,并被抛弃,它揭示了万物演化的终极法则,暗示着人类终将走向毁灭,整个宇宙也终将归于热寂。

虽然熵增定律让我们看到了万物的最终结局,可在这绝望之中,却隐藏着希望,这个希望正来自于人类自身。我们不断的吸收物质能量,不断的学习获取信息,不断的创造新的科技、不断的探索未知领域,不断的调整心态,这些都属于生命活力。当我们持续做这些事的时候,在负熵的驱动下,便会呈现出熵减的效果,可以在一定范围内推迟熵增的到来,就好比有的人年纪轻轻就离开了这个世界,而有的人到了100多岁还依然活着。正如科幻小说《三体》中所描述:生存需要投入更多的思想和精力。宇宙的熵在升高,有序度在降低,像平衡鹏那无边无际的黑翅膀,向存在的一切压下来,压下来。可是低熵体不一样,低熵体的熵还在降低,有序度还在上升,像漆黑海面上升起的磷火,这就是意义,最高层的意义,比乐趣的意义层次要高。要维持这种意义,低熵体就必须存在和延续。

二、软件产品的熵增定律

尽管软件产品几乎不受任何物理定律的约束,然而熵增的影响依然巨大。任何一款软件产品,只要有价值,有用户,有开发者维护,就会不断有新的需求,新的功能,伴随着用户的增长以及研发团队的增长,这些因素会不断推动软件产品变得越来越大,越来越复杂,软件的生命力会从最初的集中、有序的排列状态,逐步趋向复杂、无序状态,直到软件不可维护而被迫下线或重构。

图2:软件产品墒增曲线

三、软件产品的复杂度到底来自哪里,导致了墒增

分析之道两端,曰剖析,曰简要。

剖析者:如治骨角者之切,如治玉石者之琢。每一事来,先须剖成两片,由两片而剖成四片,四片而剖成八片,愈剖愈悬绝,愈剖愈细密,如纪昌之视虱如轮,如庖丁之批隙导窾,总不使有一处之颟顸,一丝之含混。

简要者:事虽千端万绪,而其要处不过一二语可了。如人身虽大,而脉络针穴不过数处;万卷虽多,而提要钩玄不过数句。——曾国藩

1、不确定性:

客户的不确定性

行业的不确定性

业务的不确定性

技术的不确定性

人员的不确定性

战略的不确定性

……

2、无序性

研发流程的无序性

团队配合的无序性

业务优先级的无序性

……

3、规模

客户规模

业务规模

团队规模

……

4、认知成本

完成一项任务,所需的技能、知识、工具、方法……

……

我们可以归纳出简单的软件复杂度公式,便于大家的理解:

图3:软件产品复杂度公式

四、如何解决超大规模软件系统的复杂度

我们已经获得了软件产品的复杂度公式,那如何解决软件的复杂度,以应对熵增? 

1、不确定性的破解之道

当下,IT技术发展迅猛,新的商业模式与业务模式层出不穷,软件产品的形态也在不断的演进。面向未来的变化及不确定性,我们可以采用不同的方法来应对。

1.1、“增量敏捷开发”、“持续集成与交付”,即“CI/CD&DevOps”,讲好当下的用户故事,专注解决客户首要的最痛点;

1.2、“技术与业务分离”、“平台与服务分离”,技术问题,技术专家解决,业务问题,业务专家解决。将不确定或不稳定的部分,隔离在某个范围,避免大规模系统重构;

2、无序性的破解之道

熵增是迈向混乱无序,那么熵减是和自然规律抗争,提前建立秩序的世界。人类需要消耗能量来维持秩序,房间需要定时清洁、工厂需要时时刻刻5S、办公室需要定时整理、电脑文件需要定时分类、打标签存储,人性是追求快乐,逃避痛苦,但我们有预见性和大局观,让我们能够克服短期痛苦,建立秩序,避免更大的痛苦。

3、规模问题的破解之道

万物的尺度:规模法则。体型越小,其相对强度越大。一只小狗能背负两三只与自身同等大小的狗,但一匹马连与自身同等大小的一匹马都驮不了——伽利略。

我们可以遵循复杂系统的规则去破解规模带来的问题:、 

3.1、整体大于其组件的简单线性总和,而且整体通常也与其组件存在极大的不同。组件之间遵从简单规则的互动产生了1+1>2的效果,这种现象叫做涌现行为。

3.2、许多复杂系统并没有中央控制,都是去中心化,自组织、自适应的生态体系。

3.3、要警惕幼稚地将系统拆分为相互独立的组成部分。此外,系统一个组成部分的小小不安或许会给其他组成部分带来重大的影响。

3.4、按规模缩放,从小到大的增长通常伴随着从简单向复杂的进化过程,同时也能保持系统的基本要素或基石不发生变化或被保存下来。这也就提示我们越是基础的越牢固,我们可以去寻找变化中的不变的要素。

4、认知成本的破解之道

认知成本即:我们学习/掌握、了解一个事情、信息所需要花费的成本,包括时间、精力、金钱。

4.1、杜绝“破窗效应”。

软件产品中不要留着“破窗户”不修,一旦窗户破裂,就会相当迅速的恶化。低劣的设计、错误决策、糟糕的代码,发现一个就修理一个,不要留给“后人”。

4.2、坚信“墨菲定律”。

追求完美,守正安分,不图侥幸,防微杜渐,小的隐患若不消除,就有可能扩大增长,其造成事故的几率也会慢慢增加。这对于巨大、复杂的技术系统来说尤为可怕。

五、小结

随着熵增,软件产品会变得越来越复杂,这是客观无法改变的规律,而大部分的熵增都是人的行为导致的。我们如何认识到这些规律,并基于这些规律从技术、业务、组织、流程、岗位、管理等各维度制定决策,努力打造好的产品,为社会、为客户、为我们每个参与创造产品的人创造价值,是我们每个技术人持续的追求。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值