如何从零构建一个系统?

曾多次参与系统的从0到1构建工作,这里分享些经验总结:如何开始呢?

1 定义系统边界

梳理系统的相关方:谁使用这个系统、谁从这个系统受益、谁为这个系统埋单…,明确各方对系统的要求。确定系统能力边界,清楚哪些功能不做,哪些功能应该做。

该过程可以使用用例图描述系统,方便沟通。

2 分析划分业务模块

分析业务逻辑,划分出相应模块。借助方块架构图描述模块依赖关系,时序图描述不同业务场景下模块调用关系,可以帮助分析模块拆分合理性。

架构图时序图是沟通工具,用来帮助我们快速聚焦问题,架构可视化,不是目标产物。不要为了画图而画图。

3 细化模块接口设计

经过步骤2,对系统模块划分和依赖关系已经有较清晰且一致的认识,下一步就是细化接口设计,输出接口文档。接口文档可以使用伪代码,或者某种与实现技术无关的文档,比如proto3、swagger。

我经验是,过早的技术选型很容易踩坑。技术选型一旦确定,很难更改。随着对系统的深入理解,早期拍脑袋决定的技术选型可能不再合适。应该尽量延迟技术选型:采用什么编程语言、什么框架、什么协议、什么存储引擎…

4 分模块实现设计

清楚模块职责和接口后,可以考虑模块实现设计。考虑技术选型、存储模型、算法设计等。
好的设计应该是可测的,应该把可测性作为一个指标加入设计中。

5 跑起来,验证

最好一步,把分模块实现好的系统组合并跑起来。验证各项功能和性能指标,调整优化。


如何从零构建一个系统?
https://a3d21.github.io/2023/02/06/2023-02-06-how-to-build-a-system-from-scratch/
作者
a3d21
发布于
2023年2月6日
许可协议