万事万物都不可能是永恒的,系统架构一样,也有一个生命周期,也有生老病死的问题。
互联网行业就是一个和时间赛跑的行业,快人一步可能意味着永远的领先,这个行业流行一个有个有意思的规律,叫做7:2:1法则,市场份额是中的70%被行业第一的公司占据,第二名占据20%的份额,其余的10%再被剩下的其他公司瓜分。市场永远在变化,第一的公司如何保持领先地位,如何才能不被第二第三的公司超越,“快”就是其中的重要因素,可谓“天下武功唯快不破”,“快”就是壁垒,就是优势。所以,当一个新机会出现时,业务会等你先设计一个完美的架构在上线吗?当然不可能,所以任何架构都是为了解决眼下和未来一段时间的问题,核心价值在于满足的业务的需要,同时考虑业务未来一段时间的增长。所以,任何架构设计都不可能一开始就完美,除非业务的规模不再增长,只能通过不断的迭代升级,才能变得越来越强大。
技术架构一遍经过三个阶段,创建期、瓶颈期和退化期,就像下面这张图所画:
架构在创建器满足业务需求,在创建期迅速开发,迅速迭代,快速满足业务需要,当达到一定服务能力之后进入缓慢迭代的成熟期(瓶颈期),当为某个时间点遇见到现有的系统架构已经无法满足未来的业务需要时,就要准备研发新的架构,再替换老的系统架构,此时老的系统架构进入衰退期,新的架构进入创建期,直到完全被新的系统架构替代。比如,本书中介绍的电商平台,初期使用单机架构模式,等到业务规模不断扩大,访问量、数据规模逐渐变大时,老的单机架构在未来已经无法满足业务需求了,就是从单机架构过渡到分布式架构。
当然,引起架构衰退的原因不仅仅是服务能力的不足(还包括现有架构满足不了业务功能),还可能是编码问题,文档问题,导致后来的人员对既有系统难以维护,开发升级效率越来越低,这种情况在实际工作中很常见。