写点什么

架构决策记录在 Spotify 的应用

  • 2020-05-13
  • 本文字数:862 字

    阅读完需:约 3 分钟

架构决策记录在Spotify的应用

Spotify 有多个团队使用架构决策记录(ADR)记录他们做出的各项决策。ADR 为 Spotify 带来了许多好处,包括改进新晋开发人员的入职管理,提升组织调整导致项目所有权移交的灵活性,改善团队之间关于最佳实践认知的一致性。


架构决策(AD)是一种软件设计选择,负责处理架构上很重要的功能性或非功能性需求。


由于其天生具备不断演进的特性,所以架构决策记录技术经常在敏捷环境中使用。正如敏捷专家 Michael Nygard 所描述的那样:


敏捷项目的架构必须以不同的方式进行描述和定义。并不是所有的决策都是一次做出的,也不是所有的决策都会在项目开始时完成。


架构决策记录包括可以帮助我们理解特定决策及其结果的上下文信息。此外,他们还可以记录没有做出的决策以及不这样决策的原因。


Spotify 工程师 Josef Blake 表示,决定何时编写 ADR 有时候并不容易,因为当一项决策对一个项目产生重大影响时,可能会存在多种理解方式。根据他的经验,至少在下述三种情况下编写 ADR。


首先,编写 ADR 来记录过去未记录的决策。这可以确保每个人都清楚地知道存在这项决策。


同样,如果做出了一项决策,而从来没有记录,那么它能成为标准吗?确定未记录的决策,一种方法是在同行评审期间引入竞争代码模式或库,从而引导审查者发现未记录的决策。


对于会对系统产生很大影响(例如会破坏 API)的更改,编写 ADR 是更改的最后一步。在这种情况下,Spotify 的工程师使用编写请求评议(RFC)的方法,促使所有利益相关者就一个共用的方法达成一致。一旦 RFC 过程完成,所商定的解决方案就会在 ADR 中记录。


不过,Blake 评论说,ADR 不应该只为具有重大影响的决策而编写。


未记录决策的代价很难衡量,但其影响通常包括重复工作(其他工程师试图解决相同的问题)或竞争性解决方案(两个做同样事情的第三方库)。


在这种情况下编写的 ADR 可以使情况变得不那么复杂。


架构决策记录决不是一种新技术。轻量级决策记录在ThoughtWorks的技术雷达上已经存在了好几年。如果你有兴趣尝试,可以在这个存储库中查找其他信息和开箱即用的模板。


原文链接:


Architecture Decision Records At Spotify


2020-05-13 09:001869

评论

发布
暂无评论
发现更多内容

ChatGPT:改变未来沟通方式的人工智能语言模型

wisonzhu

【JVM故障问题排查心得】「GC内存诊断」一文教你如何打印及分析JVM的GC日志(实战分析上篇)

码界西柚

JVM GC 4月日更 GC日志

《嗨,城市猎人》首播,揭秘猎头行业职场真实状态

极客天地

CSA GCR大会正式发布全球首个云渗透测试认证专家课程,腾讯安全获评“特别贡献单位”

腾讯安全云鼎实验室

云安全

浪潮海岳低代码平台inBuilder开源社区版正式发布

inBuilder低代码平台

开源 低代码平台

TikTok视频怎么无水印保存到相册?这有啥难的,跟我学轻松变大神~

frank

TikTok

devops如何使用chatgpt提高工作效率

wisonzhu

DevOps

国家工信安全中心权威认证!

百度开发者中心

工业互联网 百度飞桨 文心一言

如何使用 Linux find 命令查找文件?

wljslmz

三周年连更

算法题每日一练---组合总和

知心宝贝

数据结构 算法 前端 后端 三周年连更

Groovy as关键字性能测试

FunTester

免费,无需魔法,媲美ChatGPT4

石云升

AI AIGC ChatGPT 三周年连更

selenium源码通读·8 |webdriver/common/keys.py-Keys类分析

Python 自动化测试 测试框架 源码剖析 selenium

数据生产压力突增23倍,平台“可观测性”如何帮这家制造集团排忧解难? | 奇点云技术分享

奇点云

数据中台 可观测性 制造业 奇点云

OMG!这个Ins快拍保存到相册的办法绝了!还在犹豫什么,都给我冲!

frank

Instagram

图数据库 NebulaGraph 的 Java 数据解析实践与指导

NebulaGraph

Java 数据库

ShareSDK Android SDK API

MobTech袤博科技

CloudQuery 社区版回归直播即将开启

BinTools图尔兹

直播 社区版

火爆的低代码开发具有哪些技术特点?

力软低代码开发平台

Vue3 内置组件

程序员海军

Vue 3 三周年连更

Linux内核中的C语言宏:常见用法和最佳实践

Linux内核拾遗

Linux C语言

软件测试/测试开发丨接口测试配置的数据驱动

测试人

软件测试 自动化测试 测试开发

【Python 实战】Python 采集二手车数据——超详细讲解

BROKEN

三周年连更

易观千帆 | 2023年3月银行APP月活跃用户规模盘点

易观分析

金融 经济 手机银行

一文初探 Go reflect 反射包

陈明勇

Go golang 反射 三周年连更

3DCAT实时云渲染助力广府庙会元宇宙焕新亮相,开启线上奇趣之旅!

3DCAT实时渲染

元宇宙 实时渲染云 3D实时云渲染

玩转AIGC,5分钟 Serverless 部署 Stable Diffustion 服务

Serverless Devs

Serverless AIGC Stable Diffustion

测试用例该如何编写?

测吧(北京)科技有限公司

测试

华为,找寻科技秋天里的春光

脑极体

通信 算力

架构决策记录在Spotify的应用_架构_Sergio De Simone_InfoQ精选文章