大家都是如何做好架构之架构切分的?

一般碰到问题,我们去梳理架构的过程中,会发现,在大部分情况下,发现的问题都迎刃而解,不需要做额外的动作 。很多时候问题的产生都是因为沟通的误解,或者主观上有很多不必要的利益诉求导致的 。但是总还有一部分确实是有问题的,需要做调整,那么就必须要有所动作,做相应的调整 。这个调整就是架构的切分 。
切分就是利益的调整
我们要非常的清楚,所有的切分调整,都是对相关人的利益的调整 。为什么这么说呢,因为维护自己的利益,是每个人的本性,是在骨子里面的,我们不能逃避这一点 。我们以第一篇文章里面的例子为例来做解释 。
我们已经知道,随着社会的发展,分工是必然的,为什么呢? 这个背后的动力就是每个人自己的利益 。每个人都希望能够把自己的利益最大化,比如:生活的更舒适,更轻松,更安全,占用并享有更多的东西 。但是每个人的能力和时间都非常的有限,不可能什么都懂,所以自然需要舍掉一些自己不擅长的东西,用自己擅长的东西去换取别人擅长的东西 。
对比一个人干所有的事情,结果就是大家都能够得到更多,当然也产生了一个互相依赖的社会,互相谁都离不开谁 。这就是自然而然而产生的架构切分,背后的原动力就是人们对自己利益的渴望 。人们对自己利益的渴望也是推动社会物质发展的原动力 。
在这个模式下,比较有意思的是,每个人必须要舍掉自己的东西,才能够得到更多的东西 。有些人不愿意和别人进行交换,不想去依赖于别人,这些人的生活就很明显的差很多,也辛苦很多,自然而然的就被社会淘汰了 。如果需要在这个社会上立足,判断标准就变成了:如何给这个社会提供更好更有质量的服务 。提供的更好更多的服务,自然就能够换取更多更好的生活必需品 。实际上这就是我们做人的道理 。
为什么需要切分?
当人们认识到要主动的去切分一个系统的时候,毫无疑问,我们不能忘掉利益这个原动力 。所有的切分决策都不能够违背这一点,这是大方向 。结合前一篇“识别问题”,一旦确定了问题的主体,那么系统的利益相关人(用现代管理学语言叫:stakeholder)就确定了下来 。所发现的问题,会有几种情况:

  1. 某个或者某些利益相关人负载太重 。
  2. 时间上的负载太重 。
  3. 空间上的负载太重,本质上还是时间上的负载太重 。
  4. 某个或者某些利益相关人的权利和义务不对等 。

大家都是如何做好架构之架构切分的?

文章插图
 
 
切分的原则
情况1是切分的原因,情况2是切分不合理而导致的新的问题,最终还是要回到情况1 。对于情况1,本质上都是时间上的负载 。因为每个人的时间是有限的,怎么在有限的时间内做出更多的事情?那么只有把时间上连续的动作,切分成时间上可以并行的动作,在空间上横向扩展 。所以切分就要有几个原则:
  1. 必须在连续时间内发生的一个活动,不能切分 。比如孕妇怀孕,必须要10月怀胎,不能够切成10个人一个月完成 。
  2. 切分出来的部分的负责人,对这个部分的权利和义务必须是对等的 。比方说妈妈10月怀胎,妈妈有权利处置小孩的出生和抚养,同样也对小孩的出生和抚养负责 。为什么必须是这样呢? 因为如果权利和义务是不对等的话,会伤害每个个体的利益,分出来执行的效率会比没有分出来还要低,实际上也损害了整体的利益,这违背了提升整体利益的初衷 。
  3. 切分出来的部分,不应该超出一个自然人的负载 。当然对于每个人的能力不同,负载能力也不一样,需要不断的根据实际情况调整,这实际上就是运营 。
  4. 切分是内部活动,内部无任怎么切,对整个系统的外部应该是透明的 。如果因为切分导致整个系统解决的问题发生了变化,那么这个变化不属于架构的活动 。当然很多时候当我们把问题分析的比较清楚的时候,整个系统的边界会进一步的完善,这就会形成螺旋式的进化 。但这不属于架构所应该解决的问题 。进化的发生,也会导致新的架构的切分 。
原则2是确保我们不能违反人性,因为维护自己的利益,是每个人的本性 。只有权利和义务对等才能做到这一点 。从原则2的也可以推理,所有的架构分拆,都应该是形成树状的结果,不应该变成有向图,更不应该是无向图 。很多人一谈架构,必谈分层,但是基本上都没意识到,是因为把一个整体分拆为了一棵树,因为有了树,才有层 。


推荐阅读