知识卡片

架构设计文档的完整结构:总体方案到演进规划

结构图卡

内容

备选方案评估完成、确定要落地哪个方案后,接下来要写的是”架构设计文档”,用来详细描述细化后的具体方案,整体结构分四大部分。第一部分是总体方案:需要从整体上描述方案的结构,核心内容就是架构图以及针对架构图的描述,包括”架构总览”(给出架构图和架构描述,例如消息队列案例中给出的关键设计点:采用数据分散集群架构、每个分组一主一备MySQL、正常情况下只有主服务器对外提供读写服务、客户端采取轮询策略读写)和”核心流程”(列出消息发送流程、消息读取流程等关键业务流程的具体步骤)。第二部分是详细设计:需要描述具体的实现细节,一般按复杂度维度展开——高可用设计(例如消息发送/存储/读取各自的可靠性保障机制)、高性能设计、可扩展设计(如果方案本身不涉及可扩展性,也要明确写”无”,而不是完全不写这一节)、安全设计(例如身份识别和队列权限两部分的权限控制机制)、其他设计(例如是否要接入公司已有的运维平台、监控平台等杂项考虑点)。第三部分是部署方案:主要包括硬件要求、服务器部署方式、组网方式等,例如消息队列案例中提到消息队列服务器和数据库服务器采取混布方式(消息队列是CPU密集型,MySQL是磁盘密集型,二者混布互相影响概率不大),以及具体的硬件配置要求(32核48G内存512G SSD,用物理机而非虚拟机,因为动态扩容需求不高但性能要求高)。第四部分是架构演进规划:通常规划和设计的需求比较完善,但如果一次性全部做完,项目周期可能会很长,因此可以采取分阶段实施的方式,明确写出第一期做什么、第二期做什么,例如消息队列案例分三期——第一期实现消息发送和权限控制(预计3个月)、第二期实现消息读取(预计1个月)、第三期实现主备基于ZooKeeper的切换功能(预计2周)。

结构图

flowchart TB
  A["架构设计文档四大部分"]
  A --> B["①总体方案<br/>架构总览(架构图+描述)+核心流程"]
  A --> C["②详细设计<br/>高可用/高性能/可扩展(无也要写)/安全/其他"]
  A --> D["③部署方案<br/>硬件要求/部署方式/组网方式"]
  A --> E["④架构演进规划<br/>分期实施,明确每期目标和预计时间"]
  B --> C --> D --> E

参考来源

- 位置:《从零开始学架构》第50讲《架构实战:架构设计文档模板》"架构设计模板"(源文件:_epub-src/OEBPS/text00003.html) - 结论依据:原文标题依次给出"总体方案""详细设计""部署方案""架构演进规划"四大部分,并逐一给出各部分应包含的内容,例如"总体方案需要从整体上描述方案的结构,其核心内容就是架构图,以及针对架构图的描述""通常情况下,规划和设计的需求比较完善,但如果一次性全部做完,项目周期可能会很长,因此可以采取分阶段实施",直接支撑本卡结构图。 - 原始内容:总体方案需要从整体上描述方案的结构,其核心内容就是架构图,以及针对架构图的描述,包括模块或者子系统的职责描述、核心流程……通常情况下,规划和设计的需求比较完善,但如果一次性全部做完,项目周期可能会很长,因此可以采取分阶段实施,即:第一期做什么、第二期做什么,以此类推