3.1.2 设计模式是可复用的经验模块

在整理云平台上的行业解决方案、技术解决方案时,需要把业务场景和痛点提取出来,在很多行业中都有相似的情况。例如,新零售行业需要考虑业务扩展、如何应对“双11”等流量高峰、电商数据灾备、电商平台安全防护等,在游戏行业也需要考虑相同的问题,新游戏发布会带来流量高峰,游戏行业遇到的DDoS攻击尤为严重,游戏行业还要考虑大量玩家同时在线的高并发性、游戏出海时为海外玩家提供更流畅的体验等问题,在跨境电商领域也会遇到同样的问题。传统企业面临着本地数据异地备份至云端的挑战,新零售行业也遇到将本地数据中心的业务扩展至云端要应对额外的业务流量、离线分析日志、扩展本地数据中心的安全防护能力等问题。在大多数应用上,云解决的是同一类问题,因此我们着手抽取共性的技术场景、问题,并整理对应的解决方案,也就是本书中的架构设计模式。

我们从上到下,也就是从宏观行业应用剖析到了微观的解决方案组件,还可以从下到上,将解决方案设计模式组合,形成解决方案,来解决业务场景中的痛点。市面上还是缺少在云端如何部署业务的指导和步骤拆分解析。还需要考虑去除行业属性,对场景痛点和解决方案进行提取和抽象,形成云端架构设计模式。进入云计算的世界,并非只有云主机、存储、网络等产品,还要有结合业务需求的解决方案设计,通过提炼设计模式及架构设计Checklist帮助解决方案架构师来核对解决方案及架构是否合理。

我们已经熟悉设计模式是围绕架构设计的6大原则提炼而得出的经验,那我们来仔细看一下每种设计模式应该包含哪些属性,同时可以参照古代药方的例子,大夫通过“望闻问切”掌握患者病情,然后开具中药药方,如党参、当归各几钱。不同病情开具的药单也不同,但是每味草药是相同的。这就像极了云架构解决方案设计,解决方案架构师通过调研咨询掌握用户的业务需求与痛点,设计解决方案,解决方案相当于大夫的药单,但是设计方案中的最小方案逻辑模块就是设计模式,相当于每味草药。

设计模式应该具备以下特点。

• 设计模式应是可复用的,在多个项目中及不同的解决方案中能够复用。

• 每种设计模式都是解决一类特定问题的方案,跨越范围太广、方案过于细枝末节则不适合复用。