速来报名!AICon北京站鸿蒙专场~ 了解详情
写点什么

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

评论

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

Mimir 源码分析(二):效率爆棚的分片压缩

Grafana 爱好者

Mimir

Kubernetes 微服务接口设计原则

CTO技术共享

Git -- 入门这一篇就够了 (入门必备,超硬核)

计算机魔术师

8月月更

架构实战营模块 7 作业

Roy

架构实战营

MySQL数据库之数据查询

乌龟哥哥

8月月更

每日一 R「18」类型系统进阶(二)

Samson

学习笔记 8月月更 ​Rust

Mimir 速体验(Part 2): 使用 Grafana agent 实现多租户数据抓取

Grafana 爱好者

Prometheus Mimir

毕业总结

Geek_7a789a

毕业设计 - 电商秒杀项目

阿拉阿拉幽幽

【小程序 | 启航篇】一文打通任督二脉

计算机魔术师

8月月更

Mimir 速体验(Part 1): 使用 docker-compose 一键部署单体版集群

Grafana 爱好者

可观测性 Prometheus Mimir

vue2 el-checkbox实现分组全选/反选/半选

Mr.Cactus

Element UI JavaScrip 分组全选

什么是 Golang?[译]

宇宙之一粟

架构师学习毕业总结

Pengfei

【机器学习】梯度下降之数据标准化

计算机魔术师

8月月更

Mimir 源码分析(一):海量series chunk 同时落盘带来的挑战

Grafana 爱好者

Mimir

Mimir 源码分析(三):任意时间范围乱序数据写入

Grafana 爱好者

Mimir

Mimir 速体验(Part 3): 通过 runtime 配置实现租户细粒度管理

Grafana 爱好者

可观测性 Grafana Mimir

快速搭建 SpringCloud Alibaba Nacos 配置中心!

王磊

spring cloud alibaba

阿里巴巴、华为教你如何把数据真正用起来 | DBT How

王和全

华为 数据中台 数字化转型 数据运营 证券行业

融齐鲁,行中国,为天下溪:新华三的数字化赋能之路

脑极体

电商秒杀系统设计

Roy

架构实战营

番外篇 of 《Mimir 源码阅读(三): 任意乱序数据的写入》

Grafana 爱好者

Mimir

架构实战营模块 8 作业

Roy

架构实战营

leetcode 696. Count Binary Substrings 计数二进制子串(简单)

okokabcd

LeetCode 算法与数据结构

设计电商秒杀系统

Geek_7a789a

消息队列选型对比

CTO技术共享

监控系统夜莺分布式部署方案

CTO技术共享

【机器学习】浅谈正规方程法&梯度下降

计算机魔术师

8月月更

架构实战训练营|毕业总结

Roy

架构实战营

【实践】高性能PHP应用容器workerman快速入门

迷彩

即时通讯 通讯协议 8月月更 workerman 高性能php

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