示例报告
架构评审报告
这是架构评审结束时您将收到的报告的精简示例。正式报告包含相同的章节;各项发现会附上代码示例、查询计划和截图作为依据。
这是一个示例。 公司、系统和所有数字均为虚构,不基于任何客户数据。场景设定:一家开发 B2B 订单与库存管理软件的公司,软件团队共 8 人。
1. 管理层摘要
- 系统能够承载当前的负载,但一旦客户数量翻倍,报表和订单流程预计将成为瓶颈。
- 最紧迫的风险在于安全性和业务连续性:数据库备份从未做过恢复测试,管理后台对所有人开放。
- 无需重写。建议的路径是在 6 个月内将现有的单体应用拆分为模块,并逐步加固。
2. 范围与方法
- 周期
- 5 个工作日
- 审查范围
- 主应用的代码库(约 12 万行)、数据库结构、服务器与部署基础设施
- 访谈
- 与技术负责人、两名开发人员和运维负责人进行了 4 次访谈
- 工具
- 代码审查、查询计划(EXPLAIN ANALYZE)、依赖与安全扫描、负载分析
3. 发现
按影响和紧迫程度排序。
- #1严重业务连续性预计工作量: 1 天
每天都有备份,但从未做过恢复测试;备份与数据存放在同一台服务器上。
影响:一旦磁盘故障,数据和备份将同时丢失。
建议:将备份转移到独立位置,并每月进行一次恢复测试。
- #2严重安全预计工作量: 2 天
管理后台直接暴露在互联网上,没有双因素认证,也没有登录尝试次数限制。
影响:暴力破解攻击可能获取全部客户数据。
建议:将后台置于 VPN 或 IP 白名单之后,并增加 2FA 和访问频率限制。
- #3高性能预计工作量: 3 天
月度报表查询对一张没有索引的表进行全表扫描(平均 38 秒)。
影响:报表运行期间,订单页面会变慢。
建议:添加两个复合索引,并改为从夜间预先生成的汇总表读取报表。
- #4高架构预计工作量: 4-6 周
订单、库存和计费代码直接写入彼此的数据表。
影响:一个模块的改动会破坏其他模块;新功能的开发越来越慢。
建议:划定模块边界,模块之间的通信统一经由一个服务层进行。
- #5中维护预计工作量: 2 周
框架落后两个大版本;14 个依赖存在已知漏洞。
影响:无法应用安全更新,而且升级难度每个月都在增加。
建议:先升级依赖,再逐个版本升级框架。
- #6中团队预计工作量: 2-3 周
自动化测试覆盖率为 8%;部署靠手工完成,且依赖一个人。
影响:此人不在时任何内容都无法上线;缺陷由客户先发现。
建议:为关键流程编写 E2E 测试,并建立自动化部署流水线。
4. 目标架构
- 仍保持为一个应用(模块化单体);订单、库存、计费和报表分别是独立模块。
- 报表从不给主数据库增加负载的汇总表中读取数据。
- 管理后台位于内网;部署自动化且可回滚。
5. 迁移计划
前 30 天
消除风险
- 备份与恢复测试
- 管理后台安全
- 加速报表查询
1-3 个月
夯实基础
- 依赖与框架升级
- 关键流程测试
- 自动化部署流水线
3-6 个月
拆分为模块
- 拆分订单与库存模块
- 将计费迁移到服务层
- 架构文档编写与团队交接