作者:毕玄
文章来源:微信公众号HelloJava
在前面聊聊系统设计的套路这篇文章里聊了下做系统设计的一个思考框架,这篇展开讲系统设计的第一步,就是分析清楚系统建设的目的。
作为系统设计的第一步,重要性毋庸置疑,如果连系统建设的目的都没搞清楚,后面所有的步骤都会错误,但如果我们去看很多的系统设计,会发现压根就没有系统建设的目的的仔细分析。
当需要做系统设计时,意味着需要建设一套新系统,或者对原有的系统进行比较大的架构的改造升级,而这一定是因为什么原因才要去做的,之所以要分析好系统建设的目的,一方面是为了避免出发点有问题,系统建设的目的应该是充分反映出解决业务层面临的挑战,或者系统用户层面面临的问题的,而不是出于个人诉求,另一方面是为了确保在后续的系统设计中能保证目的的达成。
从对系统建设的目的的分析中,是很容易看出格局和高度的,这两个词看起来非常虚,但其实很实,格局和高度通常是指所做的事影响的范围大小,例如从所在的一个小团队,到所在的大部门,到所在的大BU,到所在的大BG,到跨多BG的业务板块,到整个集团,甚至是到这个社会,这里一定要实事求是,别这里讲的是世界形势,后面的整个系统设计又完全解决不了这里所说的。
结合我自己的经历来说,在早期做HSF时,在系统建设的目的这点上是最为缺失的,也导致了自己在HSF阶段犯下了几次大的错误,例如最典型的就是HSF做动态化的那次系统架构改造,如果仔细的去分析当时做这件事的目的,就会看到这个是出于技术情怀,而不是业务端面临的业务挑战,或者说HSF的用户面临的问题,也就是之前说的出发点的问题,我觉得这是很多技术人员非常容易犯的错误,就是纯粹是出于技术诉求发动的很大动作的系统重构,我自己是在有一年有一位阿里的高管在给我做辅导时,提到首先要思考清楚为什么做某件事,并且能讲清楚原因,才明白了动机真的是非常重要的,后面做事的时候才能没那么技术化了。
因为HSF/Ali HBase的经历,到了后面做阿里容器/调度、异地多活的时候在目的这块才算是能更好的把握,能更好的去结合阿里的业务所面临的挑战来看要做的事。
大多数时候,驱动系统设计这件事的发生是其他方提出的,作为架构师,做好需求的转换,决定是否要建设新系统,或重构升级老系统,深刻的去理解系统建设的目的也非常重要,因为架构师是最终要给整个技术团队讲为什么要做的,这能够更好的让团队明白做这件事的价值和意义。
总的来说,我认为做系统设计前,一定要先对于系统建设的目的分析清楚,确保系统建设有价值和有意义,同时确保后面的整个系统设计是能让目的达成的。
这个系列的文章会按照聊聊系统设计的套路来写,写的时候会理论结合实践,实践主要是讲我自己在相应的点上的一些经历,系列的计划大致是:
系统设计之系统建设的目的
系统设计之系统建设的目标
系统设计之达成目标的核心问题
系统设计之解决核心问题的设计
系统设计之设计原则