如何做好技术评审

1187 字
6 分钟
如何做好技术评审

当前工作中,平均每周要参加 1~2 次技术评审工作,每个业务线团队的评审会参差不齐。有些评审会信息传递清晰、高效,过程非常愉悦,大家也能参入其中并理解和汲取所需。有些评审会冗长、混乱,那些应该覆盖的信息大量缺失,评审会完成依然“不知其所云”,参与评审的人经常没有参与感。

技术方案的本质是从技术视角出发提供的问题域的解决方案,技术方案评审的本质是一个协作决策过程,通过干系人共同参与,从多维度评估待评审的技术方案是否对问题域提供了合理、可行且最优的解决方案。

评估技术方案的完整性正确性合理性

**完整性 **要求方案不能对要解决的问题有所遗漏,不完整意味着不能满足需求。

**正确性 **要求技术方案能够对问题域提供解决方案。

合理性 则要求不仅仅关乎”正确“和“完整”,其要求在特定的上下文中多个因素间的平衡,比如,时间成本、资源投入成本、技术实现成本等多因素平衡。

技术评审中,以下角色应该各司其职,深度参与

架构师/TL

  • 整体技术方案的架构合理性和一致性
  • 横向架构属性满足度:可扩展性、可维护性、性能、安全、合规性等
  • 对现有系统架构的影响评估
  • 工期与技术成本的合理性
  • 技术栈选型与团队能力的匹配度

产品品经理

  • 功能性需求的实现是否覆盖
  • 用户敏感的非功能性需求的实现是否覆盖
  • 业务概念的一致性
  • 产品视角的安全:敏感信息明文/密文存储与反显;敏感数据泄漏;资损等等
  • 系统状态机是否满足业务状态机要求

测试工程师

  • 方案的可测试性
  • 是否需要压测
  • 变更影响需要回归的范围

技术评审文档模板#

业务上下文

同步业务相关信息,区分事情的重要和紧急程度;包括但不限于业务的整体背景、ROI、长期和短期目标、产品方案等

技术上下文

第一个维度,提供当前系统现状的技术背景说明,包括但不限于整体技术架构、系统部署架构 第二个维度,架构师基于对业务、产品、技术现状及诉求的理解,分析当前重点衍生的技术需求,作为产品需求在技术视角的补充,包括但不限于诸如技术安全、业务安全、性能要求、规模要求,目的是尽量避免技术需求的遗漏,以及为关键的部分预留可迭代的空间;

技术安全:功能安全、数据安全、存储加密、传输加密、签名验证、防伪造和篡改的问题,要防范安全漏洞。

业务安全:多个业务共享数据时需要重点考虑,事务安全、保证一致性、要预防黑产攻击。

概要设计

对系统的宏观问题提供解决方案,典型的元素包括: 1.整体方案选型:基础设施选型、技术栈选型、子系统拆分及交互的高层选型等等

2.应用架构及其变更

3.技术架构:系统稳定性、性能、安全性的方案选型

详细设计

这部分信息是领域实现的设计,关注领域内的元素和他们之间的关系。一般是根据领域进行分工,各领域可以独立完成设计;目的是把控质量、指导开发,降低后期的风险;典型的包含以下元素: 1.领域模型

2.交互流程

3.领域实体状态机

4.数据模型

5.关键协议

6.接口设计

7.监控/验证及灰度

影响分析

描述当前设计方案对系统、业务、团队所带来的影响

风险评估

目的是为了消除问题,避免小问题可能变成大问题,因为在实际情况下,很多出现的问题都是曾经考虑过但是又被忽略的问题

决策过程

技术方案的设计过程是进行权衡分析的过程,方案中应该对过程所做决策进行留存记录。

以上根据实际情况,进行适当裁剪

文章分享

如果这篇文章对你有帮助,欢迎分享给更多人!

如何做好技术评审
https://blog.sephy.top/posts/如何做好技术评审/
作者
虾米
发布于
2024-06-13
许可协议
CC BY-NC-SA 4.0
相关文章智能推荐
1
DDD记录
方法论这篇文章讨论了在 充血模型 和 贫血模型 之间找到平衡点,强调在实践中可以适当妥协。通过 DDD 中的 聚合根 和 领域服务 思想,减少不必要的服务类,简化设计,同时借鉴 CQRS 来优化查询逻辑。文章建议,尽管充血模型增加复杂度,但可以通过适度的领域服务管理和领域事件来达到合理的业务处理和开发效率。
2
Spring 异步事件本地消息表设计
技术分享Spring 异步事件与本地消息表结合的设计方案。实现最终一致性的分布式事务解决方案。
3
在 PVE 上给软路由虚拟机加一个网络 Watchdog
技术分享在 PVE 宿主机上用 Bash 和 systemd timer 实现一个网络 watchdog:先检测公网连通性,连续失败后重启软路由虚拟机,多次自愈无效再升级为重启 PVE 宿主机。
4
命令行自动登录 JumpServer:SSH、TOTP 与密码提示的自动化
技术分享把 JumpServer 登录流程拆成凭据读取和终端交互两层:zsh 从密码管理器安全读取 TOTP seed 与可选密码,expect 只负责响应 SSH 登录过程中的 password 和 Code 提示。
5
git 个人开发工作流
技术分享介绍个人 Git 分支协作流程:以基线分支(如 feature-a)+ 个人开发分支(feature-a-xxx)进行开发,开发分支定期 rebase 同步上游,最终通过 merge(必要时先 squash 整理提交)合回基线;并提供 grebase/gmergebase 等脚本,支持自动推导基线分支、预览计划、带 autostash 的安全 rebase,以及可选 squash/推送/删除分支的安全 merge-back。
随机文章随机推荐
Profile Image of the Author
虾米
coder
分类
标签
站点统计
文章
61
分类
4
标签
52
总字数
64,663
运行时长
0
最后活动
0 天前
站点信息
构建平台
GitHub Actions
博客版本
Firefly v6.13.9
文章许可
CC BY-NC-SA 4.0