IT项目架构设计文档编写规范

项目流程中技术评审环节,需要做架构设计评审,本文档主要讲解架构设计文档编写原则,约束架构设计文档的格式、内容,以达到提高技术评审质量,提升项目开发质量的目的。

编写流程

首先技术负责人,做为一个项目的技术决策人员,需要了解业务需求,按如下步骤组织编写技术评审文档:

  1. 了解业务需求和现有系统架构,按架构原则整理项目架构相关文档
  2. 完成架构相关考虑后,按需求对项目拆分功能模块,并对每个模块标注必须设计点
  3. 按人员情况将功能模块分配到人,组织编写所有功能模块的详细设计
  4. 验收每个模块的详细设计是否达标
  5. 所有模块详细设计完成后组织技术评审

编写原则

架构设计文档主要分为两个层面,架构层面和设计层面。

架构层面原则

  1. 项目架构描述:如果是迭代项目,现有项目架构情况需要描述清楚,可以传送到固定的项目架构文档,不用每次都写
  2. 路由规划:相关功能的路由调用链路,域名、SLB、nginx、gateway、微服务链路
  3. 安全规划:内外网功能划分,鉴权、反黑产等
  4. 性能&可用性规划:QPS、限流、集群配制、资源规格等
  5. 扩展性规划:根据后续项目的迭代计划,要预留哪些扩展考虑哪些问题
  6. 上线规划:新老版本兼容问题、灰度计划、试点计划等
  7. 事故恢复:如何保障异常出现后恢复系统和数据,要求第一层兜底
  8. 门店服务要按非可靠网络下大型分布式系统架构,考虑弱网模式、断网模式、断电重启、磁盘损坏等场景下数据和服务的可靠性。

以上为架构层面主要考虑的内容,各项目技术负责人可以根据实际情况补充,如不需要相关设计标不需要相关设计即可,但必须标注以示思考过相关层面问题。

设计层面原则

  1. 从需求角度用技术语言简要说明需求和实现的大体逻辑。
  2. 从系统角度说明要修改哪些系统的哪些功能。
  3. 从接口角度说明要新增/修改哪些微服务的哪些接口。
  4. 从数据角度说明涉及数据的来源、数据量大小、数据一致性等方面情况。
  5. 从事故角度说明异常出现后如何恢复系统和数据,要求第一层兜底

接口注意事项

接口分为外部接口和内部接口。

外部接口是提供给网关和C端使用的接口,修改出入参必须在文档中说明。

外部接口的新增和修改会影响前端上线发布,要考虑兼容性和是否影响上线。

内部接口,因为可以同时上线,没有第三方调用,需要考虑历史数据的兼容性。

数据注意事项

数据来源:数据库、es、redis、第三方接口

涉及数据查询必须提供生产数据量和未来数据量变化的评估,主要判断有没有性能问题。

新增或修改数据来源必须有详细说明:

  1. 数据库要有字段来源说明或SQL语句
  2. ES要有索引和字段说明
  3. redis要有KEY和值格式说明
  4. 第三方接口要有出入参数变化说明

文档编写

对于核心的模块或接口,需要以文字、时序图、流程图的方式做出详细设计。

文字主要说明算法步骤。

时序图主要说明一次调用的中间过程和涉及系统。

流程图主要说明业务的流程变化。

技术文档模板

系统架构部分

项目架构

如无修改可以连接现有文档

路由架构

如无修改可以连接现有文档

安全架构

如无修改可以连接现有文档

性能和可用性

说明项目需求在计算、存储、可用性上的问题和解决方案,如无写无问题。

扩展性

说明项目需求在计算、存储、可用性上的问题和解决方案,如无写无问题。

上线规划

新老版本兼容问题、灰度计划、试点计划等

事故恢复

架构层面的事故恢复机制,如无修改可以连接现有文档

功能详细设计

功能模块1(张三)

需求1

技术负责人标注:需要特殊说明的功能点和要求

需求简述:

功能开发逻辑:

  1. 功能层面:以文字、时序图、流程图等方式说明功能的流程步骤
  2. 系统层面:在哪几个系统上新增或修改的接口清单
  3. 数据层面:存取了哪些数据,数据怎么流转的,数据的关系,数据量大小,是否有性能问题
  4. 外部交互:是否是外部接口或三方接口,迭代扩展如何保障

需求2

技术负责人标注:需要特殊说明的功能点和要求

需求简述:

功能开发逻辑:

  1. 功能层面:以文字、时序图、流程图等方式说明功能的流程步骤
  2. 系统层面:在哪几个系统上新增或修改的接口清单
  3. 数据层面:存取了哪些数据,数据怎么流转的,数据的关系,数据量大小,是否有性能问题
  4. 外部交互:是否是外部接口或三方接口,迭代扩展如何保障

功能模块2(李四)

需求1

技术负责人标注:需要特殊说明的功能点和要求

需求简述:

功能开发逻辑:

  1. 功能层面:以文字、时序图、流程图等方式说明功能的流程步骤
  2. 系统层面:在哪几个系统上新增或修改的接口清单
  3. 数据层面:存取了哪些数据,数据怎么流转的,数据的关系,数据量大小,是否有性能问题
  4. 外部交互:是否是外部接口或三方接口,迭代扩展如何保障

需求2

技术负责人标注:需要特殊说明的功能点和要求

需求简述:

功能开发逻辑:

  1. 功能层面:以文字、时序图、流程图等方式说明功能的流程步骤
  2. 系统层面:在哪几个系统上新增或修改的接口清单
  3. 数据层面:存取了哪些数据,数据怎么流转的,数据的关系,数据量大小,是否有性能问题
  4. 外部交互:是否是外部接口或三方接口,迭代扩展如何保障