写点什么

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

评论

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

数字人民币试点呈现“全面开花”

CECBC

DevOps反模式

俞凡

DevOps

哈佛商业评论:面向未来的组织

石云升

读书笔记 11月日更

瞰见 | 刚刚,暴涨的 GitLab 给我们带来了怎样的开源思考?

OpenTEKr

狄安瞰源

linux比较两个目录的差异

入门小站

Linux

phpstudy开启Apache服务显示80端口被占用

咿呀呀

PHPStudy

网络安全好就业吗?

喀拉峻

网络安全 安全 信息安全 渗透

阿里云徐立:面向容器和 Serverless Computing 的存储创新

阿里巴巴云原生

阿里云 Serverless 容器 云原生

记录

Melody

技术管理知识写作系列

Melody

写作计划

Flink 实践教程-入门(8): 简单 ETL 作业

腾讯云大数据

flink 流计算 Oceanus

如何利用 “集群流控” 保障微服务的稳定性?

阿里巴巴云原生

阿里云 高可用 云原生 集群 AHAS

中国的区块链技术该高压打击虚拟货币之下,中国的区块链技术该如何发展?

CECBC

《重学Java高并发》Sempahore的使用场景与常见误区

中间件兴趣圈

Java高并发 Sempahore

如何设计业务高性能高可用计算架构

天天向上

架构实战营

在线文本差集计算工具

入门小站

工具

【架构实战营】模块五作业

liu🍊

Python Qt GUI设计:QDrag拖拽数据传输类(基础篇—18)

不脱发的程序猿

Python PyQt GUI设计 QDrag

选手机的一点建议

李印

手机 生活随想

入驻快讯|欢迎AfterShip正式入驻 InfoQ 写作平台!

InfoQ写作社区官方

入驻快讯

为什么SOLID原则仍然是现代软件架构的基石

topsion

CleanCode SOLID

没有一个人喜欢被改变 ——阅读《高绩效教练》有感

研发管理Jojo

倾听 敏捷教练 引导和教练

微信 ClickHouse 实时数仓的最佳实践

腾讯云大数据

Clickhouse 云数据仓库

28 K8S之控制器基础

穿过生命散发芬芳

k8s 11月日更

微博评论架构设计

天天向上

架构实战营

领导力学习课-总结

李印

个人成长 管理

微博评论架构分析

🌾🌾🌾小麦🌾🌾🌾

架构实战营

阿里云 Serverless 助力企业全面拥抱云原生

阿里巴巴云原生

阿里云 Serverless 云原生 企业

元宇宙对网络技术的挑战,什么样的网络才能承载元宇宙的野心?

CECBC

架构训练营 - 模块 5 作业

焦龙

架构训练营

[Pulsar] Batch Messge的基本原理

Zike Yang

Apache Pulsar 11月日更

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