再聊对架构决策记录的一些思考

京东云开发者
• 阅读 297

1 引言

第一次在社区发文聊ADR(架构决策记录)是在2022年8月份,在文章( 轻量级ADR机制 )中,详细介绍了以下几个主题:

•团队研发面临的主要问题

•ADR的结构剖析

•ADR的存储形式

•ADR在研发流程中所处的位置

•ADR常见的误区与疑问

在实践中发现仍然有一些普遍性问题与挑战可以探讨。

2 研发团队一些普遍现象

视角一:架构决策缺失是问题长期存在的普遍问题,但团队普遍缺少治理

普遍存在的现象是团队对系统演进过程中的关键架构决策缺乏记录,虽然需求迭代过程中技术团队会产生系列的“技术方案”,依靠这些“技术方案”追溯系统的关键决策和演进依然面临挑战:

•其一,“技术方案”一般会随着不同需求迭代散落在文档系统中,不便于整合

•其二,技术方案是设计决策的“快照”信息,其体现的是决策的结果,并不能反映决策的演进过程和还原决策的上下文

•其三,技术方案一般是长文档,其“过期和不一致”的概率较大,多数情况下团队缺少对历史技术方案的维护修正。

组织架构及业务调整,团队面临接手新的系统,或者新的团队成员的加入,面对遗留/新的系统,快速熟悉系统是高效支持迭代建设的前提。但,大多数情况对遗留系统的了解过程困难重重,很多时候依赖于可能已经过期和散落的技术方案(技术视角),或者不得不梳理系统代码以获得更多系统知识。

对于技术而言,如果能有清晰明确的决策记录一定程度上能够加速了解系统的效率,降低认知成本。不论是从对现有系统知识的沉淀梳理,还是团队间技术决策的同步,亦或是在系统交接场景下提升信息传递效率,ADR都是极具性价比且极易落地的实践。

视角二:对ADR的排斥

很多同学“排斥”ADR的原因常见的是:

其一:文档化与技术人员的第一直觉相悖:“不太愿意花太多的精力在文档撰写上”

•其二:排斥“评审”:认为ADR的评审是一种强流程的正式评审,大家不愿意参加“评审会”,发起人也“不愿意抛出自己的决策让大家在会上讨论”。这显然与ADR机制相悖,本质上,团队实践的应当是一种非常轻量级的、不应有太多负担的架构决策机制,大家头脑风暴式的讨论、共识。

•其三:不确定什么场景下需要写ADR,会觉得实践过程无准则可依

对于原因一和原因二的解决方式非常简单:保持ADR模版的简单和轻量,打破对文档化的固有认知

对于原因三,其实多数情况下系统负责人可以明确的感知哪些决策对团队或系统的影响“比较大” ,比如:

•新建子系统或系统职责合并

•引入新的技术组件/框架或者中间件等基础设施

•工程结构的重大调整

•代码规范的变更

•其他

视角三:技术氛围不够开放,团队自组织程度较低

ADR是一种架构决策,与参与系统建设的每个人息息相关,其关键价值不仅仅在于决策的留存和追溯,更为重要是在于通过干系人的讨论使得决策知识在团队间高效同步。大家对决策的制定共同参与、共识,越开放的氛围越有利于对决策充分探讨,同时也有利于决策有效落地。

同时,敏捷文化推行的轻文档机制与轻量级ADR并不冲突,ADR与敏捷文化相契合,在“自组织”团队中天然的适合引入ADR。

3 建议

建议一: 先做起来 ,写一个ADR邀请团队成员一起讨论、决策共识

再聊对架构决策记录的一些思考





建议二:ADR保持**足够轻量** ,在体现其价值的同时尽量减少团队负担



再聊对架构决策记录的一些思考





建议三:构建**开放**的技术氛围【重要】

讨论氛围一定要保持开放,切忌一言堂、强压式的决策,让团队成员都参与进来,抛出自己的观点或疑问,直到决策共识、通过

4 结语

不论是从管理视角还是技术视角,ADR有着非常高的潜在价值,极度推荐大家在团队中进行实践。保持文档结构的简洁轻量和讨论的开放性,团队会非常乐于接受和参与这种高效的决策程和知识同步过。

点赞
收藏
评论区
推荐文章
作业帮上万个 CronJob 和在线业务混部,如何解决弱隔离问题并进一步提升资源利用率?
作者吕亚霖,作业帮基础架构架构研发团队负责人。负责技术中台和基础架构工作。在作业帮期间主导了云原生架构演进、推动实施容器化改造、服务治理、GO微服务框架、DevOps的落地实践。别路,作业帮基础架构高级研发工程师,在作业帮期间,负责多云K8s集群建设、K8s组件研发、Linux内核优化调优相关工作。背景作业帮在云原生容器化改造的过程中,随着
咕咕鸡 咕咕鸡
1年前
风控核心子域——名单服务构建及挑战
名单服务是风控架构中重要子域,对风险决策的性能、用户体验、成本管控、风险治理沉淀都有重要影响,本文将详细介绍名单服务设计思路和实现。
轻量级的架构决策记录机制
ADR是一种性价比非常高的架构决策文档化实践,团队引入和实践成本很低,却能为团队带来极大收益!
Wesley13 Wesley13
2年前
Janus网关的集成与优化
本文由学霸君音视频架构师李桥平在LiveVideoStackCon2020线上峰会的演讲内容整理而成,内容主要包括Janus网关的集成过程以及集成过程中遇到的一些问题。文/李桥平整理/LiveVideoStack大家好,我是李桥平,来自学霸君上海互动产品研发中心,本次分享的主题是Janus网关的集成与优化。
Stella981 Stella981
2年前
Picasso:开启大前端的未来
“道生一,一生二,二生三,三生万物。”——《道德经》Picasso是大众点评移动研发团队自研的高性能跨平台动态化框架,经过两年多的孕育和发展,目前在美团多个事业群已经实现了大规模的应用。Picasso源自我们对大前端实践的重新思考,以简洁高效的架构达成高性能的页面渲染目标。在实践中,甚至可以把Native技术向P
Wesley13 Wesley13
2年前
JS 判断各种设备,各种浏览器
话不多说,直接看代码1、区分Android、iphone、ipad:varuanavigator.userAgent.toLowerCase();if(/android|adr/gi.test(ua)){//安卓}elseif(/\(i^;;(U;)?CPU.
Wesley13 Wesley13
2年前
vivo 商城架构升级
一、前言在前面几篇文章中,相信大家对vivo官网商城的前端架构演变有了一定的了解,从稳步推进前后端分离到小程序多端探索实践,团队不断创新尝试。在本文中,我们来分享一下vivo官网商城在Node服务端渲染(ServerSideRendering,SSR)方面的实战经验。本文主要围绕以下几个方面进行阐述:CSR与SSR的对比
Stella981 Stella981
2年前
Git在eclipse中的配置详细记录
一\_安装EGIT插件(https://www.oschina.net/action/GoToLink?urlhttp%3A%2F%2Fblog.csdn.net%2Flaizhenhai88%2Farticle%2Fdetails%2F7233578)!(http://static.oschina.net/uploads/img/20
架构师日记-到底该如何搭建一个新系统 | 京东云技术团队
本文详细介绍了搭建系统工程架构时需要关注的几个重要方面。基于产品的价值,做出决策。并从系统工程架构的演进、技术方案的选型、系统规范共识的达成等方面入手,对实施过程中的常见问题给出了解决思路。