《从 0 开始学架构》学习归整(二)架构设计三原则

内容纲要

盘古开天地后为什么死了?

很久很久以前,天和地还没有分开,宇宙混沌一片。有个叫盘古的巨人,在这混沌之中,一直睡了一万八千年。
有一天,盘古突然醒了。他见周围一片漆黑,就抡起大斧头,朝眼前的黑暗猛劈过去。只听一声巨响,混沌一片的东西渐渐分开了。轻而清的东西,缓缓上升,变成了天;重而浊的东西,慢慢下降,变成了地。
天和地分开以后,盘古怕它们还会合在一起,就头顶着天,用脚使劲蹬着地。天每天升高一丈,盘古也随着越长越高。这样不知过多少年,天和地逐渐成形了,盘古也累得倒了下去。
盘古倒下后,他的身体发生了巨大的变化。他呼出的气息,变成了四季的风和飘动的云;他发出的声音,化作了隆隆的雷声。他的双眼变成了太阳和月亮;他的四肢,变成了大地上的东、西、南、北四极;他的肌肤,变成了辽阔的大地,他的血液,变成了奔流不息的江河,他的汗,变成了滋润万物的雨露……

你该不会以为盘古大神真是支撑天地累死的吧?
当然不会!盘古大神是什么人?这么可能这么简单累死……
其实根据鲁迅的研究,盘古大神另有死因……

研究表明盘古大神其实是银河集团的第一代世界架构师。在银河集团的某领导提出需要一个新的天地系统这个需求后,大神就开始了漫长的架构设计之路。

首先大神先整理了需求,并做了一个结构脑图,确定了大致结构以后,大神就开始确定各个结构的细节,并开始做选型:

  1. 内核?
    (A) Funny Mud 双内核
    (B) Dwayne 微内核
    (C) Gravity 单内核

  2. 外核?
    (A) …

.
.
.

  1. 散逸层?
    (A) Freedom 域外系统
    (B) Kite 牵引系统
    (C) Shield 防御系统

在做完各种调研、选型后,盘古大神顶着黑眼圈继续做更加详细的计划(选择题)……

终于在经过几千兆道选择后,大神终于定下了“我的世界 v1.0”的整个需求、开天计划。

于是,骨瘦如柴的大神开始了漫长的开天。然而事情并没有那么简单,即使事前做了那么多的计划,在开天过程中依然意外不断,新的想法、需求不断覆盖计划书。不得已,大神只能各种加班、福报……

在经过无数年的耕耘后,大神人到中年……“我的世界 v1.0”终于开天完成……大神马不停蹄的在银河云申请了一片外围空间,部署、上线“我的世界”系统……

然而,当大神赶到银河云申请到的天地的时候,身体终于支撑不住,猝死在了开天岗位上……他虽然身死,但意志依然残存,他将用自己最后的力量完成开天。他的身体发生了巨大的变化。他呼出的气息,变成了四季的风和飘动的云;他发出的声音,化作了隆隆的雷声。他的双眼变成了太阳和月亮;他的四肢,变成了大地上的东、西、南、北四极;他的肌肤,变成了辽阔的大地,他的血液,变成了奔流不息的江河,他的汗,变成了滋润万物的雨露……

一代大神终于还是离我们远去……

大神所在公司的那个领导在听说一个本公司的 35 万岁架构师猝死在工作岗位上后,立马知道了是以“选择题做太多,精神紧绷,心累”为请假理由的盘古大神,但是他当时急着出产品,于是拒绝给盘古大神放假。他担心这件事情影响到自己的晋升之路,于是开始买水军放出盘古大神是自己支撑天地死的……于是这件事情便只是上了几天头条就没有下文了……

不久后,大神的同事伏羲、女娲接管了盘古大神遗作“太阳系统”的后续工作。渐渐发现盘古大神的事情不是那么简单,终于在经过仔细勘察后,发现了大神的真正死因。然而,伏羲、女娲他们自知自己只是银河集团的普通员工,对方则是银河集团高管,胳膊拧不过大腿,所以,他们只能将事情的真相通过甲骨文记载起来,藏在昆仑山里,期待有后人能为大神讨个公道……

不难看出,盘古大神的死因就是他请假理由:要做的选择、权衡太多,精神负担大。

架构师与生俱来的使命就是不断的做出最合适的选择。

经过前人总结,选择的原则有很多共性,可以大致归纳为:

  1. 合适原则
  2. 简单原则
  3. 演化原则

合适原则

核心思想

合适优于业界领先

易错来源

技术人员的技术情节;总想挑战自己,想达到甚至优于业界领先水平(这样才能表现出自己的优秀…… KPI ↑↑↑)

主因
  1. 没那么多人,却想干那么多事
    • 顾名思义,不用解释(好多小公司都有这毛病:啥都想要,人有我不可无 ┓( ´∀` )┏️)
  2. 没那么多积累,却想一步登天
    • 绝大部分出色的项目,都是经过数年打磨、积累才出来的
  3. 没那么卓越的业务场景,却幻想灵光一闪,成为天才
    • 大部分出色项目都是业务逼出来的,没有合适的项目处理业务,不得已才投入人力、无力做创新

不要总想着搞个大新闻 👓 👅 ☕️

简单原则

核心思想

简单优于复杂

易错来源

  1. 技术人员大部分是完美主义,总想把产品、架构做的更优雅、更通用、更叼(成就感 ↑↑↑)
  2. 低估了软件的复杂度;错误的把建筑、机械上的极致思想套用到软件里来
    • 建筑、机械在古代同属于一脉,鲁班大师等人早已开始专研,底蕴深厚;现代建筑、机械,本质上并没有什么大不同,只是种类、样式变的更加多样,复杂度提升坡度不大
    • 软件是新兴行业,本身积累不够,在历史角度来说,依然处于开荒阶段;本身的最大属性就在于变化,这种不确定性极大的提升了复杂度;通常软件的运行依托了机密的机械或且复杂的操作系统,不确定 * 不确定 = ?
主因

复杂度

  1. 组件越来越多
  2. 组件改动对系统的影响
  3. 定位问题时,复杂的系统总是难于简单系统

任何事务在达到一定的复杂度后,出问题的概率就会直线上升;建筑、机械的复杂度还在可控范围,所有最求极致、完美无可厚非;但很多软件的复杂度远比我们看上去的更加复杂,已经完全超过了许多建筑、机械;所有,把建筑、机械领域的很多想法按在软件上,本身就是一个极大的错误。

软件的未来发展应该追求降低复杂度,简单、稳固的基础才能构建出更加壮美的大厦。

演化原则

核心思想

演化优于一步到位

对于软件来说,变化才是永恒的主题

软件架构需要根据业务发展不断变化

易错来源

试图一步到位的设计一个软件架构,期望业务不论这么变化,架构都稳如磐石。

主因

心太大、想太多、飘了

生物进化与软件升级
阶段生物进化软件升级
适应环境设计出符合当前的架构
繁衍,剔除无用基因,传承有利基因迭代版本,移除无用代码,保留优秀代码
快速适应环境变化,优胜劣汰根据业务变化,扩展、重构架构,淘汰大部分过时部分,保留精华、经验

总结

因地制宜,因时制宜,脚踏实地,稳扎稳打

架构设计三原则;
合适原则最适合;
简单原则不简单;
演化原则需推进。

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注