查看原文
其他

关于系统设计的两点思考

崔哥看世界 崔博效率手册 2022-12-24

这两天和一些开发和架构同学,聊到系统设计的几个实际问题,并和一些用户做了交流。


其实有些问题在我之前的文章《系统设计的十条原则》里面已经有所涉及,不过到具体的实施场景上,又有很多细节的因素需要考虑。


1、如何在架构设计时兼顾模块化和性能?


模块化、组件化、“微服务”式的构建方式,有助于各层之间的脱耦,和未来的产品化、系列化(即将经常需要定制、修改的前端和相对稳定的后端充分脱钩,可能需要用BFF这样的机制)。但是这样做也是有成本的,就是性能会降低。


一体化的系统性能显然更高,苹果M系列的芯片设计现在又走回了这条路,就是一个例子。


Apple M1将中央处理器、输入输出、安全等功能整合在同一块SoC芯片当中,提升了集成能力,提升了性能和能效。Apple M1还采用了统一内存架构(一种全整合定制模块),将一切都融入同一个高带宽、低延迟的内存池中。所有的SoC技术都可以访问同样的数据,无需在多个内存池之间来回拷贝。


苹果M1芯片实现了高度集成


这里面其实就要看,性能是否是整个系统的瓶颈?


实践证明,对于绝大部分实际应用系统来说,对性能的要求远远没有高到这个程度,而且“性能优化”总是有办法的(陈老师观点),但是架构设计一旦出问题,修改的成本会非常高。


所以,是先学会走好路,还是先考虑怎么跑步,我认为,先把路走好更为重要。


2、先打地基,还是先做样板间?


经常出现的情况是,研发团队花了很多时间去“打地基”,建设底层和开发后端,但是前端的开发比较滞后。


这可能既有资源方面的限制,可能也有战略上的考虑,觉得前端相对比较容易调整。但是事实上给客户造成的感觉,就是系统开发一直没有进展,因为总是看不到实际可用的产品。


这时候不能怪客户不懂开发的原理,而是应该理解到,客户这样考虑也是有道理的,甚至是很必要的。即使地基打得再牢,如果在最后前端开发时,界面不满意返工,会导致整个工期的延误。


打个比方,在打基地的同时,也要同时建设样板间,根据市场、客户的反馈,及时调整户型设计,而不是等到快要交付楼盘了,才开始设计,这时候如果发现市场偏好与预期不符,时间已经来不及了。


需要频繁地、尽快地采集用户对于界面的反馈,而不是等到最后阶段。这实际上就是“敏捷”出现的背景之一,可以参考我的文章《我的产品研发工作流程图》。



关于研发、架构、系统设计,最近还有很多其他的想法,后续我再陆续写下来,汇总到公众号上。


近期文章列表:

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存