AICon上海|与字节、阿里、腾讯等企业共同探索Agent 时代的落地应用 了解详情
写点什么

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

评论

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

软件测试框架之——Postman参数化(超详细小白教程)

程序员阿沐

软件测试 自动化测试 接口测试

简述 Linux I/O 原理及零拷贝(下) — 网络 I/O

Qunar技术沙龙

Linux TCP I/O DPDK 网络io

FabEdge快速安装指南,极速上手体验边缘集群

BoCloud博云

边缘计算 博云开源 FabEdge 技术干货

构建可靠分布式架构的最佳方式,竟记在国内第一本“凤凰架构”上

Java~~~

Java 架构 面试 JVM 架构师

Go- 可变参数函数

HelloBug

Go 语言 可变参数函数 空接口

解密优酷智能生产技术,看 AI 赋能内容数字化

阿里云CloudImagine

音视频 短视频 视频处理 视频制作 视频云

译文 | 四张画布教你判断「产品开发优先级」

LigaAI

产品经理 产品开发 画布 产品优先级

入职京东:成功拿到offer薪资30K「面试经历+面试真题」

今晚早点睡

Java 秋招

微服务的痛:你的微服务还好吗?

我爱娃哈哈😍

架构设计 架构设计实战

石油行业数据采集中的 MQTT 协议

EMQ映云科技

数据 mqtt emq 远程监控 实时数据

fil矿机1T一天可以挖多少币?fil矿机能挖多久?

fil矿机能挖多久 fil矿机1T一天可以挖多少

一个案例:论写作的重要性

非著名程序员

个人成长 写作 认知提升 8月日更

ipfs矿机公司星际联盟是什么公司?星际联盟ipfs矿机靠谱吗?

分布式存储 IPFS Filecoin ipfs挖矿 ipfs矿机

fil挖矿怎么挖?fil挖矿成本是多少?

fil挖矿怎么挖 fil挖矿成本是多少

又快又稳!Alibaba出品Java性能优化高级笔记(全彩版)震撼来袭

Java~~~

Java 架构 jdk 面试 JVM

Go- defer

HelloBug

defer Go 语言 代码追踪 记录函数参数和返回值

如何优雅的在业务中使用设计模式(代码如诗)

小呆呆666

flutter android 大前端 设计模式

短视频询盘获客系统开发案例解析

获客I3O6O643Z97

抖音、快手获客系统 抖音矩阵拓客

影像篡改与识别(一):胶片时代

腾讯安全云鼎实验室

影像 暗房技术 篡改识别

webrtc BitrateAllocator 带宽分配器

webrtc developer

WebRTC

元宇宙系统|NFT游戏系统技术开发

薇電13242772558

区块链

Apache APISIX 社区周报 | 2021 8.16-8.22

API7.ai 技术团队

Apache 开源 APISIX 社区 社区周报

论坛接口测试——Postman数据驱动(超详细小白教程)

程序员阿沐

编程 程序员 软件测试 自动化测试 接口测试

简单、快捷、低成本的超写实虚拟人平台来了……

百度开发者中心

人工智能 AI 最佳实践 虚拟人 前沿技术

❤️专科出身拿到阿里offer,我直呼666!【付硬核面试】❤️

编程susu

Java 编程 程序员 面试 计算机

简述 Linux I/O 原理及零拷贝(上)— 磁盘 I/O

Qunar技术沙龙

Linux 缓存 Mmap 磁盘 I/O

腾讯WeTest压测大师通过中国计量科学研究院测试认证,获国家级权威认可

WeTest

吹爆!阿里高工携18位架构师耗时57天整合的1658页面试总结太香了

Java~~~

Java spring 架构 面试 JVM

5000字、12 连环炮、一张图快速搞定线程池

Java 架构 面试 后端 多线程

可视化全埋点系列文章之功能介绍篇

神策技术社区

程序员 代码 埋点 神策数据

画15张图搞定MySQL InnoDB工作原理

Java MySQL 数据库 程序员 后端

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