首页 > 其他分享 >再聊对架构决策记录的一些思考

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

时间:2024-03-11 10:11:36浏览次数:18  
标签:ADR 系统 决策 再聊 技术 思考 架构 团队

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有着非常高的潜在价值,极度推荐大家在团队中进行实践。保持文档结构的简洁轻量和讨论的开放性,团队会非常乐于接受和参与这种高效的决策程和知识同步过。

标签:ADR,系统,决策,再聊,技术,思考,架构,团队
From: https://www.cnblogs.com/Jcloud/p/18065448

相关文章

  • 【秒杀架构】
    参考:https://www.bilibili.com/video/BV1jA411k7eG?p=9&vd_source=898d5514be58985430a49b46d5500c13 场景:设计目标:最小改动保证秒杀时间的流量洪流不会冲垮服务器整体思路: 1、流量页面如何将请求拦截在上游?静态请求动态请求:  下单页面......
  • 【游戏设计随笔06】关于《塞尔达传说》的迷宫设计(dungeons design)的一些思考
    在塞尔达里,迷宫是多个小房间的组合,有些锁着的小房间是需要“小钥匙”这一道具去解锁才能通行的。关卡设计问题的出现:初代的塞尔达中,钥匙可以在整部游戏的任何门上使用,这导致了各种麻烦的情况。通常你持有的钥匙是大于需要解锁的房间的,因为随着游戏进程的推进,一些需要解......
  • 解密prompt系列26. 人类思考vs模型思考:抽象和发散思维
    在ChainofThought出来后,出现过许多的优化方案例如Treeofthought,GraphofThought,AlgorithmofThought等等,不过这些优化的出发点都更加"MachineLike",而非"HumanLike",哈哈不是说机器化不好,仅仅是对AGI的一些个人偏好而已。所以如果我们从人类思考的角度出发,能否把当......
  • Redis 架构深入:主从复制、哨兵到集群
    大家好,我是小康,今天我们来聊下Redis的几种架构模式,包括主从复制、哨兵和集群模式。前言:设想一下,你的咖啡馆在城市中太受欢迎,导致每天都人满为患。为了缓解这种压力,你决定在其他地方开设分店,这样顾客就可以在附近的分店享受咖啡,而不必涌向一个地方,这就好比Redis的主从复制,让......
  • ISA指令集架构简介与蜂鸟E203处理器公开资料整合
    ISA(InstructionSetArchitecture)指令集架构可分为CISC与RISC:CISC(ComplexInstructionSetComputer)计算机复杂指令集,不仅包含了处理器常用的指令,还会含有许多不常用的特殊指令。这会导致其指令集的数目较多,故称为复杂指令集。RISC(ReducedInstructionSetComputer)计算机精简......
  • 基于EXO λ驱动的可编程分子信号传输架构和DNA电路中的反应物再生策略四节点DNA电路与
    为了解决过程中信号衰减的问题,利用独特的环形空间拓扑结构和EXOλ的水解特性,实现了EDRR策略EXOλ的特性如图1a所示,当EXOλ水解底物,锥形通道的宽端,可以从5'的钝端或凹端嵌入DNA链,从而连续和快速水解,在5'端有磷酸修饰的DNA链,而互补链则从锥形中穿出通道。它的环形空间拓扑结......
  • 使用 Amazon Bedrock 上的 Claude 3 将架构图转换为 CDK/Terraform 代码
    概述在云原生领域,基础设施即代码(IaC)对于开发人员和DevOps团队来说是一种不可避免的实践。最近,AmazonBedrock上线了Claude3Sonnet模型和这个模型的图像转文本能力。这无疑开启了一个新时代,也就是实现架构图与IaC工具的无缝融合,如亚马逊云科技云开发工具包(CDK)或......
  • Linux架构24 ansible之get_url模块, 服务管理模块, 用户管理模块, 定时任务模块, 挂载
    3.get_url模块-name:Downloadfoo.confget_url:url:http://example.com/path/file.confdest:/etc/foo.confmode:'0440'checksum:md5:b5bb9...#公司内部库,验证文件是否为要求的文件checksum:sha256:b5bb9...#另一种验证方式......
  • 软件设计架构
    软件设计架构模式在软件工程中起着至关重要的作用,它们为开发者提供了一种高层次的结构和组织方式,以确保软件系统的可维护性、可扩展性和灵活性。以下是一些常见的软件设计架构模式:分层架构(LayeredArchitecture):这是最常见的架构模式之一,通过将系统划分为多个层次或层级,每层负......
  • MySQL(一):整体架构
    1、整体概述  MySQL是由连接池、管理工具和服务、SQL接口、解析器、优化器、缓存、存储引擎、文件系统组成。1.1、ConnectionPool-连接池创建数据库连接是一个耗时的操作,连接池的作用就是将这些连接缓存下来,再次访问数据库时,可以直接用已经建立好的连接,提升服......