星驰编程网

免费编程资源分享平台_编程教程_代码示例_开发技术文章

技术人必备!架构设计文档模板示例,从 0 到 1 梳理系统设计

大家好,我是大龄码农,今天一起聊聊架构设计的规范:设计规范及评审规范,欢迎一起探讨、指正。

架构设计是整个项目的灵魂,好的设计往往能够事半功倍,这也是我一直提倡的要花超50%时间在架构设计文档上,做到慢也是快。

缺少架构设计规范会引发哪些问题呢?

  • 当你自己在设计架构文档时,是不是想到哪,设计哪?缺少固定的规范,往往丢三落四。
  • 当你在评审别人的架构文档,是不是总是被别人所牵引,你只能基于别人的大纲,思考实现细节是否可行?而这往往会遗漏重要的架构点。

以下为本人自己总结且常用的架构文档模板及要点说明,不管自己设计方案还是评审别人方案,都可以按照纲要判断是否遗漏。

架构文档示例

1 背景

  • 业务诉求或遇到的问题
  • 预估价值
  • BRP 及 PRD 及项目链接

2 现状

2.1 整体交互

涉及系统的宏观架构,为架构师或技术经理早期规划

2.2 领域模型

涉及系统的领域模型,为架构师或技术经理早期规划

2.3 分层能力

涉及系统的分层能力,为架构师或技术经理早期规划

2.4 数据结构

涉及系统的数据结构,一般有技术文档沉淀的话可直接拿过来用

2.5 交互时序

涉及业务流程的详细交互,一般有技术文档沉淀的话可直接拿过来使用;该时序为分层能力的细化流程,但需要在交互上备注对应的能力名称。

要点说明

  1. 黑色线表示强依赖,灰色线表示弱依赖,实线为同步,虚线为异步
  2. 交互对象至少涉及端 / 用户 / JOB/MQ/ 二方服务、内部服务、数据库、三方系统

2.6 核心类图

涉及服务的类图,一般有技术文档沉淀的话可直接拿过来使用;通过类图能够找到预留的扩展点或找到需要更改的类,类图可以比较粗略,需要包含核心流程上的类和方法,通过类图能够找到分层能力上的方法。

2.7 接口依赖

2.7.1 依赖接口

涉及业务流程依赖的外部接口,具体到接口所属团队、服务名称和接口名称即可,能与上面的交互时序关联上

2.7.2 对外接口

涉及业务流程对外暴露的接口,具体到服务名称和接口名称,能够与上面的交互时序和类图中接口对应上

2.7.3 消息依赖

涉及业务流程依赖的业务系统消息、binlog 消息,消息可以是外部的消息,也可以是内部发送的消息。能够与上面的交互时序对应上,同时能够在分层能力中找到对应的消息

2.7.4 对外消息

涉及业务流程对外发送的消息,包括业务系统消息、binlog 消息,能够和交互时序对应上,同时在分层能力找到对应的基础设施能力

3 方案

3.1 整体交互

整体交互有变动时必须有,更改后沉淀下来,作为下次现状使用

3.2 领域模型

领域模型有变动时必须有,更改后沉淀下来,作为下次现状使用

3.3 分层能力

分层能力有变动时必须有,更改后沉淀下来,作为下次现状使用

3.4 数据结构

数据结构有变动时必须有,更改后沉淀下来,作为下次现状使用

3.5 交互时序

红色线表示强依赖,蓝色线表示弱依赖,实线为同步,虚线为异步,如果为在现状交互时序上改动,需要基于上面现状时序加上变动

3.6 核心类图

红色表示新增,如果为现状类图上改动,需要基于上面现状加上变动

3.7 兼容方案

3.7.1 数据兼容

当数据结构发生变动时,需要考虑历史数据的兼容方案,为了保证系统的简洁性,不能一直做兼容方案,可以考虑数据清洗将数据转为新的格式

3.7.2 接口兼容

当涉及接口变动时,尤其是对 APP 端的接口,需要考虑接口的兼容,接口改动需要遵循开闭原则,只能新增出入参,不能改动出入参,甚至不能改变出入参的语义

3.8 监控方案

3.8.1 业务监控

对于比较重要的业务,需要通过埋点方式进行业务的监控,如果公司有统一的可观测平台,直接使用其扩展进行埋点,如果公司没有,建议异步方式对异常增加消息推送

3.8.2 数据对账

核心业务的交互,除了在链路里增加一致性方案(幂等 + 重试)保障数据一致性外,建议增加离线的数据对账,进一步确保系统的数据一致性

3.8.3 实时资损防控

如果改造涉及资损,如:结算、打款、退款等业务,建议接入资损平台,前提是有资损平台

3.8.4 接口审计

对于一些对外暴露的接口(如果获取登录验证码、无登录获取商品列表等)及核心的后台操作接口(如变动计费规则、变动权限、查询人员列表等),需要讲接口的调用接入审计日志,方便安全团队对其进行审查

3.9 影响范围

3.9.1 功能测试范围

开发人员需要将涉及的变动点列举出来,在测试用例评审时与测试人员的功能场景进行碰撞比对,从而保证不遗留测试场景

3.9.2 性能测试范围

针对变动的接口或流程,如果线上访问量比较高,需要进行性能测试,此功能需要开发人员进行评估

3.10 发布方案

3.10.1 发布脚本

配置脚本、TOPIC 申请、数据库脚本,需标明脚本执行的时机(在服务发布前执行还是服务发布后执行及脚本的执行顺序)、新建表标明数据的归档周期

3.10.2 发布顺序

顺序有两个,如果是跨部门的需求,需要评估团队的发布顺序,其次再评估内部服务之间的顺序

3.10.3 灰度方案

对于影响较大的变动,需要设计切流方案(切流的规则)及周期

3.11 接口文档

列举涉及的接口并以超链接方式跳转到接口详页,接口名称需要与分层能力中的能力对应上,另外接口文档一定要在正式开发前进行评审,避免出现重复接口、不规范的接口

4 排期

排期首先要按照阶段进行划分:方案设计及评审、开发、测试(含性能测试)、上线、灰度。

其中开发阶段需要将任务拆分到细化后的功能点级别,保证:单个功能点不占用太长开发时间、功能点之间可并行开发,以便多人开发时能够互不干扰。以支付宝账单对账功能为例,可拆分为:支付宝账单接口对接及数据入库、本地数据与账单数据双向比对、对账告警功能、差异数据页面展示、页面差异数据处理、页面重新对账。

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言