QCon 演讲火热征集中,快来分享技术实践与洞见! 了解详情
写点什么

架构决策记录在 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:001787

评论

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

淘宝订单API接口在电商行业中的应用与实现

Noah

专家观点∣国产化价值替代之路—钢铁企业的特征管理

用友BIP

国产价值替代

专业强大的英语学习工具:Eudic欧路词典增强激活版

mac大玩家j

英语学习 Mac软件 英语学习工具

专业强大的远程管理:Royal TSX激活最新版

胖墩儿不胖y

远程办公 远程控制软件 Mac软件

软件测试/人工智能丨利用 ChatGPT 编写测试报告

测试人

人工智能 软件测试

2024上海智慧城市展会(世亚智博会)促进长三角地区智慧城市发展

AIOTE智博会

智博会 上海智博会 智慧城市展

让网页自己总结、解答、翻译、创作?你的超级助理已上线

新消费日报

发布jar包到maven中央仓库

不在线第一只蜗牛

Java 仓库 镜像仓库

ThingsBoard 前端项目轮播图部件开发

echeverra

thingsboard

【教程】浅谈ios混淆和加固加密

数据驱动国资监管 用友BIP助力提高国有资本运营效能

用友BIP

数据驱动

什么是数字化营销?如何进行数字化营销?数字化有多重要?

天津汇柏科技有限公司

何怡澜:从抖音网红到芯片创业者的跨界之旅

科技热闻

企业数智化进阶模型,大型企业实现数智融合的成功之“道”

用友BIP

企业服务大模型

用友iuap智能中台“数智员工”在中核四川环保成功上岗

用友BIP

iuap

Tableau Desktop 2019 for Mac(全能数据分析工具) v2019.1.0永久激活版

mac

数据分析工具 Tableau Desktop 2019 苹果mac Windows软件

软件测试/人工智能丨利用ChatGPT自动生成测试用例思维导图

测试人

人工智能 软件测试

IPQ6010 vs IPQ8072 What's the difference?|802.11AX WiFi6 Solution DR6018 DR8072

wallyslilly

IPQ6010 IPQ8072

35 | Trie树:如何实现搜索引擎的搜索关键词提示功能

鲁米

1688一件采购实现指南:含代码实现采购流程

Noah

DBA解决慢查询问题的利器

NineData

sql 工具 dba NineData 慢查询分析

为什么说低代码的出现是时代的选择?

互联网工科生

软件开发 低代码 JNPF

2023最新Go面经:百度滴滴小米360小红书展盟优咔科技......

王中阳Go

golang 面试题 面经 八股文 求职技巧

# 浅谈分布式操作系统KubeWharf 的第二批开源项目

苏沐

#k8s #云原生 分布式操作系统 #运维 KubeWharf

基于.NET Core + Quartz.NET+ Vue + IView开箱即用的定时任务UI

EquatorCoco

.net Vue 前端

OpenHarmony人才生态大会|润开鸿分享全国智能物联行业产教融合共同体建设实践

新消费日报

C# 从代码入门 Mysql 数据库事务

EquatorCoco

C# MySQL 数据库 编程语言

外贸客户如何开发西班牙市场

九凌网络

教你使用Prometheus-Operator进行K8s集群监控

华为云开发者联盟

云原生 k8s 后端 华为云 华为云开发者联盟

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