前提
架构设计的前提都是与业务相结合的,任何完全抛开业务的架构都是在空谈,或者说没有意义的,每个业务系统都有自己的特点,不可一概而论。
- 如果是做公有云化服务的,服务群体属于普通公司或者部门这种开发者,他们可能对于云的稳定性和易用性有要求。
- 如果是做电商推荐的系统,服务群体属于购买商品的用户,可能对于推荐商品的准确性,模型反馈速度有要求。
设计内核
- 第一,确认痛点是啥:架构设计是为了解决问题而产生的,所有的设计都不是凭空想出来,是需要根据我们当前需要解决的问题
- 例如:延迟过高是我们当前最重要解决的问题,那Serverless 和 ServiceMesh 其实本质上跟这个都没啥关系,我们需要考虑的是热点问题在哪里,从而才能确认解决问题的手段
- 第二,调研大家是怎么解决问题的: 先进的技术是手段,了解清楚每种相关技术背后的逻辑,架构设计中任何特性化设计的关键点预期都是为了解决你的业务场景中遇到的一个或者几个问题
- 比如说我们用Serverless这个手段是要解决极致的维护效率 和 资源利用率的效率的问题。
- 比如用服务队列目的是异构、解耦、削峰。
- 第三,确认的自己的方案:整个架构设计中最核心的点就是"折中",也就是我们所说的舍得,这就要求我们架构设计既要知其然也要知其所以然, 绝对不能生搬硬套,本质上就是人力和预期效果之间均衡的考虑:
- 基于当前业务特点:比如基于当前的业务特点,如果使用100%的新功能的效果,可能会增加1%的不稳定风险, 但是如果使用90%的效果,不稳定性风险小于0.01%, 对负责同学来说如何取舍。
- 基于过去的历史背景:比如完全套用新系统需要相关对应的业务架构的改造成本1年的时间,但是如果熟知原理构建一个类似的功能集合可能需要1个季度的时间可以达到90%的效果,对负责同学应该如何取舍。
结论
解决一切的完美,只有当下最适合的那个方案和手段。