写点什么

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

评论

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

如何使团队的git log更优雅

阿呆

#GitLab

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

Geek_99eefd

架构实战营 「架构实战营」

小白都能吃透Java IOl流,最骚最全笔记,没有之一!1️⃣

XiaoLin_Java

Java io 基础 1月月更

呼叫医生云! Amazon HealthLake 现已正式上线

亚马逊云科技 (Amazon Web Services)

AI ML

Mycat 作为代理服务端的小知识点

CRMEB

聊聊Netty那些事儿之Reactor在Netty中的实现(创建篇)

bin的技术小屋

网络编程 socket nio netty java 编程

黑客技能:xss攻击入门

喀拉峻

黑客 网络安全 XSS 渗透测试

雷霆传奇H5光柱版游戏详细图文架设教程

echeverra

游戏

转换匹配患者记录,看Amazon Lake Formation FindMatches显神通!

亚马逊云科技 (Amazon Web Services)

analytics

VuePress 博客优化之开启 Gzip 压缩

冴羽

nginx 前端 后端 博客 vuepress

【网络安全】手把手给大家演练红队渗透项目

H

网络安全 渗透测试·

数云运维总监陈延宗:基于阿里云计算巢,数云CRM一键云上交付

阿里云弹性计算

弹性计算 年度峰会 计算巢

百度APP浏览内核资源加载优化实践 -- ResourceScheduler 调优机制

百度开发者中心

百度app

腾讯云 AI 视觉产品基于流计算 Oceanus(Flink)的计费数据去重尝试

腾讯云大数据

AI flink window

13 Prometheus之云时代的监控目标及挑战

穿过生命散发芬芳

运维 监控 Prometheus 1月月更

2021年12月券商App行情刷新及交易体验评测报告

博睿数据

首届LoongArch生态创新大会成功召开,筑巢引凤共建信息产业命运共同体

OpenAnolis小助手

开源 芯片 白皮书

Flink 实践教程-进阶(6):CEP 复杂事件处理

腾讯云大数据

流计算 Oceanus

工业生产中的“主动刹车”,是怎么实现的?

脑极体

模块9作业

Asha

失去了SDK,云计算将会怎样?

亚马逊云科技 (Amazon Web Services)

计算

吐槽一下网站

你?

腾讯云原生实时数仓建设实践

腾讯云大数据

flink window 流计算 Oceanus

物联网场景中灵活实施对设备的控制管理

亚马逊云科技 (Amazon Web Services)

代码审计思路之PHP代码审计

网络安全学海

网络安全 信息安全 渗透测试 安全漏洞 代码审计

混沌工程之ChaosBlade-Operator 使用之模拟 POD 丢包场景

zuozewei

性能测试 混沌工程 ChaosBlade 1月月更

圆桌对话:云时代下,企业运维面临的挑战与机遇

阿里云弹性计算

运维峰会 圆桌对话

边缘网络 eBPF 超能力:eBPF map 原理与性能解析

火山引擎边缘云

KubeMeet 直播 | 现场直击大规模集群、混合环境下的云原生应用交付难题

阿里巴巴云原生

阿里云 云原生 KubeMeet 交付 直播活动

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