首先,承载所需功能的软件自身必须要健康才行。
达到这一点,需要从计算机硬件的边界完整考虑其生命周期,如机房、电源、计算机资源、网络资源等硬件资源的生命周期;还需要从计算机软件的边界完整考虑其生命周期,如启动、到服务、到关闭等。二者都需要完整考虑,也都需要进行监控。这是软件功能得以正常运行的必要条件——软件先要能够健康的活着,并且能够被用户访问到。
其次,软件是提供给用户访问的,要保证合法用户的合法访问可以正常到达软件。
要满足这一点,需要解决以下两方面的问题:
一、识别合法的访问。 比如哪些是合法用户的访问,哪些是非法用户的访问?合法用户的访问哪些是 合法的,哪些是非法的?合法的访问中,哪些是正常的访问,哪些是非正常的访问?等等。只有屏蔽了不合法用户的访问,也排除了合法用户的非正常访问, 那么合法用户的合法访问才会不受影响。这些问题往往被称作安全需求。
二、 满足访问量要求。该软件所在机器可接受的访问量范围是多少?该软件在该机 器上可接受的访问量是多少?访问量超过正常的范围怎么处理?承载用户对软件访问的网络设备带宽是多少,能承受多大的访问量?超过这个范围怎么处理?等等。当超过流量范围时,是否要优先确保已经在正常访问的那些用户访问?如何确保或者根据业务的需求,优先保证高价值用户的访问?等等。这些问题往往被称作容量需求。这是软件功能能够被正常访问的必要条件——对访问 安全问题和访问容量问题的合适处理,保障了软件访问的健康。
保障软件自身的健康,基本上是技术问题居多,容易被技术人员识别出来。 但是保障软件访问的健康,基本上都是业务问题,也难怪容易被技术人员忽略, 其优先级也容易被排的很低。因此,提升技术人员的业务意识至关重要。
所以,软件架构分拆并不是简单的把代码拆分出来。架构师不考虑清楚分拆出来软件的完整生命周期,仅关注所需的功能,那么架构拆分只会带来无尽的麻烦,浪费更多的时间,而得不到任何好处。