NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

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

评论

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

数据库每日一题---第6天:删除重复的电子邮箱

知心宝贝

数据库 程序员 前端 后端 6月月更

控制并发线程数的Semaphore

急需上岸的小谢

6月月更

linux去掉空行的几种方法

入门小站

Linux

Android App首页主流框架搭建

yechaoa

android kotlin 6月月更 material design

Redux之利用 distinct 属性进行性能优化

岛上码农

flutter ios 安卓开发 跨平台应用 6月月更

AQUANEE:"P2E "的真正含义

EOSdreamer111

RPA能否创造新业态?如何优化组织结构?如何助力疫情中的企业?

王吉伟频道

人工智能 RPA 机器人流程自动化 机器人开发 爱死机

学生管理系统架构设计

yuansteel

关于volitile相关知识

北洋

6月月更

在 Vue3 + Element Plus 中生成动态表格,动态修改表格,多级表头,合并单元格

蒋川

低代码 Vue3 组件 表格 Element Plus

选择数字资产托管人时,要问的 6 个问题

BlockChain先知

跨境电商如何通过打好数据底座,实现低成本稳步增长

OceanBase 数据库

跨境电商 oceanbase

在线JSON转XML工具

入门小站

工具

不止于观测|阿里云可观测技术峰会正式上线

阿里巴巴云原生

阿里云 开源 云原生 可观测峰会 行业实践

《阅读的方法》:怎么找阅读的乐趣?

郭明

读书笔记

在这些根技术里,读懂华为的“三观”

脑极体

架构实战营模块 3 作业

Naoki

架构实战营

3分钟初识网络功能虚拟化NFV

穿过生命散发芬芳

6月月更 NFV

vue指令-4

小恺

6月月更

GameFi如何破圈,AQUANEE靠真正“P2E”展现风采

股市老人

外包学生管理系统架构文档

Asura

学生管理系统详细架构

intelamd

LabVIEW控制Arduino采集DHT11温湿度数值(进阶篇—4)

不脱发的程序猿

单片机 LabVIEW VISA Arduino Uno 采集DHT11温湿度数值

OpenKruise v1.2:新增 PersistentPodState 实现有状态 Pod 拓扑固定与 IP 复用

阿里巴巴云原生

阿里云 云原生 开源项目

GameFi如何破圈,AQUANEE靠真正“P2E”展现风采

EOSdreamer111

在线摩斯密码在线翻译转换工具

入门小站

工具

架构实战营第三模块课后作业

Geek_53787a

课后总结

java面向对象之多态(向上转型和向下转型)

写代码两年半

面向对象 javase 多态 6月月更

Spring Data JPA 极速入门

翊君

spring data 6月月更

数据结构与算法之时间复杂度与空间复杂度

未见花闻

6月月更

市场监管总局出手监督618电商促销节:电商促销节存在哪些诟病

石头IT视角

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